アカウント名:
パスワード:
プレイしてみましたが、乱数要素がなさそうなので、詰め将棋に近いものがありますね。一手読みしかしてないみたいですし、上手く考えればアルゴリズムを引っ掛けられるかも
まあ実用レベルになるのも時間の問題だろうけどね。#そもそも将棋やチェスの世界観からすれば、一手に3分くらいは許容範囲な気もする。
それとブラウザは何を使ったの?JavaScriptエンジンによって性能は随分違うはずだけど。
>・dfpnないしはdfpn+を採用この場合「詰んだ」条件て何?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
詰めテトリス (スコア:2, 興味深い)
プレイしてみましたが、乱数要素がなさそうなので、詰め将棋に近いものがありますね。
一手読みしかしてないみたいですし、上手く考えればアルゴリズムを引っ掛けられるかも
Re:詰めテトリス (スコア:3, 参考になる)
> 一手読みしかしてないみたい
機能は殺されているようですが、沢山読めるようにはなっているみたいですね。
startGame(1)で「三手の読み」startGame(2)で「五手の読み」・・・。
HTML上ののエントリポイント(ここで0を入れてstartGame()を呼んでいるので深読みしない)
<span class="button" onclick="startGame(0);">start new game</span><br />
以下はjavascriptのソースより。コメントは私の追加。
var searchDepth; // グローバル変数
function startGame(thisSearchDepth) {
...
searchDepth = thisSearchDepth; // ここでグローバルにセット
...
}
// 次に降らせるテトロミノを決める関数 -- thisWellは現在の況状
function worstPiece(thisWell) {
...
var currentRating = bestWellRating(thisWell, id, searchDepth);
...
}
// ユーザ操作による最も良い結果の評価値を計算
function bestWellRating(thisWell, pieceId, thisSearchDepth) {
...
// thisSearchDepthが0ならここは呼ばれない
worstPieceRating(newWell, thisSearchDepth-1) * Math.pow(10, -thisSearchDepth)); // 読みの深さを一つ減らして再帰
...
}
// 次に降らせるテトロミノで最も悪くなる評価値を計算
function worstPieceRating(thisWell, thisSearchDepth) {
...
var currentRating = bestWellRating(thisWell, id, searchDepth);
...
}
Best regards, でぃーすけ
Re:詰めテトリス (スコア:2, 参考になる)
Best regards, でぃーすけ
Re: (スコア:0)
まあ実用レベルになるのも時間の問題だろうけどね。
#そもそも将棋やチェスの世界観からすれば、一手に3分くらいは許容範囲な気もする。
それとブラウザは何を使ったの?
JavaScriptエンジンによって性能は随分違うはずだけど。
Re:詰めテトリス (スコア:1)
主な改善点は下記の通り。
・現状は"O"テトロミノのように回転しても変化しないブロックも回転させている
(ブロックの位置のhashCode()を計算しているがこれらを区別している)
→これを改善すると数百という数字が何とかなると思う
・dfpnないしはdfpn+を採用
→これで問題のない時間である程度の手を読めるようになると思います。
Best regards, でぃーすけ
Re: (スコア:0)
>・dfpnないしはdfpn+を採用
この場合「詰んだ」条件て何?
Re:詰めテトリス (スコア:2, 興味深い)
お望みの条件を「詰み」と定義すれば良いと思います。
例えば現状、私は手で30ライン消す方法を発見しています(#1758529参照)から、31ライン消すことを「詰み」と定義してdfpnを適用してみるのはありかと。
(31ライン消した時点で途中でも「詰み」とします)
この場合もちろん「不詰」は「30ライン以下でゲームオーバーになること」となります。
これで「不詰」が証明されたりすると私の方法が最適(の一つ)であることが分かりますし、31ラインの方法が発見されれば今度は32ラインを「詰み」と定義して繰り返す訳です。
dfpn+の場合の評価関数としては別のところでも挙げましたが、(ライン数/積み段数)がパラメータとして利用できるのではないかと考えます。
Best regards, でぃーすけ
微修正(Re:詰めテトリス) (スコア:1)
しかし「詰み」の条件も反復進化させれば良い、という意味での議論の大筋には変化ありません。
Best regards, でぃーすけ