I suck. :(
#!perl
sub
t{if(@p&&(my$k=pop)>($m=index$ARGV[0],$p[0])){my$x=shift@p;t($m);t($k);print$x}}t
1+(@p=pop=~/./g);print$/
|
#!perl -l
sub
t{if(@p&&(my$k=pop)>($m=index$ARGV[0],$p[0])){my$z=shift@p;grep$_,t($m),t($k),$z}}print t 1+(@p=pop=~/./g)
|
#!perl -l
sub
t{my$k=pop;if(@p&&$k>($m=index$ARGV[0],$p[0])){my$z=shift@p;t($m),t($k),$z}}print grep$_,t 1+(@p=pop=~/./g)
|
#!perl -l
sub
t($){my$k=pop;if(@p&&$k>($m=index$ARGV[0],$p[0])){my$z=shift@p;t($m),t($k),$z}}print grep$_,t 1+(@p=pop=~/./g)
|
Prettification
#!perl -l
sub
t{my$k=pop;($m)=grep$i[$_]eq$p[0],0..@i;if(@p&&$k>$m){my$z=shift@p;t($m);t($k);$_.=$z}}@$_=split'',pop for\@i,\@p;t(@i+1);print
|
Need I say it's only a first try?
#!perl -l
@i = split'',pop;
@p= split'',pop;
t( grep $in[$_]eq$p[0],0..@in );
t( @i+1 );
sub t
{
my $k = shift;
my( $m) = grep $i[$_]eq$p[0],0..@i;
return if !@p or $k <= $m ;
my $z=shift@p;
t( $m );
t( $k );
$w.=$z;
}
print $w
|