blob: e1d2df76218f93f6a5093e426e0c15be023ecbb5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#
# 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$<i$> do $(
if find(result$<-t:0$> || c,result)
then i -:= 1
else $(result ||:= c; i := k$)
$)
return result
end
|