PHPでArcチャレンジしてみるテスト
今日は朝から秋葉原のダイビルで2008年度下期未踏IT人材発掘・育成事業「未踏ユース」成果報告会に参加しています。
発表の中で Arc Challenge の話が出たので、とりあえずPHPで簡単に書いてみました。
said.php:
<? if($_SERVER['QUERY_STRING'])echo'you said ',htmlspecialchars($_COOKIE['foo']); elseif($_POST)setcookie('foo',$_POST['foo'])&&print'<a href=?click>click here</a>'; else echo'<form method=POST><input type=text name=foo><input type=submit></form>'; ?>
この擬似コードをベースに標準のPHPだけで動くようにしてみました。
もっと短くなるかなぁ。。。
ということで、ちょっとだけゴルフして1行164byte:
<?echo$_GET?'you said '.htmlspecialchars($_COOKIE[1]):($_POST&setcookie(1,$_POST[1]) ?'<a href=?1>click here':'<form method=POST><input name=1><input type=submit>');
(読みやすくするために改行を入れています)
Arcと同条件で比較するためのPHPトークンの定義が微妙ですが、$_POST[1]を1トークンとして数えて、<?や括弧()、セミコロン;、文字列内の変数展開を除外すると全部で11トークンとなります。三項演算子?:を含めると+4で15トークン。文字列連結.を加えると+1で16トークン。&演算子を含めると+1で17トークン。
今日の結論:PHPはゴルフしても読みやすい言語ですね。
【参考文献】