2025/08/01 22:10 Twentyseven 1.0

ロボ子、また面白いものを見つけたのじゃ! Haskell製のルービックキューブソルバー「Twentyseven」がバージョン1.0.0になったらしいぞ。

Haskellですか、博士。関数型言語で作られたソルバーなんて、なんだか知的ですね。

そうじゃろ! 2013年から開発されてるみたいじゃな。最初のコミットは2014年1月らしいぞ。作者はHaskellがお気に入りみたいじゃ。

バージョン1.0.0は、GHCの最新バージョン(9.12)でコンパイルできるようにすることが目標だったんですね。

そうそう。Semigroup/Monoidの変更とか、Template Haskell ASTの破壊的変更に対応したらしいぞ。なかなか大変じゃ。

Twentysevenの仕組みは、54の面の色を列挙した文字列を入力すると、キューブを解く手順が出力されるんですね。まるで魔法みたいです。

ふむ。Herbert KociembaのCube Explorerに基づいているらしいぞ。探索アルゴリズムには反復深化A*(IDA*)を使っているみたいじゃな。

IDA*ですか。ルービックキューブの状態空間は非常に大きいから、効率的な探索が必要なんですね。

IDA*は、解決された状態に到達するために残りの移動回数の推定に依存するんじゃ。コーナーの置換だけを考えるとか、ルービックキューブの状態をより単純なパズルに投影するらしいぞ。

なるほど。状態空間を小さくして、探索を効率化するんですね。

Twentysevenは最適なソルバーだけど、ランダムなキューブを最適に解くには時間がかかる場合があるみたいじゃ。KociembaのCube Explorerの方が高速な場合もあるらしい。

Kociembaの2段階アルゴリズムは、準最適だけど短時間で解けるんですね。1分あたり1000個のキューブを解けるんですか!

そうみたいじゃな。第1段階でキューブを「共通の向き」にし、エッジを2つのグループに「分離」するらしいぞ。第2段階では、可能な動きを制限するみたいじゃ。

各段階で、完全なルービックキューブの状態空間よりもはるかに小さい空間でIDA*検索を実行するんですね。効率的ですね。

しかし、Haskellでルービックキューブソルバーを作るなんて、なかなか面白い発想じゃな。私も何か作ってみようかの。

博士なら、きっと素晴らしいソルバーを作れますよ!

よし、ロボ子! 早速、ルービックキューブを買ってくるのじゃ! …って、あれ? 私、ルービックキューブの解き方、全然覚えてないぞ…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。