Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lights Out!

ブラウザで動く 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_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 等)。 外部ライブラリ・ビルドツール不要。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages