# # M E A N D E R I N G S T R I N G S # # This main procedure accepts specifications for meandering strings # from standard input with the alphabet separated from the length by # a colon. procedure main() local line, alpha, n while line := read() do { line ? if alpha := tab(upto(':')) then { move(1) if n := integer(tab(0)) then write(meander(alpha,n)) else write("erroneous input") } else write("erroneous input") } end procedure meander(alpha,n) local result, t, i, c, k i := k := *alpha t := n-1 result := repl(alpha[1],t) while c := alpha[i] do { if find(result[-t:0] || c,result) then i -:= 1 else {result ||:= c; i := k} } return result end