Skip to the content

Meikyuu迷宮

Generate seeded mazes and arrow puzzles, follow numbered levels, and play on flat grids or three-dimensional surfaces.

Meikyuu is the Japanese word 迷宮 for labyrinth. About the name

Contents

Reference · Mazes, arrows and mixed boards

Linkstype

Each cell's open neighbours.

Import it

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

Definition

type Links = number[][];

Members

NameTypeDescription
lengthnumber

Gets or sets the length of the array. This is a number one higher than the highest index in the array.

toString(): string

Returns a string representation of an array.

toLocaleString(): string (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string

Returns a string representation of an array. The elements are converted to string using their toLocaleString methods.

pop(): number[] | undefined

Removes the last element from an array and returns it. If the array is empty, undefined is returned and the array is not modified.

push(...items: number[][]): number

Appends new elements to the end of an array, and returns the new length of the array.

concat(...items: ConcatArray<number[]>[]): number[][] (...items: (number[] | ConcatArray<number[]>)[]): number[][]

Combines two or more arrays. This method returns a new array without modifying any existing arrays.

join(separator?: string): string

Adds all the elements of an array into a string, separated by the specified separator string.

reverse(): number[][]

Reverses the elements in an array in place. This method mutates the array and returns a reference to the same array.

shift(): number[] | undefined

Removes the first element from an array and returns it. If the array is empty, undefined is returned and the array is not modified.

slice(start?: number, end?: number): number[][]

Returns a copy of a section of an array. For both start and end, a negative index can be used to indicate an offset from the end of the array. For example, -2 refers to the second to last element of the array.

sort(compareFn?: ((a: number[], b: number[]) => number) | undefined): Links

Sorts an array in place. This method mutates the array and returns a reference to the same array.

splice(start: number, deleteCount?: number): number[][] (start: number, deleteCount: number, ...items: number[][]): number[][]

Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.

unshift(...items: number[][]): number

Inserts new elements at the start of an array, and returns the new length of the array.

indexOf(searchElement: number[], fromIndex?: number): number

Returns the index of the first occurrence of a value in an array, or -1 if it is not present.

lastIndexOf(searchElement: number[], fromIndex?: number): number

Returns the index of the last occurrence of a specified value in an array, or -1 if it is not present.

every<S extends number[]>(predicate: (value: number[], index: number, array: number[][]) => value is S, thisArg?: any): this is S[] (predicate: (value: number[], index: number, array: number[][]) => unknown, thisArg?: any): boolean

Determines whether all the members of an array satisfy the specified test.

some(predicate: (value: number[], index: number, array: number[][]) => unknown, thisArg?: any): boolean

Determines whether the specified callback function returns true for any element of an array.

forEach(callbackfn: (value: number[], index: number, array: number[][]) => void, thisArg?: any): void

Performs the specified action for each element in an array.

map<U>(callbackfn: (value: number[], index: number, array: number[][]) => U, thisArg?: any): U[]

Calls a defined callback function on each element of an array, and returns an array that contains the results.

filter<S extends number[]>(predicate: (value: number[], index: number, array: number[][]) => value is S, thisArg?: any): S[] (predicate: (value: number[], index: number, array: number[][]) => unknown, thisArg?: any): number[][]

Returns the elements of an array that meet the condition specified in a callback function.

reduce(callbackfn: (previousValue: number[], currentValue: number[], currentIndex: number, array: number[][]) => number[]): number[] (callbackfn: (previousValue: number[], currentValue: number[], currentIndex: number, array: number[][]) => number[], initialValue: number[]): number[] <U>(callbackfn: (previousValue: U, currentValue: number[], currentIndex: number, array: number[][]) => U, initialValue: U): U

Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

reduceRight(callbackfn: (previousValue: number[], currentValue: number[], currentIndex: number, array: number[][]) => number[]): number[] (callbackfn: (previousValue: number[], currentValue: number[], currentIndex: number, array: number[][]) => number[], initialValue: number[]): number[] <U>(callbackfn: (previousValue: U, currentValue: number[], currentIndex: number, array: number[][]) => U, initialValue: U): U

Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

find<S extends number[]>(predicate: (value: number[], index: number, obj: number[][]) => value is S, thisArg?: any): S | undefined (predicate: (value: number[], index: number, obj: number[][]) => unknown, thisArg?: any): number[] | undefined

Returns the value of the first element in the array where predicate is true, and undefined otherwise.

findIndex(predicate: (value: number[], index: number, obj: number[][]) => unknown, thisArg?: any): number

Returns the index of the first element in the array where predicate is true, and -1 otherwise.

fill(value: number[], start?: number, end?: number): Links

Changes all array elements from start to end index to a static value and returns the modified array

copyWithin(target: number, start: number, end?: number): Links

Returns the this object after copying a section of the array identified by start and end to the same array starting at position target

entries(): ArrayIterator<[number, number[]]>

Returns an iterable of key, value pairs for every entry in the array

keys(): ArrayIterator<number>

Returns an iterable of keys in the array

values(): ArrayIterator<number[]>

Returns an iterable of values in the array

includes(searchElement: number[], fromIndex?: number): boolean

Determines whether an array includes a certain element, returning true or false as appropriate.

flatMap<U, This = undefined>(callback: (this: This, value: number[], index: number, array: number[][]) => U | readonly U[], thisArg?: This | undefined): U[]

Calls a defined callback function on each element of an array. Then, flattens the result into a new array. This is identical to a map followed by flat with depth 1.

flat<A, D extends number = 1>(this: A, depth?: D | undefined): FlatArray<A, D>[]

Returns a new array with all sub-array elements concatenated into it recursively up to the specified depth.

at(index: number): number[] | undefined

Returns the item located at the specified index.

Examples

import type { Links, MazeRecipe } from "@johnmorrisdotca/meikyuu";
import { buildMaze } from "@johnmorrisdotca/meikyuu";

const recipe: MazeRecipe = {shape:"square",w:5,h:5,algorithm:"backtracker",mode:"to-goal",seed:42};
const maze = buildMaze(recipe);
const value: Links = maze.links;
console.log(value);
[
  [ 1, 5 ],       [ 2, 0 ],
  [ 7, 3, 1 ],    [ 2, 4 ],
  [ 3 ],          [ 0, 6 ],
  [ 5, 11 ],      [ 8, 2 ],
  [ 9, 7 ],       [ 14, 8 ],
  [ 11 ],         [ 6, 12, 10 ],
  [ 11, 17, 13 ], [ 12 ],
  [ 19, 9 ],      [ 16 ],
  [ 15, 21 ],     [ 12 ],
  [ 23, 19 ],     [ 18, 24, 14 ],
  [ 21 ],         [ 16, 20, 22 ],
  [ 21, 23 ],     [ 22, 18 ],
  [ 19 ]
]

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/meikyuu 3.2.0.