http://www.perlmonks.org?node_id=477589

This is sadly not as obfuscated as i would like. It is an attempt at obfuscation wherein the engine is not easily understood, in hopes that that will provide a nice groundwork for a good obfu. I just hope the engine is as hard to figure out for others as it was for me :-/

Please tell me what you think,
jynx

sub{$0[1]=[reverse+1..$_[0]];{sleep sub{system('clear');print$",join$" +,(map{ $==$_;map($0[$_][$=]||'|',1..3),$/}reverse+0..-1+pop)}->($_[0]);@1[1,3 +,2]=([ 2,3],[1,2],[1,3]);@{$0[3]}==$_[0]||sub{join('',$_[1]?$0[1][$#{$0[1]}]= +=1?$_[ 3]?($_[3],3):$_[2]?($_[2],2):($_[1],1):($_[1],1):$_[3]?$0[3][$#{$0[3]} +]==1?$ _[1]?($_[1],1):$_[2]?($_[2],2):($_[3],3):($_[3],3):$_[2]?$0[2][$#{$0[2 +]}]==1 ?$_[1]?($_[1],1):$_[3]?($_[3],3):($_[2],2):($_[2],2):$|)=~/(.)(.)/;pus +h@{$0[ $1]},pop@{$0[$2]}}->(0,sub{($0[1][$#{$0[1]}]?!$0[$1[1][@{$0[1]}%2]][$# +{$0[$1 [1][@{$0[1]}%2]]}]?$1[1][@{$0[1]}%2]:$0[1][$#{$0[1]}]<$0[$1[1][@{$0[1] +}%2]][ $#{$0[$1[1][@{$0[1]}%2]]}]?$1[1][@{$0[1]}%2]:$%:$,,$0[3][$#{$0[3]}]?!$ +0[$1[3 ][@{$0[3]}%2]][$#{$0[$1[3][@{$0[3]}%2]]}]?$1[3][@{$0[3]}%2]:$0[3][$#{$ +0[3]}] <$0[$1[3][@{$0[3]}%2]][$#{$0[$1[3][@{$0[3]}%2]]}]?$1[3][@{$0[3]}%2]:$, +:$-,$0 [2][$#{$0[2]}]?!$0[$1[2][@{$0[2]}%2]][$#{$0[$1[2][@{$0[2]}%2]]}]?$1[2] +[@{$0[ 2]}%2]:$0[2][$#{$0[2]}]<$0[$1[2][@{$0[2]}%2]][$#{$0[$1[2][@{$0[2]}%2]] +}]?$1[ 2][@{$0[2]}%2]:$-:$!)[($0,0..2)[1,3,2]]}->($@,@0[1,3,2]))&&redo}}->(po +p||3);