常に一番イヤなブロックが落ちてくるテトリス「Hatetris」 67
ストーリー by soara
ハイスコアになるための思考実験 部門より
ハイスコアになるための思考実験 部門より
あるAnonymous Coward 曰く、
やや旧聞になるが、「Hatetris」なるテトリスゲームが公開されている。このゲーム、ルールはテトリスと同じなのだが、異なるのが「常にもっとも嫌なブロックが落ちてくる」というのが普通のテトリスと異なるところ(Hatetrisを紹介する秋元@サイボウズラボ・プログラマー・ブログ記事)。
現在積まれているブロックの形状から、もっとも消せるライン数が少なくなるブロックが落ちてくるというアルゴリズムだそうで、実際にプレイしてみると確かに非常に難しい。同サイトには「ハイスコア」が公開されているが、4月26日時点でのハイスコアは28ラインと、難度の高さが示されている。
上原テトリス (スコア:3, おもしろおかしい)
上原テトリス [itmedia.co.jp]のほうが、もっと不条理だと思う。
Re:上原テトリス (スコア:1, 興味深い)
でも個人的にはボンブリスのブロックが不条理だと思ったなぁ。
十字ブロック(通称インペリアルクロス)には何度ぶちギレそうになったことか・・・あと鍵型とかも。
Re: (スコア:0)
Re:上原テトリス (スコア:2, 興味深い)
……冷静に考えると、Zブロックだけ落としてりゃいいんじゃないのか?
と思ったがZブロックだけだと延々と消せるな
逆ZやL字や四角の力が組合わさって
初めてプレイヤーを埋められるのか……
Re:上原テトリス (スコア:2, 参考になる)
平らな所がなくなるとかすると四角いのとかが落ちてくるよ。あと一番右が空いてる状態だと逆のが出てくる。
# ハイスコアは1だがやる気なくした。ホントむかつく。
Re:上原テトリス (スコア:2, 参考になる)
Best regards, でぃーすけ
Re: (スコア:0)
とにかく先を読むのが難しくて、どうにもなりません
やる気が失せました
Re: (スコア:0)
まだ疲れてるらしい
上司を消す方法 (スコア:1)
もしテトリスを使って消せるのならむしろ楽しいかも。
Re: (スコア:0)
Re: (スコア:0)
似たような上司を4人並べると消せる(なんか殺すニュアンスに感じるのは気のせいである)
プヨプヨのほうがいいなぁ
Re:上司を消す方法 (スコア:1)
上司の脂肪がぷよぷよ~
ψアレゲな事を真面目にやることこそアレゲだと思う。
Re:上司を消す方法 (スコア:1)
消されそうになるといつの間にか色が変わってるという不条理さ。
1を聞いて0を知れ!
詰めテトリス (スコア:2, 興味深い)
プレイしてみましたが、乱数要素がなさそうなので、詰め将棋に近いものがありますね。
一手読みしかしてないみたいですし、上手く考えればアルゴリズムを引っ掛けられるかも
Re:詰めテトリス (スコア:3, 興味深い)
アルゴリズムさえ抜ければ総当たりでハイスコアを導き出せそうです。
ソースコード出してくれないかな。
Re:詰めテトリス (スコア:2, 参考になる)
JavaScript のようですから、ソース普通に見られますよ。
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:詰めテトリス (スコア:1)
主な改善点は下記の通り。
・現状は"O"テトロミノのように回転しても変化しないブロックも回転させている
(ブロックの位置のhashCode()を計算しているがこれらを区別している)
→これを改善すると数百という数字が何とかなると思う
・dfpnないしはdfpn+を採用
→これで問題のない時間である程度の手を読めるようになると思います。
Best regards, でぃーすけ
Re:詰めテトリス (スコア:2, 興味深い)
お望みの条件を「詰み」と定義すれば良いと思います。
例えば現状、私は手で30ライン消す方法を発見しています(#1758529参照)から、31ライン消すことを「詰み」と定義してdfpnを適用してみるのはありかと。
(31ライン消した時点で途中でも「詰み」とします)
この場合もちろん「不詰」は「30ライン以下でゲームオーバーになること」となります。
これで「不詰」が証明されたりすると私の方法が最適(の一つ)であることが分かりますし、31ラインの方法が発見されれば今度は32ラインを「詰み」と定義して繰り返す訳です。
dfpn+の場合の評価関数としては別のところでも挙げましたが、(ライン数/積み段数)がパラメータとして利用できるのではないかと考えます。
Best regards, でぃーすけ
微修正(Re:詰めテトリス) (スコア:1)
しかし「詰み」の条件も反復進化させれば良い、という意味での議論の大筋には変化ありません。
Best regards, でぃーすけ
Re: (スコア:0)
自分の打つ手自体が乱数要素になるのかな??
「ここへ落とすとL字ピースが落ちてくるけど、今欲しいのは凸だからあっちに落とすぜ!」
みたいな器用なことができる人が居たら尊敬するかも。
#テトリスが苦手な自分には無理。
Re: (スコア:0)
> 「ここへ落とすとL字ピースが落ちてくるけど、今欲しいのは凸だからあっちに落とすぜ!」
詰め将棋だとそれを普通にやるので、将棋や囲碁の得意な方に期待しましょう。
常に一番いやなブロックが落ちてくる ≒ 受け手は最善手で対応する ですから。
フルHDテトリス (スコア:2, すばらしい洞察)
Re: (スコア:0)
X68000 上の nlith で横幅広い指定でやってましたが、あれは楽しかったですよ。
Re:フルHDテトリス (スコア:1)
そうか、横幅指定で出来たのですか。知らなかった。
nlith、どこかに移植されていないのかちょこっと探してみましたが少なくともぱっと判るところにはなさそうです。
Hell (スコア:2)
テトリス系では Hell [gigazine.net] というのが一番凶悪かしら?
実際にはクリアできないジョークソフトみたいだけど。
コンタミは発見の母
I HATE THIS! (スコア:1)
Re: (スコア:0)
"More?"
"Please."
http://memory-alpha.org/wiki/Star_Trek_Generations [memory-alpha.org]
こんなのも (スコア:1)
最近ではこんなの [gigazine.net]も見ました。
こっちは観賞するぶんには楽しかったですが、もはやゲームになりませんでした。
ちょっとMSXのテスリトを思い出した。
しろうと考え
Re:こんなのも (スコア:2, すばらしい洞察)
それは、テトリスがゲームとして成り立つための前提条件を破壊した一発ですし、
ゲームになるわけがないと思います。
ネタとしては「ゲームになってないじゃん!」というツッコミ入れてそこで終了。
今回のタレコミネタの物やフルHDテトリスのほうが、インパクトもあり実際プレイも可能なので格段に良い物だと思います。
#友人が昔、
#「相手の知識の範囲内かつ常識の範囲外の事物を出すのが良いネタだ」
#と言っていたのを思い出しました。
ψアレゲな事を真面目にやることこそアレゲだと思う。
きっとアリカなら・・・! (スコア:1)
これの続作 [arika.co.jp]に入れて・・・
・・・流石に勘弁してください、マジで。
ぐったりんぐ
29ライン (スコア:1)
C02A AAAA AAAC 02AA AAAA AC02 AAAA AAC2 AAAA AAAA C2AA AAAA AEAA AAAA AA56 AAAA AAAA B556 AAAA AAA5 AAAA AAAA B56A AAAA AA6A AAAA AAAD 6AAA AAAA AAAA AAAA B6AA AAAA A756 AAAA AAA2 AAAA AAAB AAAA AAAB 5AAA AAAB 56AA AAAA AAAA A82A AAAA B00A AAAA A6D6 AB55 55AA AAAA A6AA AAA9 4AAA AAB5 56AA AAB5 6AAA AA30 2AAA AAA6 5B00 AAAA AA9E FAEF C02A AAAA ABBA C02A AAAA AA02 AAAA AAA0 0AAA AAAA 96AA AAAA AAAA AAA8 2AAA AAA8 02AA AAAA B00A AAAA AC02 AAAA B00A AAAC 2AAA AAB0 AAAA AEAA AAA9 5AAA AAAB 556A AAA9 6AAA AAB5 6AAA A9AA AAAA D6AA AAAA AAAA B6AA AAB5 5AAA A8AA AAAA EAAA AB5A AAAD 5AAA AAAA 0AAA B00A AA9E D6AB 55AA AA9A AA9A AAD5 6AAD 5AAA C02A AA9E DB6C 02AA A9EF BBBF 00AA AABB AC02 AAAA 80AA AAA0 0AAA AA5A AAAA AAAA 0AAA A802 AAAA C00A AAB0 0AAB 0AAA B0AA BAAA 956A AAB5 5AA9 6AAA D5AA B00A A6AA AD6A AAAA B6AA D56A 8AAA BAA8 2AAA CAAB 55AA D6A8 0AAA 802A AAC2 AA80 2AAD 56AB 5AAE A806 A
Best regards, でぃーすけ
Re:29ライン (スコア:4, 興味深い)
繰り返し可能かつ効率的(=ライン数/詰み段 が大きい)な方法の発見がカギかと。現状ではこの値は11/5で2回くり返せます。
「ひさし」は繰り返し可能にするための戦略です。アルゴリズム上、S型が優先して降ってくるためにS型を利用して整地する必要があります。
C02A AAAA AAAB 00AA AAAA AC08 AAAA AAC2 AAAA AAAA C2AA AAAA AEAA AAAA AA56 AAAA AAAA B55A AAAA AA96 AAAA AAAA D5AA AAAA A9AA AAAA AAB5 AAAA AAAA AAAA AAAA DAAA AAAA 9756 AAAA AA8A AAAA AAAB AAAA AAAB 5AAA AAAB 56AA AAAA AAAA A82A AAAA B00A AAAA A6D6 AB55 6AAA AAA9 4AAA AAA6 AAAA AD56 AAAA B56A AAAA 032A AAAA A65B F00A AAAA AA6E EFC0 2AAA AAAA EB00 AAAA AAA8 0AAA AAAA 802A AAAA AA54 AAAA AAA1 AAAA AAA0 AAAA AAA0 0AAA AAAA C02A AAAA B002 AAAA B00A AAAC 2AAA AAB0 AAAA AEAA AAA9 5AAA AAA9 D5AA AAA5 AAAA AAB5 6AAA A6AA AAAB 5AAA AAAA AAAA DAAA AAD5 56AA AA2A AAAA BAAA AAD6 AAAB 56AA AAAA 82AA AC02 AAA7 B5AA D556 AAAA 52AA A6AA B55A AB56 AA80 FCAA AAA5 583F 0AAA A9BB BF00 AAAA AE80 32AA AA82 FAAA A802 AAAA 96AA AA1A AAA8 2AAA A00A AAAB 00AA AB00 AAB0 AAAB 0AAB AAA9 5AAA AD56 AA5A AAB5 6AAC 02A9 AAAB 5AAA AAAD AAB5 5AA2 AAAE AA0A AAB2 AAD5 6AB5 AA02 AAA0 0AAA B55A AD6A BAAC 2AAB 0AA0 C2AA C02A
Best regards, でぃーすけ
Re:29ライン (スコア:1)
28ラインの解の前半をアレンジして「11/5」の繰り返しを得ています。なので解法としては28ラインからそんなに新規性がある訳ではなく、詳細を詰めて一つの完成形にした程度の価値です。「計算」を使えば11/5より効率の良い解を発見できるかも、と思っているのですが。
[以下全くオフトピですが、こんなテトリスを真剣にトライするやつは普段下記のようなのを趣味にしている、ということで]
連休中は
http://jmoss.jp/mon/index.php?type=viewproblem&d=b033
とか
http://www.abz.jp/~k7ro/index.html
とか解いていたのですがまだ、
http://www.dokidoki.ne.jp/home2/takuji/WFP22.pdf
も残っているので少し後回しかもです。
Best regards, でぃーすけ
対戦型テトリス (スコア:0)
相手におとすブロックを選べる。
Re:対戦型テトリス (スコア:2)
「相手に投げる仕様が選べる」対戦型システム開発みたいなものを連想した。
#防御側が圧倒的に不利で勝負にならない。
Re: (スコア:0)
アジャイルをまともに運用するとストーリーカードってものになるらしいですよ。多分MtGみたいなものなのでしょう。
Re: (スコア:0)
ストーリーカードを選ぶのは開発者側だったと思うんだ。
テトリスのプレーヤーや日本式対戦型システム開発の開発者側には、選択の自由はありません。
Re: (スコア:0)
昔PC9801用にあったカタリスというゲームが対戦型で相手にする業がある程度選べました。
大学でサークルの先輩にこてんぱんにされたなぁ...
Re:対戦型テトリス (スコア:1)
既にそんな感じの対戦型ボードゲームがあります。
http://gigamic.co.jp/games_quarto.html [gigamic.co.jp]
想像してたのと違う (スコア:0)
Re:想像してたのと違う (スコア:1, 興味深い)
テトロミノではないものがテトリスと名乗って良いものかどうか。
そもそも動かない (スコア:0)
「ページでエラーが発生しました」とステータス欄に表示されて、ブロックが全く動かなかった。
これはストレスがたまる・・・
環境はWin7HP-x86、UAC下から2番目(警告あり、暗転なし)、IE8ドノーマル(他のブラウザは使ったことがない)、
Norton Internet Security2009。
後はレジストリをいじってCAPSとCTRLを入れているくらい。
どんな環境だと動いてます?
Re:そもそも動かない (スコア:1)
とりあえずIE8以外の物を入れればいいのでは。
Re:そもそも動かない (スコア:1)
参考にならないかもしれませんが、Safari on MacOSXでは動いていますね。
Best regards, でぃーすけ
Re: (スコア:0)
XPのIE8も駄目ですねぇ。
event.KeyCodeが取れないみたい。
Re: (スコア:0)
ふざけんな!これイカサマだろ!! (スコア:0)
と画面を引っくり返してやりたいw
攻略してみる (スコア:0)
横方向に埋めようとするとかなり難しいけど,
縦方向に埋めていこうとすると同じブロックが連続して落ちてくるので,
割と簡単に消せそうです。
# それでも3どまり.
# 横方向に埋めることが難しくても,縦方向なら...