scrabble: single-word-per-turn rule via PlayOptions #2
Reference in New Issue
Block a user
Delete Branch "feat/single-word-rule"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds an optional single word per turn rule (
PlayOptions{IgnoreCrossWords}): only the main word along the play direction is validated and scored; perpendicular cross-words are neither formed, validated, scored, nor used to constrain move generation. The zeroPlayOptionsstays standard Scrabble, so existing callers are unchanged.EvaluateOpts,Solver.{ScorePlay,ValidatePlay,GenerateMoves}Optsand the DAWG generator (relaxed cross-sets viafullSet, main-word-only scoring).connected()now tests perpendicular adjacency directly instead of viaMove.Cross, so an all-new main word touching the board only sideways still connects when cross-words are suppressed (behaviour-preserving for standard play).solver_opts_test.go) + a single-word GCG fixture; the 17 real-game GCG fixtures stay green as the standard-rules regression guard.This is the engine dependency for scrabble-game's "multiple words per turn" feature; once merged it is tagged v1.1.0 (minor, backward-compatible).
Add an optional "single word per turn" rule: only the main word along the play direction is validated and scored; perpendicular cross-words are ignored — not formed, validated, scored, or used to constrain move generation. The zero PlayOptions stays standard Scrabble, so existing callers are unchanged. - PlayOptions{IgnoreCrossWords} threaded through new EvaluateOpts, Solver.{ScorePlay,ValidatePlay,GenerateMoves}Opts and the DAWG generator (relaxed cross-sets via fullSet, main-word-only scoring). - connected() tests perpendicular adjacency directly instead of via Move.Cross, so an all-new main word touching the board only sideways still connects when cross-words are suppressed (behaviour-preserving for standard play). - Tests: focused corner-case suite (solver_opts_test.go) and a single-word GCG fixture; the 17 real-game GCG fixtures stay green as the standard-rules regression guard.