- or download this
sub c{@r='';@r=map{$c=$_;map$c.$_,@r}@_ for 1..shift;@r}
sub i{($t=pop)=~s/./.*\Q$&/gs;pop=~/$t/s}
- or download this
sub assemble {
my$n;{for(c($n++,map{split//}@_)){$v=$_;map{i($v,$_)||next}@_;return$_
+}redo}
}
- or download this
print assemble(qw(oa af wf wa));