Cage Expressions
Each cage total equals its expression. Letters stand for whole numbers and keep the same value throughout the rule. The distinct parameter gives different letters different values.
Parameters
| Parameter | Meaning | Default |
|---|---|---|
| cages | The cells in each cage and its expression or relation, as stated in the definition. | Required. |
| distinct | Whether different letters must have different values. | Required. |
Maths
Class: existential.
The shared predicates define the notation and every named predicate.
∃letterValues:list<position>:
|letterValues|=letterCount({g.expression:g∈cages}) ∧
(∀g∈cages: defined(g.expression,letterValues) ∧ eval(g.expression,letterValues)=sum_D(g.cells))
∧ (distinct → ∀i,j∈[0,|letterValues|): i!=j → letterValues[i]!=letterValues[j])
There is a shared assignment of integers to letters such that each evaluated expression equals its cage total. distinct requires different letters to have different values. Division is exact with nonzero divisor; powers require a nonnegative integer exponent.
Example
---
format: open-rules
title: Cage Expressions example
setter: Example
source: ""
case: ""
library: https://rules.sudoku-sleuth.com/
status: read
---
```rules
sudoku 9x9
cage-expressions cages [{"cells":["r1c1"],"expression":{"op":"letter","name":"A"}},{"cells":["r1c2"],"expression":{"op":"letter","name":"A"}}] distinct false
```
Satisfies the rule: r1c2=1, r1c1=1. Both cages can use the same value for A.
Breaks the rule: r1c2=2, r1c1=1. The cages require two different values for A.