29 lines
715 B
Plaintext
29 lines
715 B
Plaintext
$ include "seed7_05.s7i";
|
|
|
|
const func string: lookAndSay (in integer: level, in string: stri) is func
|
|
result
|
|
var string: lookAndSay is "";
|
|
local
|
|
var integer: index is 2;
|
|
begin
|
|
if level = 1 then
|
|
if stri <> "" then
|
|
while index <= length(stri) and stri[index] = stri[1] do
|
|
incr(index);
|
|
end while;
|
|
lookAndSay := str(pred(index)) & stri[1 len 1] & lookAndSay(level, stri[index ..]);
|
|
end if;
|
|
else
|
|
lookAndSay := lookAndSay(1, lookAndSay(pred(level), stri));
|
|
end if;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var integer: level is 0;
|
|
begin
|
|
for level range 1 to 14 do
|
|
writeln(lookAndSay(level, "1"));
|
|
end for;
|
|
end func;
|