ブラウザで動く Lights Out パズルゲーム。 通常のゲームモードに加え、有限体F_4を使った数理解析モードを搭載。
index.html をブラウザで開くだけで動作します。
起動後にプレイするボードのサイズを設定してください。
open index.html
グリッド上のセルを選択すると、そのセルと周囲 8 マス(3×3 領域)が反転します。 全セルを消灯すればクリア。
通常の Lights Out パズル。盤面サイズは 1〜20 × 1〜20 で自由に設定できます。
| キー | 動作 |
|---|---|
h j k l / 矢印キー |
カーソル移動 |
Space / Enter |
セル反転(3×3) |
U |
一手やりなおし |
R |
解ける配置でやり直し |
S |
解ける配置に再配置 |
Q |
メニューへ戻る |
元の m×n 盤面を外周 1 マスで囲った (m+2)×(n+2) の拡張盤面。 右端・下端に各行・各列の F_4 重み和 をリアルタイム表示します。
| キー | 動作 |
|---|---|
h j k l / 矢印キー |
カーソル移動 |
Space / Enter |
セル反転 |
T |
反転モード切替(3×3 ↔ 1マス) |
U |
一手やり直し |
S |
内部セルを解ける配置に再配置 |
A |
無作為な配置(可解保証なし) |
E |
全消灯配置を生成 |
Q |
メニューへ戻る |
F_4 = F_2[x]/(x² + x + 1) の 4 元体を使い、各セル (r, c) に重み ω^(r+c) を割り当てます。
- 行和 RowSum[r] = Σ_c board[r][c] · ω^(r+c)
- 列和 ColSum[c] = Σ_r board[r][c] · ω^(r+c)
全行・全列の和がすべて 0 であることが、盤面が解法可能であるための(十分)条件になります。
重みの表示色: 0=グレー、1=シアン、ω=イエロー、ω²=マゼンタ
index.html
style.css
src/
core/
board.js # 盤面状態・反転ロジック・アンドゥ
gf4.js # F_4 有限体演算
solver.js # 外周補完用 F_2 線形方程式ソルバ(ガウス消去法)
ui/
game.js # ゲーム状態管理
renderer.js # Canvas / DOM 描画
input.js # キーボード・タッチ入力
ES6 モジュールをサポートするモダンブラウザ(Chrome、Firefox、Safari 等)。 外部ライブラリ・ビルドツール不要。