fix(engine): single-word rule connects along the play line
CI / changes (pull_request) Successful in 1s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 12s
CI / ui (pull_request) Has been skipped
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m11s
CI / changes (pull_request) Successful in 1s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 12s
CI / ui (pull_request) Has been skipped
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m11s
Bumps the engine to scrabble-solver v1.1.1, where a single-word-per-turn play must form its word along its own line through an existing tile: a multi-tile play that touches the board only perpendicular to itself (the contour РЮМ/КЕД/ОР cases) no longer connects. For a single tile that abuts the board on both axes the engine now plays the higher-scoring legal orientation instead of the geometrically longer one (playDirection), so a real word is never rejected in favour of a non-word. Reworks the single-word solver/engine tests for the corrected rule (no longer a superset of standard play) and updates ARCHITECTURE/FUNCTIONAL/PRERELEASE.
This commit is contained in:
@@ -301,10 +301,15 @@ Key points:
|
||||
**single-word rule**, chosen on New Game (default **off** = single word; on = standard
|
||||
Scrabble). Off, only the **main word** along the play direction is validated and scored —
|
||||
perpendicular cross-words are ignored, including in robot move generation and the
|
||||
unlimited move preview; on, every cross-word must be a real word and is scored. The
|
||||
engine threads it as
|
||||
`scrabble.PlayOptions{IgnoreCrossWords}` (solver `v1.1.0`); connectivity and the
|
||||
first-move centre rule are unaffected. The "Russian-only" limit is a **UI affordance**:
|
||||
unlimited move preview; on, every cross-word must be a real word and is scored. The main
|
||||
word must still run **through an existing tile along its own line** to connect: a play that
|
||||
forms no word along the direction it is laid — touching the board only perpendicular to
|
||||
itself — is illegal even though its cross-word is never checked, and for a single tile that
|
||||
abuts the board on both axes the engine plays the higher-scoring legal orientation. The
|
||||
single-word rule is therefore **not a superset** of the standard rule: it forbids parallel
|
||||
plays the standard rule allows and admits in-line plays whose cross-words are invalid. The
|
||||
engine threads it as `scrabble.PlayOptions{IgnoreCrossWords}` (solver `v1.1.1`); the
|
||||
first-move centre rule is unaffected. The "Russian-only" limit is a **UI affordance**:
|
||||
the backend and engine are variant-agnostic about the flag, and English games always send
|
||||
it on (standard). For auto-match the rule is part of the matchmaking key, so only players
|
||||
who chose the same rule are paired (the rule field rides every create/enqueue request, so
|
||||
|
||||
+2
-1
@@ -93,7 +93,8 @@ takes the empty seat after **1.5–3 minutes**, so a game always starts — and
|
||||
you can close the app while you wait and come back later. For Russian games (auto-match or friend
|
||||
invitation), New Game also offers **"Multiple words per turn"** (default **off**): off plays
|
||||
the simplified **single-word rule** — only the word laid along the player's line must be a
|
||||
real word, and any incidental perpendicular words are ignored and not scored — while on is
|
||||
real word (and it must still cross or extend letters already on the board along that line),
|
||||
and any incidental perpendicular words are ignored and not scored — while on is
|
||||
standard Scrabble. English games are always standard and show no such toggle. In auto-match
|
||||
the choice joins the pairing key, so a player only meets opponents who picked the same rule. Friend games (2–4) are
|
||||
formed by inviting players from the friend list (an invitation, like a friend code,
|
||||
|
||||
@@ -96,7 +96,8 @@ nudge) приходят от бота **этой партии** — по язы
|
||||
позже. Для русских игр (авто-подбор или приглашение) на экране
|
||||
новой игры есть опция **«Несколько слов за ход»** (по умолчанию **выключена**): выключена —
|
||||
упрощённое **правило одного слова**: настоящим словом должно быть только слово, выложенное
|
||||
вдоль линии хода, а случайные перпендикулярные слова игнорируются и не засчитываются;
|
||||
вдоль линии хода (и оно должно пересекать или продолжать уже стоящие на доске буквы вдоль
|
||||
этой линии), а случайные перпендикулярные слова игнорируются и не засчитываются;
|
||||
включена — обычный скрэббл. Английские игры всегда по стандартным правилам и тоггл не
|
||||
показывают. В авто-подборе выбор входит в ключ подбора, поэтому игрок сводится только с теми,
|
||||
кто выбрал то же правило. Игры с друзьями (2–4)
|
||||
|
||||
Reference in New Issue
Block a user