Ha!
#!perl s~~ @ARGV~;print$1until!s~(.)(?=(.).*\2.*\1| )~~s |
Improved tiebreaker (0.0024)
#!perl s~~ @ARGV~;print$1until!s~(.)((.).+\3.*\1| )~\2~s |
#!perl s~~@ARGV ~;print$&until!s~(.)(?=(.).*\2.*\1| )| ~~ |
I'm getting closer...
#!perl $_="@ARGV ";print$&while s/(.)(?=(.).*\2.*\1| )| // |
#!perl $_="@ARGV";print$1while s/(.)(?=(.).*\2.*\1| )//;print$/ |
Small improvement in the algorithm.
#!perl $_="@ARGV";$a.=$1while s/(.)(?=(.).*\2.*\1| )//;print$a,$/ |
#!perl -l
sub a{($_,my$I)=@_;s/.//;my$P=$_ or return$I;my($z,$x,$y)=($&,split$&,$I);a(/[ $x]+/g,$x),a($P=~/[ $y]+/g,$y),$z}print a@ARGV
|
Resubmission of accidently rejected solution. But with a better tiebreaker!
#!perl -l
sub a{($_,my$I)=@_;s/.//;my$p=$_ or return$I;my($z,$x,$y)=($&,split$&,$I);a(/[z$x]+/g,$x),a($p=~/[z$y]+/g,$y),$z}print a@ARGV
|
#!perl -l
sub a{($_,my$P)=@_;$P=~s/.//;$P||return$_;/$&/;my($y,$z,$o)=($-[0],$',$&);a($`,substr$P,0,$y),a($z,substr$P,$y),$o}print a@ARGV
|