Rep-string: Difference between revisions

Content deleted Content added
Added PicoLisp
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]:Utils.Helpers.cycle(_).aggregate(String).walk(s.len()) :
Walker.cycle(s[0,n]).sink(String).walk(s.len()) :
if (_ == s and n*2<=s.len()) return(n);
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 (s.matches(s[n,*]+"*") and n*2<=s.len()) return(n); }
if(s.matches(s[n,*] + "*") and n*2<=s.len()) return(n);
}
return(False)
return(False)
}</lang>
}</lang>
<lang zkl>words := ("1001110011 1110111011 0010010010 1010101010 "
<lang zkl>words:=("1001110011 1110111011 0010010010 1010101010 "
"1111111111 0100101101 0100100 101 11 00 1").split(" ");
"1111111111 0100101101 0100100 101 11 00 1").split(" ");
foreach w in (words){
foreach w in (words){
if (not n:=repString(w)) "No repeat in ".println(w);
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();