51 lines
890 B
Plaintext
51 lines
890 B
Plaintext
get "libhdr"
|
|
|
|
// Returns the length of the longest rep-string
|
|
// (0 if there are none)
|
|
let repstring(s) = valof
|
|
$( for i = s%0/2 to 1 by -1 do
|
|
$( for j = 1 to i
|
|
$( let k = i
|
|
while j+k <= s%0 do
|
|
$( unless s%(j+k)=s%j goto next
|
|
k := k + i
|
|
$)
|
|
$)
|
|
resultis i
|
|
next: loop
|
|
$)
|
|
resultis 0
|
|
$)
|
|
|
|
// Print first N characters of string
|
|
let writefirst(s, n) be
|
|
$( let x = s%0
|
|
s%0 := n
|
|
writes(s)
|
|
s%0 := x
|
|
$)
|
|
|
|
// Test string
|
|
let rep(s) be
|
|
$( let n = repstring(s)
|
|
writef("%S: ",s)
|
|
test n=0
|
|
do writes("none")
|
|
or writefirst(s,n)
|
|
wrch('*N')
|
|
$)
|
|
|
|
let start() be
|
|
$( rep("1001110011")
|
|
rep("1110111011")
|
|
rep("0010010010")
|
|
rep("1010101010")
|
|
rep("1111111111")
|
|
rep("0100101101")
|
|
rep("0100100")
|
|
rep("101")
|
|
rep("11")
|
|
rep("00")
|
|
rep("1")
|
|
$)
|