35 lines
947 B
Text
35 lines
947 B
Text
$ include "seed7_05.s7i";
|
|
include "scanstri.s7i";
|
|
|
|
const func array integer: rangeExpansion (in var string: rangeStri) is func
|
|
result
|
|
var array integer: numbers is 0 times 0;
|
|
local
|
|
var integer: number is 0;
|
|
begin
|
|
while rangeStri <> "" do
|
|
number := integer parse getInteger(rangeStri);
|
|
numbers &:= number;
|
|
if startsWith(rangeStri, "-") then
|
|
rangeStri := rangeStri[2 ..];
|
|
for number range succ(number) to integer parse getInteger(rangeStri) do
|
|
numbers &:= number;
|
|
end for;
|
|
end if;
|
|
if startsWith(rangeStri, ",") then
|
|
rangeStri := rangeStri[2 ..];
|
|
elsif rangeStri <> "" then
|
|
raise RANGE_ERROR;
|
|
end if;
|
|
end while;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var integer: number is 0;
|
|
begin
|
|
for number range rangeExpansion("-6,-3--1,3-5,7-11,14,15,17-20") do
|
|
write(number <& " ");
|
|
end for;
|
|
writeln;
|
|
end func;
|