FAILURE MAP
← Case archive

FA-83431 / Card game rule engines / Open access

Taking all hearts without the queen counts as shooting the moon · case 01

A player with 13 hearts but not QS is treated as a shooter.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Moon detection counts only hearts.

VERIFIED REPAIR

Moon requires all 26 penalty points.

Unsuccessful approach: Ignoring moons whenever the shooter also took JD misses legitimate moons under the jack rule.

Case contract

Input [cards_taken_by_each_player, jack_rule]. Each heart is 1, QS 13. A player taking all 26 penalty points shoots the moon: they score 0 and every other player 26. With jack_rule the taker of JD then scores -10. Return the list of round scores.

Why this case matters

Card-game engines, scoring apps and online tables apply this rule automatically on every hand.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    taken, jd = x
    pts = []
    for cards in taken:
        s = sum(1 for c in cards if c[1] == 'H')
        if 'QS' in cards:
            s += 13
        pts.append(s)
    moon = [i for i, cards in enumerate(taken) if sum(1 for c in cards if c[1] == 'H') == 13]
    if moon:
        shooter = moon[0]
        pts = [0 if i == shooter else 26 for i in range(len(taken))]
    if jd:
        for i, cards in enumerate(taken):
            if 'JD' in cards:
                pts[i] -= 10
    return pts
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[['KC', 'TS', '2C', '5H', '6H', '4D', '2S', '5S', '4S', '6S'], ['TD', 'KS', '9C', 'JD', 'QC', 'QH', '6C', 'AS', '3C', '9S', 'KD', '3D', 'AC', '8C'], ['3S', '5C', '6D', 'QS', '2D', 'QD', '8D', '8S', '4H', '7C', 'AD'], ['AH', 'TC', '4C', '7S', '3H', '9D', '9H', '8H', 'JS', 'KH', 'JH', '7H', 'TH', '5D', '2H', 'JC', '7D']], True], [2, -9, 14, 9]], [[[['9H', 'JD', '4D', '8C', '9C', '7C', '9S', '7H', '2S', '8D', 'AC', '3H', 'QC', '2H'], ['9D', 'AS', 'JS', '4S', '5S', 'TS', '3D', 'QH', '4H', '2D', '5C', '7D', '3S', '5H', 'JH'], ['KH', '5D', 'AH', 'KC', 'TC', 'QS', '8H', 'QD', '6H', '6C', 'AD'], ['7S', '3C', '2C', '6S', 'TD', '8S', '4C', 'KS', 'JC', 'KD', '6D', 'TH']], False], [4, 4, 17, 1]], [[[['8C', '6S', '2H', 'KS', 'QH', '7D', '8S', '5D', 'AD', '5H', '5S', 'KH', 'JH', '9S', '3D', '4H', '7H'], ['TS', '8D', '4D', '2C', 'TD', '2D', 'QC', 'KD', 'TC', '4C', '3H'], ['4S', 'TH', '6C', 'QS', '2S', 'AH', 'QD', '3S', 'JC'], ['AS', '8H', '5C', '9D', '6D', '9H', '6H', 'AC', '9C', 'JD', 'KC', '7S', 'JS', '7C', '3C']], False], [7, 1, 15, 3]], [[[['TD', '7S', '6S', 'AC', 'JS', '5C', '3S', '6C', '4D', '2D', 'JC', 'QD'], ['7D', '6H', '7C', 'KC', '3C', '8H', '3H', 'TH', '9H', 'KD', 'AS', '4H', '7H', '8S', 'AD', 'KH', '2H', '5H', 'AH', 'QS', 'QH', 'JH', '8C'], ['9S', '6D', 'TC', '5D', '2C', 'JD', '9D', '9C', '3D', '5S'], ['KS', '4S', '4C', 'QC', '2S', '8D', 'TS']], True], [26, 0, 16, 26]], [[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['3H', '6D', '9D', '7D', '7H', '4C', '5D', '3D', '5S', '9C', 'AD', '6S', '8H', '6H', 'QC', '3S', 'QH', 'KH'], ['7C', '4H', '9S', '8S', '2D', 'TC', '3C', '6C'], ['QD', '2H', 'KD', '8D', 'KS', 'JD', '5H', 'TS', '4D', '4S', 'AC', 'JH', '7S', '2S', 'AH'], ['QS', '5C', '2C', '8C', 'KC', 'JS', 'JC', 'AS', 'TD', 'TH', '9H']], False], [6, 1, 4, 15]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]], [[[[['2C', 'KS', '6C', '2H', '4H', '6S', '6D', 'QD', '4S', 'QS', '8H', 'AH', '9D'], ['JS', 'JC', '6H', '3H', '7D', '4C', '9S', '7H', '7S', '3D', 'TS', 'JD', '4D', 'AS', '7C', 'TD'], ['TC', '5H', 'KH', '8C', '5D', '9H'], ['JH', '3S', 'KC', 'QC', '9C', 'KD', 'TH', 'AC', '8D', '8S', '5C', '5S', '3C', 'AD', '2D', '2S', 'QH']], False], [17, 3, 3, 3]], [[[['2H', '4S', '9C', '3C', 'TS', '7H', 'QS', '5D', 'AS', '9H', 'TH', 'JS', '7C', 'TD', 'JH', 'KD', 'TC'], ['8H', 'QH', '4C', '7D', '2S', '8C', '7S', 'KC'], ['6C', '9D', 'QC', 'JD', '5C', 'AC', '6H', '6D', '3D', '4D', '2D', 'AH', '9S', 'KH'], ['AD', '8S', 'JC', '8D', '2C', '5H', '3S', '3H', '4H', 'KS', '6S', '5S', 'QD']], True], [18, 2, -7, 3]], [[[['5C', '4C', '5S', '7C', 'KD', '7S'], ['AC', '2S', '4D', '6D', '5D', '9S', 'QC'], ['8H', '4S', 'JH', 'QS', '3C', 'JC', '6H', '4H', '2H', 'AS', 'AH', 'KH', '9D', 'QH', '7H', '5H', 'KC', 'TD', '3H', 'TC', 'TH', '9H', '6C', '2C', 'KS'], ['8D', '8C', 'JS', 'QD', 'AD', '8S', '3S', '3D', '7D', 'TS', '6S', 'JD', '2D', '9C']], True], [26, 26, 0, 16]], [[[['AS', 'QH', '6H', 'AH', 'KH', '5H', 'KC', '7H', '7D', 'JH', 'TD', '3H', 'TC', '3D', 'KS', '2H', '5C', '8H', 'QS', 'AC', '9H', 'TH', '8C', '4H', 'JC'], ['9S', 'KD', '7C', 'JS', '2S', '9C', '2D', '3C'], ['3S', 'QC', '7S', '2C', '5D', '4S', '9D', '6C', '8S', '6D', '5S'], ['JD', '8D', '6S', 'QD', '4C', '4D', 'TS', 'AD']], False], [0, 26, 26, 26]], [[[['9H', 'KS', '4D', 'TH', 'TC', '3D', '7H', 'KC', 'QD', '9S', 'JH'], ['4S', 'AS', '2H', '9C', '8S', 'TS', '2C', '8D', 'JC', '5C', 'KD', '5H', '7S'], ['AH', '9D', '6S', '8H', '8C', 'TD', '3S', 'QC', 'KH', 'AD', 'JD', 'JS', 'QS', '6H', '7D'], ['AC', '2D', '4C', '3C', '7C', '3H', '6C', '5D', '5S', 'QH', '2S', '4H', '6D']], True], [4, 2, 7, 3]], [[[['4S', '4H', 'TS', '7C', '7D', '9H', 'TH', 'JS', '8S', 'QD', 'JC', 'AC'], ['3H', 'TD', '5H', '2S', '2D', '3S', '3C', '5C', '9D', '9C', '6D', 'AS', 'QC'], ['8C', 'JH', '5S', '7H', '6H', '9S', 'QS', 'QH', 'JD', 'AH', '4C', '8D', 'KS', '2C', 'AD', 'KH', '4D'], ['6S', '3D', '2H', '6C', 'KD', 'KC', '8H', '7S', 'TC', '5D']], True], [3, 2, 9, 2]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH']], False], [0, 13, 0, 13]]], [[[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['8S', 'QH', '4H', '5D', 'QS', '5S', 'AH', 'TD', '5H', 'TH', '6S', '7S', '9H'], ['9C', '2S', 'QD', 'JH', '7D', '8C', '7C', '4C', 'QC', '3D', 'AS', 'KC', 'JC'], ['6H', '4D', 'KD', 'JD', '3S', 'AD', '2D', '6D', '9D'], ['TS', '3C', '9S', '8D', '4S', '2H', 'JS', '2C', '6C', '3H', 'KS', '5C', 'TC', 'AC', '7H', 'KH', '8H']], False], [19, 1, 1, 5]], [[[['JS', '8H', 'TH', '4C', '6S', '7S', 'AD', 'KC', 'JD', '4D', '7C', '7D', 'AC', 'TS', '7H'], ['TD', 'QS', '6C', 'KS', '2H', 'TC', 'AS', '2D', '9D', '3D', '5S', '4H', 'QC', 'KH', '8S', 'QH'], ['9S', '9H', '2S', '6D', '5H', '4S', '8C', '3S', '6H', '3H', '8D'], ['AH', '5D', '2C', 'JH', 'JC', '5C', 'KD', '9C', 'QD', '3C']], True], [-7, 17, 4, 2]], [[[['9H', 'JD', '8H', 'QH', 'JH', '9D', 'QS', '5H', '6H', '3H', 'AH', '5D', '2H', 'JC', 'AC', '4H', '6D', 'TH', 'KH', '2C', '7H', '4D', 'QD'], ['7D', 'JS', '9S', '6S', 'TC', '5C', '8C'], ['7S', '2D', '5S', 'QC', 'KC', '8S', '4S', 'TS', '3S', '3C', '9C', '4C', '7C'], ['KD', '6C', '2S', '3D', '8D', 'AD', 'AS', 'KS', 'TD']], True], [-10, 26, 26, 26]], [[[['3D', '6D', '5S', '2D', 'KD', '4D', 'TS', 'QS', '9S'], ['3S', '9C', '3C', 'TD', 'QH', '2S', '8H', '7S', 'TH', '7H', 'KC', '6S', 'TC', 'JD', '9H', 'AH', '5D', 'JS', '5C'], ['AS', 'KS', 'QD', 'KH', '4H', 'JH', '4C', '7D', '6H', '5H', '8C'], ['2H', '9D', 'AD', '2C', 'QC', '6C', 'AC', 'JC', '8D', '8S', '7C', '4S', '3H']], False], [13, 6, 5, 2]], [[[['TH', '2H', '2D', '8H', '9D', 'KC', 'AD'], ['TD', 'QS', 'AS', '8S', '3C', 'QD', '4C', '4S', 'JD', 'TS', '2S', '7S', '6C', '3S', '8C', 'QC', '4H'], ['7C', 'AH', '2C', 'KD', '4D', 'AC', '5H', '6H', '6D', 'TC', '7H', 'JS', 'QH', '9C', '5D', '9H', '3H'], ['8D', '9S', '7D', '5S', 'JC', 'JH', '5C', 'KS', 'KH', '6S', '3D']], False], [3, 14, 7, 2]], [[[['7D', 'QH', 'AC', 'JC', '5H', '4C', '9S'], ['AH', 'JS', 'TC', '5D', 'TH', '9H', '8D', 'KC', '7S', '3S', '2S', '5S', '7C', 'TS', 'KD', '8C', '7H', 'AD', 'KH', '3H', '6C', '2D'], ['QD', '5C', '8S', 'QC', 'QS', '2C', '4S', 'TD', 'KS', '2H', '6D'], ['3C', 'AS', '4H', 'JD', '6S', '9D', '9C', '6H', '3D', 'JH', '4D', '8H']], False], [2, 6, 14, 4]], [[[['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD']], True], [13, 0, 13, -10]]], [[[[['3C', 'TS', '2H', '7D', '9S', '9C', '7H', 'AS', 'KS', 'JH', 'KD', '4D', '6C', 'KH', '3H', '8H', '8C', '5H', '4H', 'QH', '6H', '9H', 'AH', 'TH', 'QS'], ['QC', '4C', '2D', 'AC', '4S', 'JD', '8D', '5C'], ['6D', '6S', '5S', '2C', '9D', '7S', 'QD', '8S', 'TD', 'KC', 'TC', 'JS', 'AD'], ['3D', '7C', 'JC', '5D', '3S', '2S']], True], [0, 16, 26, 26]], [[[['3S', 'TC', '4H', 'AD', 'AH', 'KD', '7S', '2D', '5H', '6H', 'JD', '6D', 'KS'], ['7H', 'JH', 'TD', '8C', 'QD', '2C', '4D', 'KC', '5D', '9D', '7C', 'QS', '5S', 'KH', '8D', 'AC'], ['3D', '2S', '3H', '9S', '8H', '7D', 'TH', '8S', '6S', 'JC'], ['2H', '3C', '5C', '9H', 'QH', '4S', 'JS', '4C', 'QC', '9C', '6C', 'TS', 'AS']], False], [4, 16, 3, 3]], [[[['6C', '5D', '2H', 'JD', '7H', '6S', '6D', '3H', '8H', 'QC', '5H', 'TD', '5C'], ['3C', '4H', 'JH', '7S', 'KS', 'JS', 'AH', '8C', '8S'], ['9S', '6H', 'KC', '3D', 'KH', 'TH', '8D', 'QS', '2D', 'AD', '9C', 'AC', '2C', 'TS', 'KD', '9H', '4C', '5S'], ['AS', '9D', '2S', 'QD', '7D', 'TC', '7C', '4D', '4S', 'QH', '3S', 'JC']], False], [5, 3, 17, 1]], [[[['QD', 'JD', 'JH', 'QH', 'TH', 'KC', '7H', '4C', '3D', '4H', 'KH', '7S', 'TD', 'TC', 'QS', '8H', '6D', '6H', '9C', '9H', '5H', 'AH', '2H', '3H'], ['8C', '2S', '5S', '7D', 'JC', '6S', 'KD', 'AD', '9S', '3C', '2C'], ['8D', '8S', '5C', '9D', '3S', '5D', '4D', 'AS', '4S'], ['JS', 'AC', 'QC', 'TS', '6C', 'KS', '7C', '2D']], True], [-10, 26, 26, 26]], [[[['8C', '2D', '4S', '6C', '9C', '3S', 'JD', '5D', 'JC', 'AC', '2C'], ['8D', 'JH', 'KH', '3D', '6H', 'AH', '8S', 'TH', '9H', '5C', '8H', 'QS', 'QH', 'TD', '2H', '3H', '5H', '6D', '4C', '4H', '7H', 'KS', '2S', '6S'], ['TC', 'QC', '7D', '5S', 'TS', 'AD', 'KD', '7S', 'KC', '9D', '4D'], ['9S', 'QD', 'AS', 'JS', '3C', '7C']], True], [16, 0, 26, 26]], [[[['QH', 'TD', 'JD', '7C', 'QS', '4H', '8C', 'JS', '5S', 'AS', '3H', '3D', '2C', '2S', '6C', '5H', '5D', '7H'], ['TH', 'TS', 'AH', '8H', '8S', '5C', 'TC'], ['4S', '3C', '3S', '2H', 'KH', '7D', '6S', '9C', '6H', '9S', '6D', 'KS', 'JC', '4C'], ['QD', 'QC', 'AD', 'KC', '4D', '8D', '7S', '2D', 'JH', '9D', '9H', 'AC', 'KD']], False], [18, 3, 3, 2]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC']], False], [0, 13, 0, 13]]], [[[[['5D', '4S', '3S', '9H', '6D', '8S', 'QC', 'AC', '8C', '7S', 'TH', 'TC', '6C', '3H', '3D', '7D', 'TS', '5S', 'KH'], ['KD', '3C', '2D', '9S', 'QD', '4H', '7C', 'JD', 'JC', '7H', '9C'], ['KS', 'AH', '9D', '8H', '2S', 'AS', 'TD', '6S', '8D', '2C', 'AD', '4D', 'KC'], ['2H', 'JS', 'QS', 'QH', '5H', 'JH', '6H', '4C', '5C']], True], [4, -8, 2, 18]], [[[['AD', 'KD', 'KH', 'TD', '7H', '8S', '6S', 'TS', 'AS', '7C'], ['2D', '6D', 'JC', 'JS', 'JH', '3C', '9C', '5D', '2S', 'AC', '8D', '9S', '3D', 'QC', '5H', 'QD'], ['4C', 'QS', 'TH', '9H', 'TC', '4D', '5S', '2H', '9D', '6H', '3S', 'KC'], ['AH', '5C', '6C', '7S', '2C', 'QH', '3H', '7D', 'KS', '4S', '4H', '8H', '8C', 'JD']], False], [2, 2, 17, 5]], [[[['7H', 'KH', '3D', 'TC', '6D', '6C', '2C', 'TS', '8S', '8D', 'JD', 'AH', '4H', 'TD', 'AC'], ['5D', '9S', '3S', 'QS', 'KS', '9C', '6H', '9D', 'QC', 'QH', '7D', 'AD', '3H', 'JC', 'TH', '5H', '3C', '4S', '7C'], ['JS', '2D', '4C', 'JH', 'QD', 'KC', 'KD', '2H', '6S'], ['8C', 'AS', '5C', '9H', '7S', '2S', '5S', '8H', '4D']], False], [4, 18, 2, 2]], [[[['TS', 'AS', 'KC', 'JS', 'QD', '8S', '4H', 'JC', '2H', '4S', '7S', '6D', 'JD', 'KD', '5D', 'TD', 'JH'], ['KS', '3D', '8C', '2D', '7D', '3C', '7C', '8H', 'AH', '4D', '9C', '5C', 'AC', '6C'], ['5H', '3H', '9H', '9S', '2S', 'KH', '2C'], ['TH', '8D', '4C', 'QC', 'QH', 'AD', 'TC', '5S', '7H', 'QS', '3S', '9D', '6H', '6S']], False], [3, 2, 4, 17]], [[[['9D', '9C', '7S', '5S', '8S', '2S', '4S', '2C', 'AS', '6C', '7C', 'JC', 'QC', '8C', 'KS'], ['JS', '2D', 'KD', 'QD', 'TD', 'KC', '4C'], ['JD', 'TS', '3S', '5C', '6D', 'AC', '4D'], ['5H', '9H', 'TH', 'KH', 'TC', '8D', '9S', '4H', '7H', '8H', '6S', 'JH', '6H', '5D', 'AD', '3D', 'QS', '3C', '7D', '2H', 'AH', '3H', 'QH']], True], [26, 26, 16, 0]], [[[['TH', '7C', '8S', '2S', '6C', '5C', '4H', '6S', '5H', '9D', '7S', '5S', '2H', 'TS', 'KS'], ['4C', 'QD', '3C', 'JD', '7H', '3S', 'TD', 'AH', '4D', '9H', 'JC', '6H', '4S'], ['JS', 'JH', 'QH', '9S', 'KD', 'QC', '6D'], ['AS', '3H', 'KH', '2C', 'AD', 'TC', '2D', 'AC', 'KC', 'QS', '9C', '7D', '8H', '3D', '8C', '5D', '8D']], False], [4, 4, 2, 16]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("round score case %d" % i, solve(args), 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 fixtureActualExpectedOutcome
round score case 0[2, -9, 14, 9][2, -9, 14, 9]Passed
round score case 1[4, 4, 17, 1][4, 4, 17, 1]Passed
round score case 2[7, 1, 15, 3][7, 1, 15, 3]Passed
round score case 3[26, 0, 16, 26][26, 0, 16, 26]Passed
round score case 4[-10, 26, 26, 26][-10, 26, 26, 26]Passed
round score case 5[6, 1, 4, 15][6, 1, 4, 15]Passed
round score case 6[26, -10, 26, 26][26, -10, 26, 26]Passed
round score case 7[0, 16, 26, 26][13, -10, 13, 0]Failed

SHA-256 / 8b15b54567080ac8140ab93f55da8daad2ac2a2996e808ada03aa3c733afdec6

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    taken, jd = x
    pts = []
    for cards in taken:
        s = sum(1 for c in cards if c[1] == 'H')
        if 'QS' in cards:
            s += 13
        pts.append(s)
    moon = [i for i, cards in enumerate(taken) if pts[i] == 26 and 'JD' not in cards]
    if moon:
        shooter = moon[0]
        pts = [0 if i == shooter else 26 for i in range(len(taken))]
    if jd:
        for i, cards in enumerate(taken):
            if 'JD' in cards:
                pts[i] -= 10
    return pts
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[['KC', 'TS', '2C', '5H', '6H', '4D', '2S', '5S', '4S', '6S'], ['TD', 'KS', '9C', 'JD', 'QC', 'QH', '6C', 'AS', '3C', '9S', 'KD', '3D', 'AC', '8C'], ['3S', '5C', '6D', 'QS', '2D', 'QD', '8D', '8S', '4H', '7C', 'AD'], ['AH', 'TC', '4C', '7S', '3H', '9D', '9H', '8H', 'JS', 'KH', 'JH', '7H', 'TH', '5D', '2H', 'JC', '7D']], True], [2, -9, 14, 9]], [[[['9H', 'JD', '4D', '8C', '9C', '7C', '9S', '7H', '2S', '8D', 'AC', '3H', 'QC', '2H'], ['9D', 'AS', 'JS', '4S', '5S', 'TS', '3D', 'QH', '4H', '2D', '5C', '7D', '3S', '5H', 'JH'], ['KH', '5D', 'AH', 'KC', 'TC', 'QS', '8H', 'QD', '6H', '6C', 'AD'], ['7S', '3C', '2C', '6S', 'TD', '8S', '4C', 'KS', 'JC', 'KD', '6D', 'TH']], False], [4, 4, 17, 1]], [[[['8C', '6S', '2H', 'KS', 'QH', '7D', '8S', '5D', 'AD', '5H', '5S', 'KH', 'JH', '9S', '3D', '4H', '7H'], ['TS', '8D', '4D', '2C', 'TD', '2D', 'QC', 'KD', 'TC', '4C', '3H'], ['4S', 'TH', '6C', 'QS', '2S', 'AH', 'QD', '3S', 'JC'], ['AS', '8H', '5C', '9D', '6D', '9H', '6H', 'AC', '9C', 'JD', 'KC', '7S', 'JS', '7C', '3C']], False], [7, 1, 15, 3]], [[[['TD', '7S', '6S', 'AC', 'JS', '5C', '3S', '6C', '4D', '2D', 'JC', 'QD'], ['7D', '6H', '7C', 'KC', '3C', '8H', '3H', 'TH', '9H', 'KD', 'AS', '4H', '7H', '8S', 'AD', 'KH', '2H', '5H', 'AH', 'QS', 'QH', 'JH', '8C'], ['9S', '6D', 'TC', '5D', '2C', 'JD', '9D', '9C', '3D', '5S'], ['KS', '4S', '4C', 'QC', '2S', '8D', 'TS']], True], [26, 0, 16, 26]], [[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['3H', '6D', '9D', '7D', '7H', '4C', '5D', '3D', '5S', '9C', 'AD', '6S', '8H', '6H', 'QC', '3S', 'QH', 'KH'], ['7C', '4H', '9S', '8S', '2D', 'TC', '3C', '6C'], ['QD', '2H', 'KD', '8D', 'KS', 'JD', '5H', 'TS', '4D', '4S', 'AC', 'JH', '7S', '2S', 'AH'], ['QS', '5C', '2C', '8C', 'KC', 'JS', 'JC', 'AS', 'TD', 'TH', '9H']], False], [6, 1, 4, 15]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]], [[[[['2C', 'KS', '6C', '2H', '4H', '6S', '6D', 'QD', '4S', 'QS', '8H', 'AH', '9D'], ['JS', 'JC', '6H', '3H', '7D', '4C', '9S', '7H', '7S', '3D', 'TS', 'JD', '4D', 'AS', '7C', 'TD'], ['TC', '5H', 'KH', '8C', '5D', '9H'], ['JH', '3S', 'KC', 'QC', '9C', 'KD', 'TH', 'AC', '8D', '8S', '5C', '5S', '3C', 'AD', '2D', '2S', 'QH']], False], [17, 3, 3, 3]], [[[['2H', '4S', '9C', '3C', 'TS', '7H', 'QS', '5D', 'AS', '9H', 'TH', 'JS', '7C', 'TD', 'JH', 'KD', 'TC'], ['8H', 'QH', '4C', '7D', '2S', '8C', '7S', 'KC'], ['6C', '9D', 'QC', 'JD', '5C', 'AC', '6H', '6D', '3D', '4D', '2D', 'AH', '9S', 'KH'], ['AD', '8S', 'JC', '8D', '2C', '5H', '3S', '3H', '4H', 'KS', '6S', '5S', 'QD']], True], [18, 2, -7, 3]], [[[['5C', '4C', '5S', '7C', 'KD', '7S'], ['AC', '2S', '4D', '6D', '5D', '9S', 'QC'], ['8H', '4S', 'JH', 'QS', '3C', 'JC', '6H', '4H', '2H', 'AS', 'AH', 'KH', '9D', 'QH', '7H', '5H', 'KC', 'TD', '3H', 'TC', 'TH', '9H', '6C', '2C', 'KS'], ['8D', '8C', 'JS', 'QD', 'AD', '8S', '3S', '3D', '7D', 'TS', '6S', 'JD', '2D', '9C']], True], [26, 26, 0, 16]], [[[['AS', 'QH', '6H', 'AH', 'KH', '5H', 'KC', '7H', '7D', 'JH', 'TD', '3H', 'TC', '3D', 'KS', '2H', '5C', '8H', 'QS', 'AC', '9H', 'TH', '8C', '4H', 'JC'], ['9S', 'KD', '7C', 'JS', '2S', '9C', '2D', '3C'], ['3S', 'QC', '7S', '2C', '5D', '4S', '9D', '6C', '8S', '6D', '5S'], ['JD', '8D', '6S', 'QD', '4C', '4D', 'TS', 'AD']], False], [0, 26, 26, 26]], [[[['9H', 'KS', '4D', 'TH', 'TC', '3D', '7H', 'KC', 'QD', '9S', 'JH'], ['4S', 'AS', '2H', '9C', '8S', 'TS', '2C', '8D', 'JC', '5C', 'KD', '5H', '7S'], ['AH', '9D', '6S', '8H', '8C', 'TD', '3S', 'QC', 'KH', 'AD', 'JD', 'JS', 'QS', '6H', '7D'], ['AC', '2D', '4C', '3C', '7C', '3H', '6C', '5D', '5S', 'QH', '2S', '4H', '6D']], True], [4, 2, 7, 3]], [[[['4S', '4H', 'TS', '7C', '7D', '9H', 'TH', 'JS', '8S', 'QD', 'JC', 'AC'], ['3H', 'TD', '5H', '2S', '2D', '3S', '3C', '5C', '9D', '9C', '6D', 'AS', 'QC'], ['8C', 'JH', '5S', '7H', '6H', '9S', 'QS', 'QH', 'JD', 'AH', '4C', '8D', 'KS', '2C', 'AD', 'KH', '4D'], ['6S', '3D', '2H', '6C', 'KD', 'KC', '8H', '7S', 'TC', '5D']], True], [3, 2, 9, 2]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH']], False], [0, 13, 0, 13]]], [[[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['8S', 'QH', '4H', '5D', 'QS', '5S', 'AH', 'TD', '5H', 'TH', '6S', '7S', '9H'], ['9C', '2S', 'QD', 'JH', '7D', '8C', '7C', '4C', 'QC', '3D', 'AS', 'KC', 'JC'], ['6H', '4D', 'KD', 'JD', '3S', 'AD', '2D', '6D', '9D'], ['TS', '3C', '9S', '8D', '4S', '2H', 'JS', '2C', '6C', '3H', 'KS', '5C', 'TC', 'AC', '7H', 'KH', '8H']], False], [19, 1, 1, 5]], [[[['JS', '8H', 'TH', '4C', '6S', '7S', 'AD', 'KC', 'JD', '4D', '7C', '7D', 'AC', 'TS', '7H'], ['TD', 'QS', '6C', 'KS', '2H', 'TC', 'AS', '2D', '9D', '3D', '5S', '4H', 'QC', 'KH', '8S', 'QH'], ['9S', '9H', '2S', '6D', '5H', '4S', '8C', '3S', '6H', '3H', '8D'], ['AH', '5D', '2C', 'JH', 'JC', '5C', 'KD', '9C', 'QD', '3C']], True], [-7, 17, 4, 2]], [[[['9H', 'JD', '8H', 'QH', 'JH', '9D', 'QS', '5H', '6H', '3H', 'AH', '5D', '2H', 'JC', 'AC', '4H', '6D', 'TH', 'KH', '2C', '7H', '4D', 'QD'], ['7D', 'JS', '9S', '6S', 'TC', '5C', '8C'], ['7S', '2D', '5S', 'QC', 'KC', '8S', '4S', 'TS', '3S', '3C', '9C', '4C', '7C'], ['KD', '6C', '2S', '3D', '8D', 'AD', 'AS', 'KS', 'TD']], True], [-10, 26, 26, 26]], [[[['3D', '6D', '5S', '2D', 'KD', '4D', 'TS', 'QS', '9S'], ['3S', '9C', '3C', 'TD', 'QH', '2S', '8H', '7S', 'TH', '7H', 'KC', '6S', 'TC', 'JD', '9H', 'AH', '5D', 'JS', '5C'], ['AS', 'KS', 'QD', 'KH', '4H', 'JH', '4C', '7D', '6H', '5H', '8C'], ['2H', '9D', 'AD', '2C', 'QC', '6C', 'AC', 'JC', '8D', '8S', '7C', '4S', '3H']], False], [13, 6, 5, 2]], [[[['TH', '2H', '2D', '8H', '9D', 'KC', 'AD'], ['TD', 'QS', 'AS', '8S', '3C', 'QD', '4C', '4S', 'JD', 'TS', '2S', '7S', '6C', '3S', '8C', 'QC', '4H'], ['7C', 'AH', '2C', 'KD', '4D', 'AC', '5H', '6H', '6D', 'TC', '7H', 'JS', 'QH', '9C', '5D', '9H', '3H'], ['8D', '9S', '7D', '5S', 'JC', 'JH', '5C', 'KS', 'KH', '6S', '3D']], False], [3, 14, 7, 2]], [[[['7D', 'QH', 'AC', 'JC', '5H', '4C', '9S'], ['AH', 'JS', 'TC', '5D', 'TH', '9H', '8D', 'KC', '7S', '3S', '2S', '5S', '7C', 'TS', 'KD', '8C', '7H', 'AD', 'KH', '3H', '6C', '2D'], ['QD', '5C', '8S', 'QC', 'QS', '2C', '4S', 'TD', 'KS', '2H', '6D'], ['3C', 'AS', '4H', 'JD', '6S', '9D', '9C', '6H', '3D', 'JH', '4D', '8H']], False], [2, 6, 14, 4]], [[[['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD']], True], [13, 0, 13, -10]]], [[[[['3C', 'TS', '2H', '7D', '9S', '9C', '7H', 'AS', 'KS', 'JH', 'KD', '4D', '6C', 'KH', '3H', '8H', '8C', '5H', '4H', 'QH', '6H', '9H', 'AH', 'TH', 'QS'], ['QC', '4C', '2D', 'AC', '4S', 'JD', '8D', '5C'], ['6D', '6S', '5S', '2C', '9D', '7S', 'QD', '8S', 'TD', 'KC', 'TC', 'JS', 'AD'], ['3D', '7C', 'JC', '5D', '3S', '2S']], True], [0, 16, 26, 26]], [[[['3S', 'TC', '4H', 'AD', 'AH', 'KD', '7S', '2D', '5H', '6H', 'JD', '6D', 'KS'], ['7H', 'JH', 'TD', '8C', 'QD', '2C', '4D', 'KC', '5D', '9D', '7C', 'QS', '5S', 'KH', '8D', 'AC'], ['3D', '2S', '3H', '9S', '8H', '7D', 'TH', '8S', '6S', 'JC'], ['2H', '3C', '5C', '9H', 'QH', '4S', 'JS', '4C', 'QC', '9C', '6C', 'TS', 'AS']], False], [4, 16, 3, 3]], [[[['6C', '5D', '2H', 'JD', '7H', '6S', '6D', '3H', '8H', 'QC', '5H', 'TD', '5C'], ['3C', '4H', 'JH', '7S', 'KS', 'JS', 'AH', '8C', '8S'], ['9S', '6H', 'KC', '3D', 'KH', 'TH', '8D', 'QS', '2D', 'AD', '9C', 'AC', '2C', 'TS', 'KD', '9H', '4C', '5S'], ['AS', '9D', '2S', 'QD', '7D', 'TC', '7C', '4D', '4S', 'QH', '3S', 'JC']], False], [5, 3, 17, 1]], [[[['QD', 'JD', 'JH', 'QH', 'TH', 'KC', '7H', '4C', '3D', '4H', 'KH', '7S', 'TD', 'TC', 'QS', '8H', '6D', '6H', '9C', '9H', '5H', 'AH', '2H', '3H'], ['8C', '2S', '5S', '7D', 'JC', '6S', 'KD', 'AD', '9S', '3C', '2C'], ['8D', '8S', '5C', '9D', '3S', '5D', '4D', 'AS', '4S'], ['JS', 'AC', 'QC', 'TS', '6C', 'KS', '7C', '2D']], True], [-10, 26, 26, 26]], [[[['8C', '2D', '4S', '6C', '9C', '3S', 'JD', '5D', 'JC', 'AC', '2C'], ['8D', 'JH', 'KH', '3D', '6H', 'AH', '8S', 'TH', '9H', '5C', '8H', 'QS', 'QH', 'TD', '2H', '3H', '5H', '6D', '4C', '4H', '7H', 'KS', '2S', '6S'], ['TC', 'QC', '7D', '5S', 'TS', 'AD', 'KD', '7S', 'KC', '9D', '4D'], ['9S', 'QD', 'AS', 'JS', '3C', '7C']], True], [16, 0, 26, 26]], [[[['QH', 'TD', 'JD', '7C', 'QS', '4H', '8C', 'JS', '5S', 'AS', '3H', '3D', '2C', '2S', '6C', '5H', '5D', '7H'], ['TH', 'TS', 'AH', '8H', '8S', '5C', 'TC'], ['4S', '3C', '3S', '2H', 'KH', '7D', '6S', '9C', '6H', '9S', '6D', 'KS', 'JC', '4C'], ['QD', 'QC', 'AD', 'KC', '4D', '8D', '7S', '2D', 'JH', '9D', '9H', 'AC', 'KD']], False], [18, 3, 3, 2]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC']], False], [0, 13, 0, 13]]], [[[[['5D', '4S', '3S', '9H', '6D', '8S', 'QC', 'AC', '8C', '7S', 'TH', 'TC', '6C', '3H', '3D', '7D', 'TS', '5S', 'KH'], ['KD', '3C', '2D', '9S', 'QD', '4H', '7C', 'JD', 'JC', '7H', '9C'], ['KS', 'AH', '9D', '8H', '2S', 'AS', 'TD', '6S', '8D', '2C', 'AD', '4D', 'KC'], ['2H', 'JS', 'QS', 'QH', '5H', 'JH', '6H', '4C', '5C']], True], [4, -8, 2, 18]], [[[['AD', 'KD', 'KH', 'TD', '7H', '8S', '6S', 'TS', 'AS', '7C'], ['2D', '6D', 'JC', 'JS', 'JH', '3C', '9C', '5D', '2S', 'AC', '8D', '9S', '3D', 'QC', '5H', 'QD'], ['4C', 'QS', 'TH', '9H', 'TC', '4D', '5S', '2H', '9D', '6H', '3S', 'KC'], ['AH', '5C', '6C', '7S', '2C', 'QH', '3H', '7D', 'KS', '4S', '4H', '8H', '8C', 'JD']], False], [2, 2, 17, 5]], [[[['7H', 'KH', '3D', 'TC', '6D', '6C', '2C', 'TS', '8S', '8D', 'JD', 'AH', '4H', 'TD', 'AC'], ['5D', '9S', '3S', 'QS', 'KS', '9C', '6H', '9D', 'QC', 'QH', '7D', 'AD', '3H', 'JC', 'TH', '5H', '3C', '4S', '7C'], ['JS', '2D', '4C', 'JH', 'QD', 'KC', 'KD', '2H', '6S'], ['8C', 'AS', '5C', '9H', '7S', '2S', '5S', '8H', '4D']], False], [4, 18, 2, 2]], [[[['TS', 'AS', 'KC', 'JS', 'QD', '8S', '4H', 'JC', '2H', '4S', '7S', '6D', 'JD', 'KD', '5D', 'TD', 'JH'], ['KS', '3D', '8C', '2D', '7D', '3C', '7C', '8H', 'AH', '4D', '9C', '5C', 'AC', '6C'], ['5H', '3H', '9H', '9S', '2S', 'KH', '2C'], ['TH', '8D', '4C', 'QC', 'QH', 'AD', 'TC', '5S', '7H', 'QS', '3S', '9D', '6H', '6S']], False], [3, 2, 4, 17]], [[[['9D', '9C', '7S', '5S', '8S', '2S', '4S', '2C', 'AS', '6C', '7C', 'JC', 'QC', '8C', 'KS'], ['JS', '2D', 'KD', 'QD', 'TD', 'KC', '4C'], ['JD', 'TS', '3S', '5C', '6D', 'AC', '4D'], ['5H', '9H', 'TH', 'KH', 'TC', '8D', '9S', '4H', '7H', '8H', '6S', 'JH', '6H', '5D', 'AD', '3D', 'QS', '3C', '7D', '2H', 'AH', '3H', 'QH']], True], [26, 26, 16, 0]], [[[['TH', '7C', '8S', '2S', '6C', '5C', '4H', '6S', '5H', '9D', '7S', '5S', '2H', 'TS', 'KS'], ['4C', 'QD', '3C', 'JD', '7H', '3S', 'TD', 'AH', '4D', '9H', 'JC', '6H', '4S'], ['JS', 'JH', 'QH', '9S', 'KD', 'QC', '6D'], ['AS', '3H', 'KH', '2C', 'AD', 'TC', '2D', 'AC', 'KC', 'QS', '9C', '7D', '8H', '3D', '8C', '5D', '8D']], False], [4, 4, 2, 16]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("round score case %d" % i, solve(args), 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 fixtureActualExpectedOutcome
round score case 0[2, -9, 14, 9][2, -9, 14, 9]Passed
round score case 1[4, 4, 17, 1][4, 4, 17, 1]Passed
round score case 2[7, 1, 15, 3][7, 1, 15, 3]Passed
round score case 3[26, 0, 16, 26][26, 0, 16, 26]Passed
round score case 4[16, 0, 0, 0][-10, 26, 26, 26]Failed
round score case 5[6, 1, 4, 15][6, 1, 4, 15]Passed
round score case 6[0, 16, 0, 0][26, -10, 26, 26]Failed
round score case 7[13, -10, 13, 0][13, -10, 13, 0]Passed

SHA-256 / 8bb2443d39c7be0228fee837421928ecb0e32232741e6f57dda507a1ca455b60

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    taken, jd = x
    pts = []
    for cards in taken:
        s = sum(1 for c in cards if c[1] == 'H')
        if 'QS' in cards:
            s += 13
        pts.append(s)
    moon = [i for i, cards in enumerate(taken) if pts[i] == 26]
    if moon:
        shooter = moon[0]
        pts = [0 if i == shooter else 26 for i in range(len(taken))]
    if jd:
        for i, cards in enumerate(taken):
            if 'JD' in cards:
                pts[i] -= 10
    return pts
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[['KC', 'TS', '2C', '5H', '6H', '4D', '2S', '5S', '4S', '6S'], ['TD', 'KS', '9C', 'JD', 'QC', 'QH', '6C', 'AS', '3C', '9S', 'KD', '3D', 'AC', '8C'], ['3S', '5C', '6D', 'QS', '2D', 'QD', '8D', '8S', '4H', '7C', 'AD'], ['AH', 'TC', '4C', '7S', '3H', '9D', '9H', '8H', 'JS', 'KH', 'JH', '7H', 'TH', '5D', '2H', 'JC', '7D']], True], [2, -9, 14, 9]], [[[['9H', 'JD', '4D', '8C', '9C', '7C', '9S', '7H', '2S', '8D', 'AC', '3H', 'QC', '2H'], ['9D', 'AS', 'JS', '4S', '5S', 'TS', '3D', 'QH', '4H', '2D', '5C', '7D', '3S', '5H', 'JH'], ['KH', '5D', 'AH', 'KC', 'TC', 'QS', '8H', 'QD', '6H', '6C', 'AD'], ['7S', '3C', '2C', '6S', 'TD', '8S', '4C', 'KS', 'JC', 'KD', '6D', 'TH']], False], [4, 4, 17, 1]], [[[['8C', '6S', '2H', 'KS', 'QH', '7D', '8S', '5D', 'AD', '5H', '5S', 'KH', 'JH', '9S', '3D', '4H', '7H'], ['TS', '8D', '4D', '2C', 'TD', '2D', 'QC', 'KD', 'TC', '4C', '3H'], ['4S', 'TH', '6C', 'QS', '2S', 'AH', 'QD', '3S', 'JC'], ['AS', '8H', '5C', '9D', '6D', '9H', '6H', 'AC', '9C', 'JD', 'KC', '7S', 'JS', '7C', '3C']], False], [7, 1, 15, 3]], [[[['TD', '7S', '6S', 'AC', 'JS', '5C', '3S', '6C', '4D', '2D', 'JC', 'QD'], ['7D', '6H', '7C', 'KC', '3C', '8H', '3H', 'TH', '9H', 'KD', 'AS', '4H', '7H', '8S', 'AD', 'KH', '2H', '5H', 'AH', 'QS', 'QH', 'JH', '8C'], ['9S', '6D', 'TC', '5D', '2C', 'JD', '9D', '9C', '3D', '5S'], ['KS', '4S', '4C', 'QC', '2S', '8D', 'TS']], True], [26, 0, 16, 26]], [[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['3H', '6D', '9D', '7D', '7H', '4C', '5D', '3D', '5S', '9C', 'AD', '6S', '8H', '6H', 'QC', '3S', 'QH', 'KH'], ['7C', '4H', '9S', '8S', '2D', 'TC', '3C', '6C'], ['QD', '2H', 'KD', '8D', 'KS', 'JD', '5H', 'TS', '4D', '4S', 'AC', 'JH', '7S', '2S', 'AH'], ['QS', '5C', '2C', '8C', 'KC', 'JS', 'JC', 'AS', 'TD', 'TH', '9H']], False], [6, 1, 4, 15]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]], [[[[['2C', 'KS', '6C', '2H', '4H', '6S', '6D', 'QD', '4S', 'QS', '8H', 'AH', '9D'], ['JS', 'JC', '6H', '3H', '7D', '4C', '9S', '7H', '7S', '3D', 'TS', 'JD', '4D', 'AS', '7C', 'TD'], ['TC', '5H', 'KH', '8C', '5D', '9H'], ['JH', '3S', 'KC', 'QC', '9C', 'KD', 'TH', 'AC', '8D', '8S', '5C', '5S', '3C', 'AD', '2D', '2S', 'QH']], False], [17, 3, 3, 3]], [[[['2H', '4S', '9C', '3C', 'TS', '7H', 'QS', '5D', 'AS', '9H', 'TH', 'JS', '7C', 'TD', 'JH', 'KD', 'TC'], ['8H', 'QH', '4C', '7D', '2S', '8C', '7S', 'KC'], ['6C', '9D', 'QC', 'JD', '5C', 'AC', '6H', '6D', '3D', '4D', '2D', 'AH', '9S', 'KH'], ['AD', '8S', 'JC', '8D', '2C', '5H', '3S', '3H', '4H', 'KS', '6S', '5S', 'QD']], True], [18, 2, -7, 3]], [[[['5C', '4C', '5S', '7C', 'KD', '7S'], ['AC', '2S', '4D', '6D', '5D', '9S', 'QC'], ['8H', '4S', 'JH', 'QS', '3C', 'JC', '6H', '4H', '2H', 'AS', 'AH', 'KH', '9D', 'QH', '7H', '5H', 'KC', 'TD', '3H', 'TC', 'TH', '9H', '6C', '2C', 'KS'], ['8D', '8C', 'JS', 'QD', 'AD', '8S', '3S', '3D', '7D', 'TS', '6S', 'JD', '2D', '9C']], True], [26, 26, 0, 16]], [[[['AS', 'QH', '6H', 'AH', 'KH', '5H', 'KC', '7H', '7D', 'JH', 'TD', '3H', 'TC', '3D', 'KS', '2H', '5C', '8H', 'QS', 'AC', '9H', 'TH', '8C', '4H', 'JC'], ['9S', 'KD', '7C', 'JS', '2S', '9C', '2D', '3C'], ['3S', 'QC', '7S', '2C', '5D', '4S', '9D', '6C', '8S', '6D', '5S'], ['JD', '8D', '6S', 'QD', '4C', '4D', 'TS', 'AD']], False], [0, 26, 26, 26]], [[[['9H', 'KS', '4D', 'TH', 'TC', '3D', '7H', 'KC', 'QD', '9S', 'JH'], ['4S', 'AS', '2H', '9C', '8S', 'TS', '2C', '8D', 'JC', '5C', 'KD', '5H', '7S'], ['AH', '9D', '6S', '8H', '8C', 'TD', '3S', 'QC', 'KH', 'AD', 'JD', 'JS', 'QS', '6H', '7D'], ['AC', '2D', '4C', '3C', '7C', '3H', '6C', '5D', '5S', 'QH', '2S', '4H', '6D']], True], [4, 2, 7, 3]], [[[['4S', '4H', 'TS', '7C', '7D', '9H', 'TH', 'JS', '8S', 'QD', 'JC', 'AC'], ['3H', 'TD', '5H', '2S', '2D', '3S', '3C', '5C', '9D', '9C', '6D', 'AS', 'QC'], ['8C', 'JH', '5S', '7H', '6H', '9S', 'QS', 'QH', 'JD', 'AH', '4C', '8D', 'KS', '2C', 'AD', 'KH', '4D'], ['6S', '3D', '2H', '6C', 'KD', 'KC', '8H', '7S', 'TC', '5D']], True], [3, 2, 9, 2]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH']], False], [0, 13, 0, 13]]], [[[[['QD', '8H', 'QS', 'TD', 'JH', '5H', '9H', 'KC', 'QH', '7H', '3H', '4H', '5S', '6H', 'TH', '7C', '3C', 'JD', 'AS', 'TC', '2H', '8S', 'AH', '6C', '5C', 'JC', 'KH'], ['4D', '9C', 'JS', '5D', '6D', '8C', '2C'], ['4C', 'AC', '3S', '2S', 'KD', '4S', 'AD', '9D', '7S', 'QC'], ['8D', '6S', 'KS', '3D', '9S', '7D', '2D', 'TS']], True], [-10, 26, 26, 26]], [[[['8S', 'QH', '4H', '5D', 'QS', '5S', 'AH', 'TD', '5H', 'TH', '6S', '7S', '9H'], ['9C', '2S', 'QD', 'JH', '7D', '8C', '7C', '4C', 'QC', '3D', 'AS', 'KC', 'JC'], ['6H', '4D', 'KD', 'JD', '3S', 'AD', '2D', '6D', '9D'], ['TS', '3C', '9S', '8D', '4S', '2H', 'JS', '2C', '6C', '3H', 'KS', '5C', 'TC', 'AC', '7H', 'KH', '8H']], False], [19, 1, 1, 5]], [[[['JS', '8H', 'TH', '4C', '6S', '7S', 'AD', 'KC', 'JD', '4D', '7C', '7D', 'AC', 'TS', '7H'], ['TD', 'QS', '6C', 'KS', '2H', 'TC', 'AS', '2D', '9D', '3D', '5S', '4H', 'QC', 'KH', '8S', 'QH'], ['9S', '9H', '2S', '6D', '5H', '4S', '8C', '3S', '6H', '3H', '8D'], ['AH', '5D', '2C', 'JH', 'JC', '5C', 'KD', '9C', 'QD', '3C']], True], [-7, 17, 4, 2]], [[[['9H', 'JD', '8H', 'QH', 'JH', '9D', 'QS', '5H', '6H', '3H', 'AH', '5D', '2H', 'JC', 'AC', '4H', '6D', 'TH', 'KH', '2C', '7H', '4D', 'QD'], ['7D', 'JS', '9S', '6S', 'TC', '5C', '8C'], ['7S', '2D', '5S', 'QC', 'KC', '8S', '4S', 'TS', '3S', '3C', '9C', '4C', '7C'], ['KD', '6C', '2S', '3D', '8D', 'AD', 'AS', 'KS', 'TD']], True], [-10, 26, 26, 26]], [[[['3D', '6D', '5S', '2D', 'KD', '4D', 'TS', 'QS', '9S'], ['3S', '9C', '3C', 'TD', 'QH', '2S', '8H', '7S', 'TH', '7H', 'KC', '6S', 'TC', 'JD', '9H', 'AH', '5D', 'JS', '5C'], ['AS', 'KS', 'QD', 'KH', '4H', 'JH', '4C', '7D', '6H', '5H', '8C'], ['2H', '9D', 'AD', '2C', 'QC', '6C', 'AC', 'JC', '8D', '8S', '7C', '4S', '3H']], False], [13, 6, 5, 2]], [[[['TH', '2H', '2D', '8H', '9D', 'KC', 'AD'], ['TD', 'QS', 'AS', '8S', '3C', 'QD', '4C', '4S', 'JD', 'TS', '2S', '7S', '6C', '3S', '8C', 'QC', '4H'], ['7C', 'AH', '2C', 'KD', '4D', 'AC', '5H', '6H', '6D', 'TC', '7H', 'JS', 'QH', '9C', '5D', '9H', '3H'], ['8D', '9S', '7D', '5S', 'JC', 'JH', '5C', 'KS', 'KH', '6S', '3D']], False], [3, 14, 7, 2]], [[[['7D', 'QH', 'AC', 'JC', '5H', '4C', '9S'], ['AH', 'JS', 'TC', '5D', 'TH', '9H', '8D', 'KC', '7S', '3S', '2S', '5S', '7C', 'TS', 'KD', '8C', '7H', 'AD', 'KH', '3H', '6C', '2D'], ['QD', '5C', '8S', 'QC', 'QS', '2C', '4S', 'TD', 'KS', '2H', '6D'], ['3C', 'AS', '4H', 'JD', '6S', '9D', '9C', '6H', '3D', 'JH', '4D', '8H']], False], [2, 6, 14, 4]], [[[['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD']], True], [13, 0, 13, -10]]], [[[[['3C', 'TS', '2H', '7D', '9S', '9C', '7H', 'AS', 'KS', 'JH', 'KD', '4D', '6C', 'KH', '3H', '8H', '8C', '5H', '4H', 'QH', '6H', '9H', 'AH', 'TH', 'QS'], ['QC', '4C', '2D', 'AC', '4S', 'JD', '8D', '5C'], ['6D', '6S', '5S', '2C', '9D', '7S', 'QD', '8S', 'TD', 'KC', 'TC', 'JS', 'AD'], ['3D', '7C', 'JC', '5D', '3S', '2S']], True], [0, 16, 26, 26]], [[[['3S', 'TC', '4H', 'AD', 'AH', 'KD', '7S', '2D', '5H', '6H', 'JD', '6D', 'KS'], ['7H', 'JH', 'TD', '8C', 'QD', '2C', '4D', 'KC', '5D', '9D', '7C', 'QS', '5S', 'KH', '8D', 'AC'], ['3D', '2S', '3H', '9S', '8H', '7D', 'TH', '8S', '6S', 'JC'], ['2H', '3C', '5C', '9H', 'QH', '4S', 'JS', '4C', 'QC', '9C', '6C', 'TS', 'AS']], False], [4, 16, 3, 3]], [[[['6C', '5D', '2H', 'JD', '7H', '6S', '6D', '3H', '8H', 'QC', '5H', 'TD', '5C'], ['3C', '4H', 'JH', '7S', 'KS', 'JS', 'AH', '8C', '8S'], ['9S', '6H', 'KC', '3D', 'KH', 'TH', '8D', 'QS', '2D', 'AD', '9C', 'AC', '2C', 'TS', 'KD', '9H', '4C', '5S'], ['AS', '9D', '2S', 'QD', '7D', 'TC', '7C', '4D', '4S', 'QH', '3S', 'JC']], False], [5, 3, 17, 1]], [[[['QD', 'JD', 'JH', 'QH', 'TH', 'KC', '7H', '4C', '3D', '4H', 'KH', '7S', 'TD', 'TC', 'QS', '8H', '6D', '6H', '9C', '9H', '5H', 'AH', '2H', '3H'], ['8C', '2S', '5S', '7D', 'JC', '6S', 'KD', 'AD', '9S', '3C', '2C'], ['8D', '8S', '5C', '9D', '3S', '5D', '4D', 'AS', '4S'], ['JS', 'AC', 'QC', 'TS', '6C', 'KS', '7C', '2D']], True], [-10, 26, 26, 26]], [[[['8C', '2D', '4S', '6C', '9C', '3S', 'JD', '5D', 'JC', 'AC', '2C'], ['8D', 'JH', 'KH', '3D', '6H', 'AH', '8S', 'TH', '9H', '5C', '8H', 'QS', 'QH', 'TD', '2H', '3H', '5H', '6D', '4C', '4H', '7H', 'KS', '2S', '6S'], ['TC', 'QC', '7D', '5S', 'TS', 'AD', 'KD', '7S', 'KC', '9D', '4D'], ['9S', 'QD', 'AS', 'JS', '3C', '7C']], True], [16, 0, 26, 26]], [[[['QH', 'TD', 'JD', '7C', 'QS', '4H', '8C', 'JS', '5S', 'AS', '3H', '3D', '2C', '2S', '6C', '5H', '5D', '7H'], ['TH', 'TS', 'AH', '8H', '8S', '5C', 'TC'], ['4S', '3C', '3S', '2H', 'KH', '7D', '6S', '9C', '6H', '9S', '6D', 'KS', 'JC', '4C'], ['QD', 'QC', 'AD', 'KC', '4D', '8D', '7S', '2D', 'JH', '9D', '9H', 'AC', 'KD']], False], [18, 3, 3, 2]], [[[['9D', 'KC', '7S', 'QD', 'TC', '6S', '4C', '6D', '4D', '5D', '2D', '8S', 'KS'], ['AD', 'QH', '9H', '4H', '8H', '2H', 'AH', '3D', '7H', 'TS', '3H', '6H', 'JD', 'AC', 'JH', '9C', '7D', 'TH', '5H', 'KH', 'TD', 'KD', 'QS', '8D', '5C'], ['QC', '7C', 'JS', '5S', 'JC', '6C', '2C', 'AS', '3S', '8C'], ['4S', '2S', '3C', '9S']], True], [26, -10, 26, 26]], [[[['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS'], ['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC']], False], [0, 13, 0, 13]]], [[[[['5D', '4S', '3S', '9H', '6D', '8S', 'QC', 'AC', '8C', '7S', 'TH', 'TC', '6C', '3H', '3D', '7D', 'TS', '5S', 'KH'], ['KD', '3C', '2D', '9S', 'QD', '4H', '7C', 'JD', 'JC', '7H', '9C'], ['KS', 'AH', '9D', '8H', '2S', 'AS', 'TD', '6S', '8D', '2C', 'AD', '4D', 'KC'], ['2H', 'JS', 'QS', 'QH', '5H', 'JH', '6H', '4C', '5C']], True], [4, -8, 2, 18]], [[[['AD', 'KD', 'KH', 'TD', '7H', '8S', '6S', 'TS', 'AS', '7C'], ['2D', '6D', 'JC', 'JS', 'JH', '3C', '9C', '5D', '2S', 'AC', '8D', '9S', '3D', 'QC', '5H', 'QD'], ['4C', 'QS', 'TH', '9H', 'TC', '4D', '5S', '2H', '9D', '6H', '3S', 'KC'], ['AH', '5C', '6C', '7S', '2C', 'QH', '3H', '7D', 'KS', '4S', '4H', '8H', '8C', 'JD']], False], [2, 2, 17, 5]], [[[['7H', 'KH', '3D', 'TC', '6D', '6C', '2C', 'TS', '8S', '8D', 'JD', 'AH', '4H', 'TD', 'AC'], ['5D', '9S', '3S', 'QS', 'KS', '9C', '6H', '9D', 'QC', 'QH', '7D', 'AD', '3H', 'JC', 'TH', '5H', '3C', '4S', '7C'], ['JS', '2D', '4C', 'JH', 'QD', 'KC', 'KD', '2H', '6S'], ['8C', 'AS', '5C', '9H', '7S', '2S', '5S', '8H', '4D']], False], [4, 18, 2, 2]], [[[['TS', 'AS', 'KC', 'JS', 'QD', '8S', '4H', 'JC', '2H', '4S', '7S', '6D', 'JD', 'KD', '5D', 'TD', 'JH'], ['KS', '3D', '8C', '2D', '7D', '3C', '7C', '8H', 'AH', '4D', '9C', '5C', 'AC', '6C'], ['5H', '3H', '9H', '9S', '2S', 'KH', '2C'], ['TH', '8D', '4C', 'QC', 'QH', 'AD', 'TC', '5S', '7H', 'QS', '3S', '9D', '6H', '6S']], False], [3, 2, 4, 17]], [[[['9D', '9C', '7S', '5S', '8S', '2S', '4S', '2C', 'AS', '6C', '7C', 'JC', 'QC', '8C', 'KS'], ['JS', '2D', 'KD', 'QD', 'TD', 'KC', '4C'], ['JD', 'TS', '3S', '5C', '6D', 'AC', '4D'], ['5H', '9H', 'TH', 'KH', 'TC', '8D', '9S', '4H', '7H', '8H', '6S', 'JH', '6H', '5D', 'AD', '3D', 'QS', '3C', '7D', '2H', 'AH', '3H', 'QH']], True], [26, 26, 16, 0]], [[[['TH', '7C', '8S', '2S', '6C', '5C', '4H', '6S', '5H', '9D', '7S', '5S', '2H', 'TS', 'KS'], ['4C', 'QD', '3C', 'JD', '7H', '3S', 'TD', 'AH', '4D', '9H', 'JC', '6H', '4S'], ['JS', 'JH', 'QH', '9S', 'KD', 'QC', '6D'], ['AS', '3H', 'KH', '2C', 'AD', 'TC', '2D', 'AC', 'KC', 'QS', '9C', '7D', '8H', '3D', '8C', '5D', '8D']], False], [4, 4, 2, 16]], [[[['9S', 'TS', 'TC', '7D', 'AC', '4C', 'AD', '9D'], ['3H', 'QH', '2D', 'JD', '4D', '5H', 'AH', '9H', '3C', 'KH', '8S', '5D', '8H', 'JH', '2S', '6H', 'TH', '7H', 'AS', 'QS', '2H', '4H'], ['6D', '9C', '6S', '8D', '3D', 'TD', 'JS', 'KC', 'JC', '5C', 'KS'], ['2C', 'QD', '6C', '4S', '5S', '3S', 'QC', '7C', '8C', '7S', 'KD']], True], [26, -10, 26, 26]], [[[['2H', '3H', '4H', '4D', '4C', '5H', '6H', '7H', '7D', '7C', '8H', '9H', 'TH', 'TD', 'TC', 'JH', 'QH', 'KH', 'KD', 'KC', 'AH'], ['2S', '2D', '5S', '5D', '8S', '8D', 'JS', 'JD', 'AS', 'AD'], ['2C', '3S', '5C', '6S', '8C', '9S', 'JC', 'QS', 'AC'], ['3D', '3C', '4S', '6D', '6C', '7S', '9D', '9C', 'TS', 'QD', 'QC', 'KS']], True], [13, -10, 13, 0]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("round score case %d" % i, solve(args), 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 fixtureActualExpectedOutcome
round score case 0[2, -9, 14, 9][2, -9, 14, 9]Passed
round score case 1[4, 4, 17, 1][4, 4, 17, 1]Passed
round score case 2[7, 1, 15, 3][7, 1, 15, 3]Passed
round score case 3[26, 0, 16, 26][26, 0, 16, 26]Passed
round score case 4[-10, 26, 26, 26][-10, 26, 26, 26]Passed
round score case 5[6, 1, 4, 15][6, 1, 4, 15]Passed
round score case 6[26, -10, 26, 26][26, -10, 26, 26]Passed
round score case 7[13, -10, 13, 0][13, -10, 13, 0]Passed

SHA-256 / f16f7e1ccf4a3ab89286d677a3eaf0d523046bf66febe111322ac9a72369ec06

Verification & scope

A bounded toy rule contract stated explicitly in the contract field; cards are two-character codes (rank, suit). Not a complete implementation of any published rulebook or casino table rules. 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:21.400131+00:00.

Case digest / 8f029bb598a76a0c752935409ffca0df0b62415289e14b333325448b4967f4d5