Update5: Thanks larryk for the suggestion, 77 nowsub Z{
@_=@l=sort{.5<=>rand}@_;join('',reverse@l)eq(join'',map{map{chop}@l}@l
+)?@_:&Z
}
|
Update4: Okay, last update, sorry (87 now)
sub Z{
@_=@l=map{splice@_,rand@_,1}@_;join('',reverse@l)eq(join'',map{map{cho
+p}@l}@l)?@_:Z(@_)
}
Update3:Okay, so I'm bad at golf :-) (now at 98) sub Z{
for(;;){@_=@l=map{splice@_,rand@_,1}@_;return@_ if join('',reverse@l)e
+q join'',map{map{chop}@l}@l}
}
Update2: Using for(;;) instead of while(1) -- count = 101; sub Z{
for(;;){@l=map{splice@_,rand@_,1}@_;@_=@l;return@_ if join('',reverse@
+l)eq join'',map{map{chop}@l}@l}
}
Original:
Hello
Here is my shot at 102 using permutation trial and error, enjoy
my @ar = qw/NEAR LANE EARS AREA/ ;
# @ar = qw/LINGO MILLS SMOCK IDIOM LOGIC/;
print "$_\n" for Z(@ar);
sub Z{
while(1){@l=map{splice@_,rand@_,1}@_;@_=@l;return@_ if join('',reverse
+@l)eq join'',map{map{chop}@l}@l}
}
Aziz,,,
Update: Added Mills Lingo :-)
|