# # 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(':')) & move(1) & n := integer(tab(0)) $) then write(meander(alpha,n)) else stop("*** 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$ do $( if find(result$<-t:0$> || c,result) then i -:= 1 else $(result ||:= c; i := k$) $) return result end