diff options
| -rw-r--r-- | 9.php | 50 | ||||
| -rw-r--r-- | README.md | 26 |
2 files changed, 76 insertions, 0 deletions
@@ -0,0 +1,50 @@ +<?php $z='bcdefghia';eval(strtr($s='$M="array_map";$S="st +r_split";$C="chr";$zp=strpos($z,"a");[$dx,$dy]=match($arg +v[1 ]?? nul l){ +"h" =>[ 1,0 ]," +j"= >[0 ,-1 ],"k"=>[0 ,1] ,"l"=>[-1 ,0] +,de fau lt= >[0,0],}; $zx =$zp%3;$z y=i +ntd iv( $zp ,3) ;$s x=$ zx+ +$dx ;$s y=$ zy+ $dy ;if ($s +x<0 ||2 <$s x)$sx=$zx ;if ($sy<0||2 <$s +y)$ sy= $zy ;$sp=$sy* 3+$ sx;[$z[$s p], +$z[ $zp ]]= [$z [$z p], $z[ +$sp ]]; ech o(" <?p hp" .$C +(32 ).$ C(3 6)."z=".$ C(3 9).$z.$C( 39) +."; eva l(s trtr(".$C (36 )."s=".$C (39 +)); $n= $M( $S, +$S( "00 000 111 +1141424414143341142414424344111143434",5));$m=$M($S,$S("0 +00001100101111",3));$i=(new("ArrayObject")($S(strtr($s."/ +/". $s, [$C (32 +)=> "", $C( 10) +=>" "]) ))) ->g etIterato r() ;$B=fn($_ =1) +=>$ M(f n() =>p rint([$i- >cu rrent(),$ i-> +nex t() ][0 ]), ran ge( 1,$ _*3 +)); $W= fn( $_= 1)= >pr int (st +r_r epeat($C( 32) ,$_*3));$ N=f n()=>prin t($ +C(1 0));$B(7) ;$N ();for($y =0; $y<3;$y++ ){$ +B(1 9); $N( );$ B() ;$W (5) ;$B +(); $W( 5); $B( );$ W(5 );$ B() +;$N (); $B( );$W(5);$ B() ;$W(5);$B (); +$W( 5); $B( );$N();fo r($ l=0;$l<10 ;$l +++) {$B (); for +($x =0; $x< 3;$ +x++){$W(1);$M(fn($_)=>$_?$B():$W(),$m[$n[$M("ord",$S($z)) +[$y*3+$x]-97][intdiv($l,2)]]);$W(1);$B();}$N();}$B();$W(5 +);$ B() ;$W (5) +;$B (); $W( 5); +$B( );$N();$B (); $W(5);$B( );$ W(5 +);$ B();$W(5) ;$B ();$N();$ B(1 9); +$N( );} $B( 9); ech o($ C(3 +9). ",[ $C( 32) =>" .$C (34 +).$ C(3 4). ",$C(10)= >". $C( +34) .$C (34 )."]));") ;// $M= +"ar ray _ma p"; $S= "st r_s +pli t"; $C= "ch r"; $zp =st +rpo s($ z," a");[$dx, $dy ]=m +atc h($ arg v[1]??nul l){ "h" +=>[ 1,0 ]," j"= +>[0 ,-1 ]," k"= +>[0,1],"l"=>[-1,0],default=>[0,0],};$zx=$zp%3;$zy=intdiv( +$zp,3);$sx=$zx+$dx;$sy=$zy+',[chr(32)=>"",chr(10)=>""]));
\ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3dfab60 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# 9 Puzzle Quine + +This is a playable quine, a program that outputs the source code itself. + +# How to Play + +``` +$ php 9.php <operation> +``` + +Available operations: + +* h: Move left +* j: Move down +* k: Move up +* l: Move right + +An invalid operation is just ignored. + +## How to Shuffle + +There is no option to shuffle. Do manually like this: + +``` +$ cat 9.php | php -- l | php -- h | php -- k | ... +``` |
