オセロゲームでコードゴルフ
- 5. if ( $key )
print(“OK”);
else
print(“NG”);
!= 0 {
} {
}
5
- 8. if ($key != 0) {
print(“OK”);
} else {
print(“NG”);
}
echo$key?”OK”:”NG”;
56Byte
20Byte
8
- 12. 作成結果
<?=header('Content-type:text/html;charset=utf-
8');error_reporting(0);$s=$_GET['m']or$s=sprintf('%0100s',0);$m=str_sp
lit($s);$w=str_split($_GET['w']);$t=$_GET['t'];$k=$_GET['k'];$f=$t%2+1;
$e=$d=0;$r=array(-11,-10,-9,-
1,1,9,10,11);if($k){$i=0;$m[$k]=$t;foreach($r
as$c=>$j)for($b=$k+$j;$f==$m[$b]*$w[$c];$b+=$j)$m[$b]=$t;}else{fore
ach($m as$k=>&$v)$v=($k%10&&$k%10-
9&&$k/10>=1&&$k/10<=9)?0:5;$m[44]=$m[55]=2;$m[45]=$m[54]=1;$t
=1;}$p=m($m);$u=-2;while($u++<1){for($i=-
1;++$i<100;){$w[$i]=str_split(sprintf('%08s',0));foreach($r
as$c=>$j)for($b=$i+$j;$m[$b]*!$m[$i]&&$m[$b]-
5;$b+=$j)if($m[$b]==$f)if($j+$i==$b)break;else$w[$i][$c]=$u=1;}$y=$f;
$f=$t;$t=$y;}for($i=-
1;++$i<100;){if(!($i%10))echo"<br>";$v=$m[$i];if($v==2)$e++;if($v==1)$
d++;$h=implode($w[$i]);echo($h*1?"<a
href="?m=$p&t=$t&k=$i&w=$h&e">":"").g($v).($h*1?"</a>":"");}echo"
t=".g($t)." W$e,B$d";function g($v){return($v?$v-1?($v-
5?"◯":"■"):"●":"□");}function m($m){$x="";foreach($m
as$v)$x.=$v;return$x;}
968Byte 12
- 16. GET
m:盤面の情報
t:プレイヤー手番
k:石が置かれ場所
w:ひっくり返す方向
http://localhost/code_golf/golf_othello.
php?m=55555555555000000005500000
00055000000005502222200550021200
055001210005500112000550011120055
555555555&t=1&k=87&w=00010000
16
Editor's Notes
- 例もphpで
- 波括弧
条件式
- サーバーサイドの設定をいじれば省ける部分
- 941byte
- 適当な解説
- スキップ処理のために分けざる負えなかったforループ
- 見づらい、
いちいち確認しながら
- 解読