Range modifications: Difference between revisions
m
parse reversed ranges
m (sort input) |
m (parse reversed ranges) |
||
Line 209:
=={{header|Julia}}==
Julia has iterator classes called a type of Range, such as integer UnitRanges, that are like the "10-10" of the task but are stated as 10:10, with a colon not a minus sign. This implementation uses Julia's UnitRange class internally.
<lang julia>import Base.
const RangeSequence = Array{UnitRange, 1}
Line 238:
startstop = split(e, r"\:|\-")
if length(startstop) == 2
start, stop = tryparse(Int, startstop[1]), tryparse(Int, startstop[2])
start, stop = start <= stop ?
elseif (n = tryparse(Int, startstop[1])) != nothing
combine!(seq, n:n)
Line 262 ⟶ 260:
else
newseq = vcat(combine!(seq[1:pos], n:n), seq[pos+1:end])
append!(empty!(seq), newseq)
end
return seq
end
reduce(
function removeinteger!(seq, n::Integer)
Line 338 ⟶ 335:
println("Parse \"10-25, 1-5, 27-30\" => ", parse(RangeSequence, "10-25, 1-5, 27-30"))
println("Parse \"1-3,5-15,25-10,27-30\" => ", parse(RangeSequence, "1-3,5-15,25-10,27-30"))
</lang>{{out}}
<pre>
Line 365 ⟶ 363:
Parse "10-25, 1-5, 27-30" => 1-5,10-25,27-30
Parse "1-3,5-15,25-10,27-30" => 1-3,10-25,27-30
</pre>
|