use strict;use warnings;$|=1; (@ARGV eq 4) ? ( ($",$~,$:,$.) = @ARGV,$^=$_='0000') : ($"=$_=$^=$.=$:='0000',$~='0001'); { select undef,undef,undef,1;0 || s:0000:0001: || s:0001:0010: || s:0010:0011: || s:0011:0100: || s:0100:0101: || s:0101:0110: || s:0110:0111: || s:0111:1000: || s:1000:1001: || s:1001:0000: &&$^=~s:0000:0001: ||$^=~s:0001:0010: ||$^=~s:0010:0011: ||$^=~s:0011:0100: ||$^=~s:0100:0101: ||$^=~s:0101:0000: &&$.=~s:0000:0001: ||$.=~s:0001:0010: ||$.=~s:0010:0011: ||$.=~s:0011:0100: ||$.=~s:0100:0101: ||$.=~s:0101:0110: ||$.=~s:0110:0111: ||$.=~s:0111:1000: ||$.=~s:1000:1001: ||$.=~s:1001:0000: &&$:=~s:0000:0001: ||$:=~s:0001:0010: ||$:=~s:0010:0011: ||$:=~s:0011:0100: ||$:=~s:0100:0101: ||$:=~s:0101:0000: &&( $~=~s:0000:0001: ||$~=~s:0001:0010: ||( $~=~s:0010:0011: ? $"=='0001' &&( $~=$" , $" ='0000' ):$~=~s:0011:0100: or$~=~s:0100:0101: or$~=~s:0101:0110: or$~=~s:0110:0111: or$~=~s:0111:1000: or$~=~s:1000:1001: )) ||$~=~s:1001:0000: &&$"=~s:0000:0001: ||$"=~s:0001:0000:; print "\r", $",'.',$~,':',$:,'.',$.,':',$^,'.',$_; redo }