RosettaCodeData/Task/Look-and-say-sequence/BCPL/look-and-say-sequence.bcpl
2023-07-01 13:44:08 -04:00

51 lines
771 B
Text

get "libhdr"
manifest $(
amount = 15
bufsize = 128
$)
let move(dest,src) be
$( until !src = 0 do
$( !dest := !src
dest := dest + 1
src := src + 1
$)
!dest := 0
$)
let count(v) = valof
$( let i=1
while v!i = !v do i := i + 1
resultis i
$)
let looksay(in,out) be
$( until !in = 0 do
$( let n = count(in)
out!0 := n
out!1 := !in
out := out + 2
in := in + n
$)
!out := 0
$)
let show(v) be
$( until !v = 0 do
$( writen(!v)
v := v + 1
$)
wrch('*N')
$)
let start() be
$( let buf1 = vec bufsize and buf2 = vec bufsize
buf1!0 := 1
buf1!1 := 0
for n = 1 to amount do
$( show(buf1)
looksay(buf1,buf2)
move(buf1,buf2)
$)
$)