Skip to content

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 00:06

Every level up to 15×15 keeps its number, its board and its answer, and every export, board code and
answer of 1.4.0 reads as it did. New: boards up to 30×30, and portals.

Added

  • Boards of 20×20, 25×25 and 30×30, 64 fixed levels each, easiest first, each proved to have exactly
    one answer (levels-20, levels-25, levels-30; TSUNAGI_SIZES gains the three). The 15th and 16th
    of each block of sixteen teach and test a twist, block by block: walls, wrap, portals, explosions.
    Wrap works at the new sizes too. Such boards are not found by luck, so they are made by taking clues
    away (reducedCandidate, src/reduce.ts): a filling is cut into short lines and neighbours are joined
    while the solver can still prove one answer within a budget of dead ends. The proof of a 30×30 takes
    about a second, and making one takes a median 25 to 66 seconds on one core (see the README for the
    measurements).
  • Portals. A portal is a pair of empty cells: a line that goes into one comes out of the other,
    going the same way. Both rings are cells the line fills, and each portal is gone through by exactly
    one line, once. In the code as a tail word, |portals<a>-<b>,…; LinkLayout.portalPairs and .portals;
    portalExit; a step across a portal has through; the solver, the checker (still O(cells)), the
    generator, transformed, the difficulty measure, Cheat, explosions and progress codes all know them.
    A drag that goes into a ring carries on out of its partner (dragFinger, Reach). Drawn as two rings
    alike, in a colour and a Greek letter, with a faint link to the partner on hover or tap; a twist,
    "portals", on the ladder.
  • A second set of levels with portals: 32 at each of 5×5 to 10×10, 12×12 and 15×15, in two blocks
    of sixteen (levels-portals, TSUNAGI_PORTAL_SIZES, TSUNAGI_PORTAL_COUNTS, TSUNAGI_PORTAL_SEED).
    The loaders, the element and mountTsunagi take a set ("classic" or "portals"), and the demo has a
    set row.
  • 82 pairs. The alphabet grows from 16 to 82 letters (PAIR_LETTERS), and each pair has its own
    colour (TSUNAGI_COLOURS grows to 82, the first 16 as they were). A board of 36 pairs or more has no
    waypoints, since the small letters are then stones.
  • Redrawing one pair. drawTsunagi groups a board's washes, beads and ghosts by pair, and
    drawTsunagiPair(layout, pair, id, options) makes one pair's. mountTsunagi patches only the pairs a
    move changed (a board with bridges is redrawn whole). On a phone-sized Chromium with the processor slowed
    four times, a move on a full 30×30 board is handled in a median 2.7 ms where redrawing everything took 18.2.
  • A binary encoding in the solver, for boards of 16×16 and up and for portals
    (countSolutionsSat(layout, limit, budget, guide, colours), SatColours), and
    countSolutionsOfLevel(layout, answer), which proves a level from its own answer.
    Boards up to 15×15 are searched as before, so no existing measurement changes.

Changed

  • The README's Limits, API, Making levels and Architecture sections cover the above; docs/strings-ja.md
    has the new words (portal, portals, portalsSays) in English and Japanese.