Range expansion: Difference between revisions

Added Crystal implementation
(Added Crystal implementation)
Line 1,068:
CL-USER> (expand-ranges "-6,-3--1,3-5,7-11,14,15,17-20")
(-6 -3 -2 -1 3 4 5 7 8 9 10 11 14 15 17 18 19 20)</lang>
 
=={{header|Crystal}}==
{{trans|Ruby}}
<lang crystal>def range_expand(range)
range.split(',').flat_map do |part|
match = /^(-?\d+)-(-?\d+)$/.match(part)
if match
(match[1].to_i .. match[2].to_i).to_a
else
part.to_i
end
end
end
 
puts range_expand("-6,-3--1,3-5,7-11,14,15,17-20")</lang>
{{out}}
<pre>[-6, -3, -2, -1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20]</pre>
 
=={{header|D}}==
Anonymous user