本文へ移動

Meikyuu迷宮

シード付きの迷路と矢印パズルを作り、番号付きの問題を進め、平面や立体表面で遊べます。

「迷宮」は迷路のように入り組んだ場所を表す言葉です。 名前について(英語)

目次

リファレンス · 迷路・矢印・混合の盤

MazeGeometry型

リファレンスの説明と例は英語です。見出しと目次は日本語です。

How a maze lies in space, which is all the measure needs to know of it besides the passages: how far a cell is from the goal (any measure that rises with distance will do, the squared distance is cheapest) and how far the line bends going from one cell through another to a third, in radians from 0 (straight on) to pi (back the way it came). A flat maze reads these off its cell centres; a maze over a solid reads them in three dimensions.

インポート

import type { MazeGeometry } from "@johnmorrisdotca/meikyuu";

定義

type MazeGeometry = {
    readonly points: readonly (readonly number[])[];
    distanceToGoal(cell: number): number;
    bend(before: number, cell: number, after: number): number;
};

メンバー

名前型説明
pointsreadonly (readonly number[])[]

Where each cell lies: two numbers for a flat maze, three for a solid. The cover reads it.

distanceToGoal(cell: number): number
bend(before: number, cell: number, after: number): number

例

import type { SolidRecipe } from "@johnmorrisdotca/meikyuu/3d";
import { buildSolidMaze, solidGeometry } from "@johnmorrisdotca/meikyuu/3d";
import type { MazeGeometry } from "@johnmorrisdotca/meikyuu";

const solidRecipe: SolidRecipe = {kind:"cube",n:2,algorithm:"backtracker",seed:42};
const solid = buildSolidMaze(solidRecipe);
const value: MazeGeometry = solidGeometry(solid);
console.log(value);
{
  points: [
    [ 1, -0.5, -0.5 ],  [ 1, 0.5, -0.5 ],
    [ 1, -0.5, 0.5 ],   [ 1, 0.5, 0.5 ],
    [ -1, -0.5, -0.5 ], [ -1, 0.5, -0.5 ],
    [ -1, -0.5, 0.5 ],  [ -1, 0.5, 0.5 ],
    [ -0.5, 1, -0.5 ],  [ -0.5, 1, 0.5 ],
    [ 0.5, 1, -0.5 ],   [ 0.5, 1, 0.5 ],
    [ -0.5, -1, -0.5 ], [ -0.5, -1, 0.5 ],
    [ 0.5, -1, -0.5 ],  [ 0.5, -1, 0.5 ],
    [ -0.5, -0.5, 1 ],  [ 0.5, -0.5, 1 ],
    [ -0.5, 0.5, 1 ],   [ 0.5, 0.5, 1 ],
    [ -0.5, -0.5, -1 ], [ 0.5, -0.5, -1 ],
    [ -0.5, 0.5, -1 ],  [ 0.5, 0.5, -1 ]
  ],
  distanceToGoal: [Function: distanceToGoal],
  bend: [Function: bend]
}

出力(このページを作ったときに実行した結果)

ソースを見るGitHub で編集@johnmorrisdotca/meikyuu 3.2.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。