2026年8月16日(日)掲載 3,609本日 42
HN287115

【圧倒的】ルービックキューブの全4325京通りの状態をスクロールして見られるサイトを作った!

Show HN: Scroll through all 43252003274489856000 Rubik's Cube states

Alen1236日前

議論

11
0Alen123スレ主2876日前

ルービックキューブの全状態数である4325京2003兆2744億8985万6000通りを、ただひたすらスクロールして眺められるWebサイトを公開しました。ブラウザ上でこの天文学的な数のパターンの世界を体験してみてください。

1Waterluvian5日前

おっ、いいじゃん!俺のお気に入りもいくつか入ってるよ。

2PaulHoule5日前

学生時代に「チーム」で問題解決コンテストに出た時を思い出した。出された2つの問題のどっちにするか決められなくて、結局両方並行してやることにしたんだよね。

メンバーの一人がTandy 1000でBASICのプログラムを書いてて、他の連中は「これ終わるのに1グーゴル年かかるぞ」なんて言ってたけど、彼は諦めずに週末中ずっと動かし続けてた。

俺はといえば、解析した内容はほとんど合ってたのに、半径を直径と勘違いしたせいで計算が4倍もズレてたっていう。

3jcims5日前

俺のスクロールホイールだと、1インチ進むごとに12状態くらいカバーする感じかな。適当に計算してみたけど、もしホイールの表面が光速で動いてたとしたら、全部スクロールしきるのに9.5年くらいかかるはず。

4nzealand5日前

ルービックキューブの開発には、エルノー・ルービックが4年かけたんだよね。

彼は完成させてすぐにバラバラにして、そのあと1ヶ月かけて解けるかどうかを検証したらしい。

幸いなことに、4300京通りもの組み合わせがあるなんてことは、誰も彼に教えてあげなかったみたいだけど。

5zetanor5日前

いいね、これNFTとして発行できる?43252003274489856000に50ドルを掛ける計算の仕方は分からないけど、これがあればかなり稼げそうな気がするし、金は嫌いじゃないからね。

6snowwrestler5日前

最近読んだこの本を思い出したよ:

https://en.wikipedia.org/wiki/A_Short_Stay_in_Hell

順列から生まれる数字って本当に凄まじいよね!物理的な宇宙にある(それよりはるかに小さい)数字と比べると特にそう思う。

7noduerme5日前

昔やってたオンラインカジノ用に、3Dルービックキューブのスロットマシンを作ったことがあるんだ。キューブをランダムに4回バラバラにして、プレイヤーは最大3手で元に戻せたらクリアっていうルールで、60秒の制限時間付き。回転の処理やShiftキーでの回転操作を同時に扱うために、クォータニオン(四元数)の計算にかなり苦労したよ。Away3D / AS3でシンプルなジオメトリを使ってね。

このゲーム設計で本当に大変だったのは、配当の仕組みを作ることだった。プレイヤーが3手目を打った後に、キューブのどの面でもいいから色が3つ並んだ「ライン」ができると、その数に応じて配当が出る仕組み。完璧に揃えたらプログレッシブのジャックポットもある。特にゲームのハウスエッジをゼロにして、優れた問題解決スキルをちゃんと還元したかったんだ。そこで課題になったのは、完璧な状態から4手ランダムに回した時、最善の3手で64、63、62…1ラインが揃う確率をそれぞれ求めて、それに応じてどう配当を割り振るかということ。

たぶん10億回くらいのモンテカルロシミュレーションを回して、配当テーブルを作ったよ。すごく楽しかった。こういう風にスキルが報われるギャンブルゲームがもっと増えるといいんだけど。

9dcanelhas5日前

ナイスな可視化だね。
キーボードで1ステップずつ進める操作ってある?矢印キーを試したけど、結構大きくジャンプしちゃって。

どうやって生成してるのか(BFSとフラット化かな?)は分からないけど、隣接するインデックスが必ずしも1手先ってわけじゃないみたい……でも、そうであってもおかしくないはず!

ルービックキューブにはハミルトン路が存在するからね:
https://bruce.cubing.net/ham333/rubikhamiltonexplanation.html

その回路を辿るっていうのは、バイナリじゃなくてグレイコードみたいなものだね。次の状態に進む時、一度に1ビットしか変えないっていう。

10tantalor5日前

2Dモードのカラー補完がいまいちだね。RGBで補完するんじゃなくて、OKLCHを使うべきだよ。

デモ:https://jsfiddle.net/t80eLfc2/2/

RGBで補完すると各チャンネルの線形補完になっちゃうから、多くの場合グレーを通ることになって、色がくすんで見えちゃうんだよね。

OKLCHで補完すれば彩度が維持されるし、グレーを通らずに色相の変化だけで繋がるようになるよ。