Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

数学は、遊べる。

数学の面白さを「さわって確かめる」ための、依存ゼロ・1ファイル完結のインタラクティブサイトです。 ビルド不要、index.html をブラウザで開くだけで動きます。

コンテンツ

テーマ さわれること
ウラム螺旋 1, 2, 3, … を渦巻きに並べ素数だけ赤丸。斜めの筋が浮かぶ様子をリアルタイム描画
問一 コラッツ予想 好きな正整数を入力 → 1 に落ちるまでの軌道を対数スケールで描画(最高到達点・ステップ数つき)
問二 1次元セルオートマトン Rule 30 / 90 / 110 / 184 を切り替え。最上段クリックで初期状態(種)を編集
問三 モンテカルロ法で π 点の雨を降らせて円内率 ×4 が 3.14159… に収束する様子を観察
問四 モンティ・ホール問題 実際にプレイ+100回自動試行で「そのまま 1/3 vs 乗り換え 2/3」を集計で体感

経緯

  1. 生成: Claude(Anthropic)との対話で「数学の面白さを伝えるインタラクティブなサイト」として一発生成。デザインは日本の数学ノート(方眼紙+赤ペン+試験問題の「問」番号)をモチーフに、Shippori Mincho / Zen Kaku Gothic New / IBM Plex Mono の3書体構成。
  2. バグ報告(人間によるQA): 公開前の動作確認で2件のバグを発見・報告。
  3. 修正: 以下の2件を修正し、シミュレーションで検証済み。

修正したバグ

① モンティ・ホールが無反応(ReferenceError)

// Before — スペース欠落により「const候補」が単一の識別子として解釈される
const候補=[0,1,2].filter(d=>d!==picked && d!==prize);

// After
const cand=[0,1,2].filter(d=>d!==picked && d!==prize);

JS の識別子には日本語が使えるため const候補 は構文的には合法(node --check を通過)。 しかし実体は「未宣言変数 const候補 への代入」であり、"use strict" 下では扉クリック時に ReferenceError → ゲームが無反応になっていた。構文チェックでは捕まらず、実行して初めて分かる典型例。

② π の推定値に系統誤差(境界判定と撒布範囲の不一致)

// Before — 点は一辺 S の正方形全体に撒くのに、判定円の半径は S/2−1
const x=Math.random()*piSize, y=Math.random()*piSize;

// After — 撒布範囲を判定円に外接する一辺 2r の正方形に一致させる
const x=1+Math.random()*2*r, y=1+Math.random()*2*r;

修正前の収束先は π ではなく π(1−2/S)² ≈ 3.11。点をいくら増やしても 3.14159… に届かない 統計揺らぎではないバイアスだった。修正後、200万点のシミュレーションで推定値 3.1417 を確認 (残差は √N オーダーの揺らぎのみ)。

教訓: ①は「LLM はもっともらしく壊れたコードを書く」、②は「見た目が動いていても数学的に 間違っていることがある」。どちらも人間のレビューが収束を救った。

技術メモ

  • Vanilla JS + Canvas 2D のみ(フレームワーク・ビルドなし、約27KB)
  • devicePixelRatio 対応の高解像度描画、リサイズ時は再レイアウト
  • prefers-reduced-motion 尊重(ウラム螺旋は一括描画に切替)、キーボード操作対応(扉は Enter / Space)
  • コラッツ列の途中値は 32bit を超えうるため内部計算は BigInt

ライセンス

コードは MIT。フォントは Google Fonts(SIL OFL)を CDN 参照。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages