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
| Name | Type | Description |
|---|---|---|
geometry | MahjongGeometry | The stacked layout’s covering and side-blocking relationships. |
cells | string | The face-code string in native slot order; dot marks a removed tile. |
rule | MahjongBonusRule | Grouped or identical bonus matching. |
index | number | 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));NBBPDxxDWhat it prints (run when this page was built)