Annotation of 43BSD/contrib/icon/samples/meander.icn, revision 1.1

1.1     ! root        1: #
        !             2: #          M E A N D E R I N G   S T R I N G S
        !             3: #
        !             4: 
        !             5: #  This main procedure accepts specifications for meandering strings
        !             6: #  from standard input with the alphabet separated from the length by
        !             7: #  a colon.
        !             8: 
        !             9: procedure main()
        !            10:    local line, alpha, n
        !            11:    while line := read() do {
        !            12:       line ? if alpha := tab(upto(':')) then {
        !            13:          move(1)
        !            14:          if n := integer(tab(0)) then write(meander(alpha,n))
        !            15:          else write("erroneous input")
        !            16:          }
        !            17:          else write("erroneous input")
        !            18:       }
        !            19: end
        !            20: 
        !            21: procedure meander(alpha,n)
        !            22:    local result, t, i, c, k
        !            23:    i := k := *alpha
        !            24:    t := n-1
        !            25:    result := repl(alpha[1],t)
        !            26:    while c := alpha[i] do {
        !            27:       if find(result[-t:0] || c,result)
        !            28:       then i -:= 1
        !            29:       else {result ||:= c; i := k}
        !            30:       }
        !            31:    return result
        !            32: end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.