Rep-string: Difference between revisions
Content deleted Content added
Added PicoLisp |
m →{{header|zkl}}: update |
||
Line 2,233: | Line 2,233: | ||
<lang zkl>fcn repString(s){ |
<lang zkl>fcn repString(s){ |
||
foreach n in ([s.len()/2+1..1,-1]){ |
foreach n in ([s.len()/2+1..1,-1]){ |
||
s[0,n] |
Walker.cycle(s[0,n]).sink(String).walk(s.len()) : |
||
if |
if(_==s and n*2<=s.len()) return(n); |
||
} |
} |
||
return(False) |
return(False) |
||
Line 2,241: | Line 2,241: | ||
<lang zkl>fcn repString(s){ |
<lang zkl>fcn repString(s){ |
||
foreach n in ([s.len()/2..0,-1]){ |
foreach n in ([s.len()/2..0,-1]){ |
||
if |
if(s.matches(s[n,*] + "*") and n*2<=s.len()) return(n); |
||
} |
|||
return(False) |
return(False) |
||
}</lang> |
}</lang> |
||
<lang zkl>words |
<lang zkl>words:=("1001110011 1110111011 0010010010 1010101010 " |
||
"1111111111 0100101101 0100100 101 11 00 1").split(" "); |
|||
foreach w in (words){ |
foreach w in (words){ |
||
if |
if(not n:=repString2(w)) "No repeat in ".println(w); |
||
else [0..*,n].tweak('wrap(z){ if(s:=w[z,n]) s else Void.Stop }) |
else [0..*,n].tweak('wrap(z){ if(s:=w[z,n]) s else Void.Stop }) |
||
.walk().concat(" ").println(); |
.walk().concat(" ").println(); |