思考ルーチンをちょこちょこ作っていて、だんだんパターンが同じようだなと思ったのでまとめてみました。
お題はCheckersです。
お互い一手ずつ自分の色の駒を動かします。
移動は斜め前、もし斜め前に相手の駒があってさらに同じ方向の一手先の斜め前が開いていたら
相手の駒を取ってそこへ進みます。
もし相手の側の端に到達したら、その駒は斜め後ろも動けるようになります。
この手のゲームでは
moveOnly まずルールにそって動くものを作ります。ここが難しいです。
これはチェッカーの対戦プログラムで合法手を生成してもらっているので楽です。
firstRandom 最初はランダムで充分です。合法手 mvの中から1つ選びます。
scoreMaker 次に評価値を作成します。なんらかの情報から得点をみつけます。
scoreLength 距離がそのまま得点ということが多いです。上下に大きく進むものが相手の駒を取っているので移動距離を得点にしてみます。
sortSelect 一番得点の高いものをソートして選択します。
9行で現在、世界8位(23人中)です。意外に世界1位は近い気もしますが、ここからは…
ここから使う技も割とパターン化できます。(私には使えない技もあります)
devideWheel 合法手の一覧をはずして、自分で合法手を作るようにします。
doubleScore 判定材料を増やします。
secondWorld 自分が動かした後の盤を作ります。
enemyHand 相手の手を読みます。
restThink 脳が疲れすぎないようにしないといけません。
anotherWorld 初期に与えられた盤では操作速度がものたりなくなり次元の繰り下げ、場合によってはビット化していきます。
multiWorld 盤に種類が増えていきます。
deepWorld よくわからないレベルまで盤を作りすぎて悩みだします。
lostMind 作者の思考ではまったくわからなくなります。なにがバグかすらわからなくなることも。
fastMaster 現状のサーバでは足りなくなって自己でゲームマスターを作成します。この辺が実装できれば1位も近いのかもしれません。
dayLike どうですか普通の日常の生活と同じような気もします。
anotherQuestion 別の問題です。
数字の各桁を分割、全ての桁をかけて次の数字を作る
それを繰り返して 0になるまでの回数を答えます。
まったく違う問題なのですが、上のプログラムとなんとなく似てません?
(最初に作成した記事があまりに異次元で自分でもよくわからなかったので加筆修正しました。2019年7月12日)