Skip to the content

Jarajaraジャラジャラ

Draw mahjong tiles, arrange racks and stacked boards, and play seeded Awase alone or at a shared table.

Jarajara is the Japanese sound of mahjong tiles rattling together. About the name

Contents

Reference · Tiles, layouts and deals

shuffleTilesfunction

SHUFFLE: the tiles left, laid again in the slots they fill, so that play can go on. Drawn from the tiles themselves and how many shuffles came before (index), never from Math.random, so a solve replayed on the server — or a kept game opened again — shuffles to exactly the same tiles.

Laid in reverse, as a deal is, so what is left can be finished whenever the slots allow it. When they do not (two tiles stacked, nothing beside them), the tiles are laid with one matching pair on two free slots, so the next move exists; and where not even two slots are free, no shuffle can help and this answers null.

Import it

import { shuffleTiles } from "@johnmorrisdotca/jarajara";

Definition

function shuffleTiles(geometry: MahjongGeometry, cells: MahjongCells, rule: MahjongBonusRule, index: number): MahjongCells | null

Parameters

NameTypeDescription
geometryMahjongGeometry

The stacked layout’s covering and side-blocking relationships.

cellsstring

The face-code string in native slot order; dot marks a removed tile.

ruleMahjongBonusRule

Grouped or identical bonus matching.

indexnumber

The shuffle count or slot index specified by the signature.

Returns

string | null

The remaining tiles laid again deterministically, or null when no clearable laying can be produced.

Examples

import { generateAwase } from "@johnmorrisdotca/jarajara/awase";
import { geometryOf, layoutFor, shuffleTiles } from "@johnmorrisdotca/jarajara";

const deal = generateAwase(4,"easy",2026);
const layout = layoutFor(4)!;
const geometry = geometryOf(layout);
const cells = deal.givens;
console.log(shuffleTiles(geometry,cells,"group",1));
NBBPDxxD

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/jarajara 1.7.0.