Modulo Krinkle — 会社員が趣味で見つけた非周期
なにか
2025年、会社員の井村美紀さんが趣味のプログラミングで見つけ、コミュニティの反響を経て5日で論文になった非周期タイリング族。「専門家でなくても、手元の計算機で新しい形は見つけられる」——このギャラリーの背中を押してくれた着想元のひとつ。使う道具は剰余の計算とベクトルの足し算だけ。数列 sj = j·m mod k(gcd(m,k)=1 なら最初の k 項は必ず 0..k−1 の順列になる)で「ギザギザの下端」を描き、先頭と末尾を入れ替えた列で「上端」を描くと、順列だから両者は同じ点に着き、閉じた1枚のタイルになる。あとはこのタイルを平行に並べてウェッジ(扇形の帯)を作り、ウェッジを 2π/n ずつ回して継いでいくと平面が埋まる。
面白いのは対称性の壊れ方。全体は n 枚のウェッジの回転対称に見えるが、継ぎ目が剰余の分だけ段違いにずれていて、完全な回転対称には決してならない——論文はこれを「剰余ずらし回転対称(modulo-staggered rotational symmetry)」という新しい規則性として名づけた。周期でも準周期(射影型)でもない、第三の秩序の提案。
どう作ったか
論文 §2〜§5 の構成を追試した(プロトタイル→ウェッジ→フロントに沿った回転配置→180°回転で閉じる)。機械検査は6件: 剰余数列の順列性・プロトタイルが閉じる(10⁻¹⁶)・単純多角形(自己交差なし)・論文の核心定理「w 個並べたフロントが基底の先頭抜き+n/2 に一致」を数値で確認・990枚で隙間重なりゼロ・SVG実物。フロント(既配置領域の境界の方向列)のシミュレーションがそのまま検査になるのが、この構成の初等性の証明。
探索ノート — 剰余の代わりに任意の順列を入れたら?
新しい非周期タイルはこの構成の先にあるか——数列 sj = j·m mod k を「0で始まる任意の順列」に差し替えて総当たりした(無オフセット版 n=tk・ウェッジ配置とフロント定理の成立を判定)。結果: k=7 は720順列中ちょうど6つ、k=5 は24中4つ、k=6 は120中2つが成立し、いずれも jm mod k(gcd(m,k)=1)の族と完全一致。1つの例外もなかった。つまりこの構成では剰余算術は「使った道具」ではなく「成立の必要条件」——モジュラー性が理論の心臓だと、しらみつぶしが教えてくれた。新族を狙うなら、順列ではなく配置規則そのものを変える必要がある。
探索ノート2 — 配置規則側の自由度も、全部つぶした
順列側が閉じたので、構成に残る自由度を3つ調べた。①接ぎ位置: ウェッジは「フロント上の方向 i の最初の辺」に接ぐのが規則だが、これを2番目・3番目の出現に替えると平面の4割近くが裸のまま残る——接ぎ位置に選択の余地はない。②オフセット: 180°回転で閉じる版の n を偶数16〜72で総当たりしたら、成立したのは {22, 36, 50, 64} だけ=論文の族 n=2(tk−m) と完全一致。族の外に隠れた閉じ方は無い。③k が合成数のときが一番面白かった。gcd(m,k)=g>1 でもタイルは閉じるし自己交差もしない——面積はちょうど原始タイル (m/g, k/g) の g 倍で、sj = g·s′j の関係が厳密に成り立つ(合成の系は原始の系の方向番号を g 倍に読み替えただけ)。壊れるのはフロント: 境界に g の倍数の方向しか現れないので、風車構成は方向1のウェッジを置く場所が永遠に見つからない。ではこのタイルは平面に敷けないのか——敷ける。並進格子 {r·d0 + c·d1} でぴったり周期タイリングになる(gcd=1 のタイルも同じ格子で周期に敷ける)。つまり gcd(m,k)=1 は「順列になるための条件」である以上に「非周期への道が開くかどうかの分水嶺」——どの (m,k) でもタイルは存在して周期には敷けるが、風車の非周期構成へ進めるのは gcd=1 だけ。これで順列・接ぎ方・オフセット・合成数、この構成の自由度は調べ尽くした。新族はこの構成の中には無い。探すなら構成の外へ。
探索ノート3 — 「構成の外」に3つの扉を開けたが、全部閉まっていた
ノート1(数列を任意の順列に)とノート2(配置規則の自由度)は、どちらも「論文の族の外に新しいものは無い」で閉じた。ただしどちらも骨格そのものは動かしていない——下端は「0..k−1 の順列+最後に1歩 vk」、上端は「下端の先頭と末尾を入れ替えたもの」、ウェッジは {r·d₀ + c·d₁ : 0≤c≤r}。今回はこの骨格に3つの扉を開けた。
扉A: 上端の作り方。なぜ「端どうしの入れ替え」なのか。手で計算すると答えが出る——ウェッジが並進 d₁ で噛み合うには、上端の部分和が全ての j で Uj = Lj + d₁ でなければならず、これは uj = lj(中の項はそのまま)と u₀ = lk を強制する。つまり端どうしの入れ替えは唯一解。実際に28通りの入れ替えを総当たりすると、単純多角形になるのも並進で噛み合うのも (0,7) の1通りだけ。他は上端と下端が途中でくっついて面積ゼロの串刺しになる。上端の自由度はゼロだった。
扉B: 最後の一歩。下端の締めくくり vk を vK(K=1..13)に替えて掃く。単純多角形になるものは7通りあるが、平面まで通るのは K=k=7 だけ。他は隙間か重なりが出る。
扉C: 下端を「順列」の外へ。ノート1は 0..k−1 の順列だけを掃いていた。今回は重複あり・方向はどこでもよい・歩数も方向の数も自由という完全に開いた空間で総当たりする(s₀=0 は平行移動の自由度なので固定)。方向 n 等分・歩数 ℓ(ℓ は n の約数・回転コピーは t=n/ℓ 個)として、(n,ℓ) を11通り、合計154,192 通りを「単純多角形 → タイル面積 = |det(d₀,d₁)| → フロント配置成功 → 乱数点の被覆完全」の順に篩にかけた。
結果——生き残ったのは、どの (n,ℓ) でも例外なく sj = j·m mod ℓ(gcd(m,ℓ)=1)と最後の一歩 vℓ の形だけ。族の外はゼロ。しかも興味深いことに、勝ち残る下端は方向の数 n にまったく依存しない(n=9 でも n=12 でも、ℓ=3 なら 0,1,2,3 と 0,2,1,3 の2つだけ)。剰余算術は「井村氏が使った道具」でも「順列の中の当たりくじ」でもなく、この骨格で平面が閉じるための必要条件そのものだった。
ついでにひとつ副産物: t=1(回転コピーなし)では、1万9千通りを掃いても平面が閉じるものは1つも無い。ウェッジを回して継ぐという手続きは飾りではなく、構成の本体だった。
3つの扉が全部閉まったので、次に替えるものは骨格の外側になる: ウェッジの形({0≤c≤r} という三角領域そのもの)、接ぎの規則(フロントの最初の出現に合わせる、をやめる)、あるいは「1本の折れ線でタイルを作る」という発想そのもの。探した範囲は上に書いたとおりで、これは「絶対に無い」ではなく「この骨格の中には無い」。
出典
- 数理
- Miki Imura, "A Family of Non-Periodic Tilings, Describable Using Elementary Tools and Exhibiting a New Kind of Structural Regularity", arXiv:2506.07638 (2025)。紹介: ITmedia 2025-12-22
- 生成
- generators/krinkle.js((m,k,t)=(3,7,2)・オフセット版 n=22・依存ゼロ)