20 lines
510 B
Text
20 lines
510 B
Text
collect(a) := block(
|
|
[n: length(a), b: [ ], x: a[1], m: 1],
|
|
for i from 2 thru n do
|
|
(if a[i] = x then m: m + 1 else (b: endcons([x, m], b), x: a[i], m: 1)),
|
|
b: endcons([x, m], b)
|
|
)$
|
|
|
|
look_and_say(s) := apply(sconcat, map(lambda([p], sconcat(string(p[2]), p[1])), collect(charlist(s))))$
|
|
|
|
block([s: "1"], for i from 1 thru 10 do (disp(s), s: look_and_say(s)));
|
|
/* "1"
|
|
"11"
|
|
"21"
|
|
"1211"
|
|
"111221"
|
|
"312211"
|
|
"13112221"
|
|
"1113213211"
|
|
"31131211131221"
|
|
"13211311123113112211" */
|