FA-82071 / Poker hand evaluation / Open access
Scooping player paid only the low half · case 01
A player who wins both high and low is paid half the pot.
ROOT CAUSE
The low half payout overwrites the high half entry instead of adding to it.
VERIFIED REPAIR
Accumulate each half into the player's total.
Unsuccessful approach: Keeping the larger half still pays the scooper only one half.
Case contract
Input: {"pot", "high": [winners], "low": [qualifying low winners, possibly empty], "order": [seat order from the button's left]}. With a qualifying low the pot is halved, the odd chip going to the high half; each half is split among its winners with odd chips by seat order. Without a low, high winners scoop. A player winning both halves is paid both. Return {player: chips} sorted.
Why this case matters
Hi-lo games halve and quarter pots; the odd chip and scoop rules are frequent disputes.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
pot=x['pot']; order=x['order']
def split(amount, winners):
k=len(winners); share=amount//k; rem=amount-share*k
out={w:share for w in winners}
for w in [s for s in order if s in winners][:rem]:
out[w]+=1
return out
if x['low']:
low_half=pot//2; high_half=pot-low_half
parts=[split(high_half,x['high']), split(low_half,x['low'])]
else:
parts=[split(pot,x['high'])]
res={}
for part in parts:
for k,v in part.items():
res[k]=v
return dict(sorted(res.items()))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'error:' + type(exc).__name__
check(label, actual, expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| odd pot two winners | {'a': 51, 'b': 50} | {'a': 51, 'b': 50} | Passed |
| no low scoop | {'a': 100} | {'a': 100} | Passed |
| scoop both halves | {'a': 50} | {'a': 101} | Failed |
| quartered low | {'a': 50, 'b': 25, 'c': 25} | {'a': 50, 'b': 25, 'c': 25} | Passed |
| high and shared low with scooper | {'b': 23, 'c': 22} | {'b': 23, 'c': 67} | Failed |
| even pot | {'b': 40, 'c': 40} | {'b': 40, 'c': 40} | Passed |
| odd pot no low split high | {'a': 25, 'b': 26} | {'a': 25, 'b': 26} | Passed |
| small odd pot | {'a': 3, 'c': 4} | {'a': 3, 'c': 4} | Passed |
SHA-256 / efd4976fd168441d05800baf3908b04fd9e741f3b4767c79ef841a4a99ba45a4
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
pot=x['pot']; order=x['order']
def split(amount, winners):
k=len(winners); share=amount//k; rem=amount-share*k
out={w:share for w in winners}
for w in [s for s in order if s in winners][:rem]:
out[w]+=1
return out
if x['low']:
low_half=pot//2; high_half=pot-low_half
parts=[split(high_half,x['high']), split(low_half,x['low'])]
else:
parts=[split(pot,x['high'])]
res={}
for part in parts:
for k,v in part.items():
res[k]=max(res.get(k,0),v)
return dict(sorted(res.items()))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'error:' + type(exc).__name__
check(label, actual, expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| odd pot two winners | {'a': 51, 'b': 50} | {'a': 51, 'b': 50} | Passed |
| no low scoop | {'a': 100} | {'a': 100} | Passed |
| scoop both halves | {'a': 51} | {'a': 101} | Failed |
| quartered low | {'a': 50, 'b': 25, 'c': 25} | {'a': 50, 'b': 25, 'c': 25} | Passed |
| high and shared low with scooper | {'b': 23, 'c': 45} | {'b': 23, 'c': 67} | Failed |
| even pot | {'b': 40, 'c': 40} | {'b': 40, 'c': 40} | Passed |
| odd pot no low split high | {'a': 25, 'b': 26} | {'a': 25, 'b': 26} | Passed |
| small odd pot | {'a': 3, 'c': 4} | {'a': 3, 'c': 4} | Passed |
SHA-256 / 3da64b65f9a44c42618f9f496970b199d5236009c0fa41e9299a0969149053b2
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
pot=x['pot']; order=x['order']
def split(amount, winners):
k=len(winners); share=amount//k; rem=amount-share*k
out={w:share for w in winners}
for w in [s for s in order if s in winners][:rem]:
out[w]+=1
return out
if x['low']:
low_half=pot//2; high_half=pot-low_half
parts=[split(high_half,x['high']), split(low_half,x['low'])]
else:
parts=[split(pot,x['high'])]
res={}
for part in parts:
for k,v in part.items():
res[k]=res.get(k,0)+v
return dict(sorted(res.items()))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})],
[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},
{'a': 51, 'b': 50}),
('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),
('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),
('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},
{'a': 50, 'b': 25, 'c': 25}),
('high and shared low with scooper',
{'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),
('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},
{'b': 40, 'c': 40}),
('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},
{'a': 25, 'b': 26}),
('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},
{'a': 3, 'c': 4})]]
for label, args, expected in fixtures[N-1]:
try:
actual = solve(args)
except Exception as exc:
actual = 'error:' + type(exc).__name__
check(label, actual, expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| odd pot two winners | {'a': 51, 'b': 50} | {'a': 51, 'b': 50} | Passed |
| no low scoop | {'a': 100} | {'a': 100} | Passed |
| scoop both halves | {'a': 101} | {'a': 101} | Passed |
| quartered low | {'a': 50, 'b': 25, 'c': 25} | {'a': 50, 'b': 25, 'c': 25} | Passed |
| high and shared low with scooper | {'b': 23, 'c': 67} | {'b': 23, 'c': 67} | Passed |
| even pot | {'b': 40, 'c': 40} | {'b': 40, 'c': 40} | Passed |
| odd pot no low split high | {'a': 25, 'b': 26} | {'a': 25, 'b': 26} | Passed |
| small odd pot | {'a': 3, 'c': 4} | {'a': 3, 'c': 4} | Passed |
SHA-256 / 97cc244f7b5decd7f2ef226153619642926b0770672ef12b9fcd9f49f39393a6
Verification & scope
A deterministic toy model with an explicitly stated contract; no claim of conformance to any casino or tournament rulebook. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:08.832646+00:00.
Case digest / 303ffea7bb3bbabd266ab43587e85bbe8e6ccd0e6b1e5709bdcb12ad49a0f114