じゃんけんロジックで考えてみる「壁」の厚さ
ん…たいしたことやってる訳でもないんだけどねぇ。
「そこに思考が及ぶかどうか」ってのには以外と壁があるみたいで。それを「ど〜やって乗り越えさせるのか」を含めて考えてみたくて、ちょっと種まき。
いつものことではありますが、いつも以上になんか「ふと思ったコメント」とか気軽に残しておいてもらえると嬉しいです ^^
2013/05/13
頂いたコメントで大きく気づきがあったので改修。
レベル1の前にレベル0.5を作成、前提を少しいじりました。
(2013/05/13 追記開始)
前提
・guu:ぐー
・tyoki:ちょき
・paa:パー
・変数 $my に、自分が出した手
・変数 $opponent に、相手(コンピュータ)が出した手
・勝敗は「自分の勝ち負け」
・値は「入っていて」かつ「正常値」である、と仮定
コードレベル0.5
if ('goo' === $my) { if ('goo' === $opponent) { echo '引き分け'; } else if ('choki' === $opponent) { echo '勝ち'; } else { echo '負け'; } } else if ('choki' === $my) { if ('goo' === $opponent) { echo '負け'; } else if ('choki' === $opponent) { echo '引き分け'; } else { echo '勝ち'; } } else { if ('goo' === $opponent) { echo '勝ち'; } else if ('choki' === $opponent) { echo '負け'; } else { echo '引き分け'; } }
(2013/05/13 追記ここまで)
前提修正
・0:ぐー
・1:ちょき
・2:パー
・変数 $my に、自分が出した手
・変数 $opponent に、相手(コンピュータ)が出した手
・勝敗は「自分の勝ち負け」
・値は「入っていて」かつ「正常値(0〜2の範囲)」である、と仮定
コードレベル1
if (0 === $my) { if (0 === $opponent) { echo '引き分け'; } else if (1 === $opponent) { echo '勝ち'; } else { echo '負け'; } } else if (1 === $my) { if (0 === $opponent) { echo '負け'; } else if (1 === $opponent) { echo '引き分け'; } else { echo '勝ち'; } } else { if (0 === $opponent) { echo '勝ち'; } else if (1 === $opponent) { echo '負け'; } else { echo '引き分け'; } }
コードレベル1.5
コードレベル1を、switchで書き直す。面倒だから脳内変換してw
コードレベル2
$i = $my - $opponent; if (0 === $i) { echo '引き分け'; } else if ( (-1 === $i)||(2 === $i) ) { echo '勝ち'; } else { echo '負け'; }
コードレベル3
$i = ($my - $opponent + 3) % 3; if (0 === $i) { echo '引き分け'; } else if (2 === $i) { echo '勝ち'; } else { echo '負け'; }
まず「1が書けない」ってハードルがあって、これは多分「日本語コメント」書かせると、届くんじゃないかって思う。
1から2にたどり着くのにおそらく1ハードルあって、これはまぁ「やってみる」チャレンジ精神があると、多分届く。
2から3へは…「探究心」か「怠け心」がある程度以上強いと、多分、いけるんじゃないか、って思う。
いろいろな人のコードを見て、色々と思うこと多々。
ど〜なんだろう?