aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--9.php50
-rw-r--r--README.md26
2 files changed, 76 insertions, 0 deletions
diff --git a/9.php b/9.php
new file mode 100644
index 0000000..266a679
--- /dev/null
+++ b/9.php
@@ -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 | ...
+```