RosettaCodeData/Task/Range-expansion/Oz/range-expansion-1.oz
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

30 lines
622 B
Text

declare
fun {Expand RangeDesc}
{Flatten
{Map {ParseDesc RangeDesc}
ExpandRange}}
end
fun {ParseDesc Txt}
{Map {String.tokens Txt &,} ParseRange}
end
fun {ParseRange R}
if {Member &- R.2} then
First Second
in
{String.token R.2 &- ?First ?Second}
{String.toInt R.1|First}#{String.toInt Second}
else
Singleton = {String.toInt R}
in
Singleton#Singleton
end
end
fun {ExpandRange From#To}
{List.number From To 1}
end
in
{System.showInfo
{Value.toVirtualString {Expand "-6,-3--1,3-5,7-11,14,15,17-20"} 100 100}}