broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    front = x['front_m']
    rear = front - x['length_m']
    limit = x['line_kmh']
    for s in x['tsr']:
        if s['from_m'] <= front and s['to_m'] > rear:
            limit = min(limit, s['kmh'])
    ahead = [s for s in x['tsr'] if s['from_m'] > front and s['from_m'] - front < x['sight_m'] and s['kmh'] < limit]
    nxt = min(ahead, key=lambda s: s['from_m'])['from_m'] if ahead else None
    return {'limit': limit, 'next_m': nxt}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 34', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 80}, {'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 1000, 'to_m': 1600, 'kmh': 80}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 100, 'next_m': 1000}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: rear still inside the restriction', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('boundary: rear exactly at the restriction end', {'front_m': 800, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None}), ('control 1', {'front_m': 1100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('control 4', {'front_m': 700, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 40}, {'from_m': 1000, 'to_m': 1600, 'kmh': 20}, {'from_m': 800, 'to_m': 900, 'kmh': 20}, {'from_m': 500, 'to_m': 600, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 7', {'front_m': 1100, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 60, 'next_m': None})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('control 57', {'front_m': 250, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 60}, {'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 120, 'next_m': 500}), ('boundary: restriction ahead faster than current limit', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 40, 'next_m': None}), ('boundary: restriction ahead slower than line speed only', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 450, 'to_m': 700, 'kmh': 30}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 30, 'next_m': None}), ('boundary: two restrictions ahead listed far first', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}, {'from_m': 300, 'to_m': 400, 'kmh': 60}]}, {'limit': 100, 'next_m': 300}), ('control 12', {'front_m': 1300, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 500, 'to_m': 1100, 'kmh': 20}, {'from_m': 1500, 'to_m': 1600, 'kmh': 20}, {'from_m': 200, 'to_m': 300, 'kmh': 40}]}, {'limit': 20, 'next_m': None}), ('control 15', {'front_m': 100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 60}, {'from_m': 800, 'to_m': 900, 'kmh': 20}, {'from_m': 200, 'to_m': 300, 'kmh': 40}]}, {'limit': 120, 'next_m': 200}), ('control 18', {'front_m': 700, 'length_m': 400, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 120, 'next_m': 1000})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 26', {'front_m': 500, 'length_m': 100, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 40}]}, {'limit': 120, 'next_m': 800}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: two restrictions ahead listed far first', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}, {'from_m': 300, 'to_m': 400, 'kmh': 60}]}, {'limit': 100, 'next_m': 300}), ('boundary: restriction just behind the rear', {'front_m': 1000, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 900, 'kmh': 20}]}, {'limit': 100, 'next_m': None}), ('control 23', {'front_m': 700, 'length_m': 100, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 200, 'to_m': 300, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 80}]}, {'limit': 120, 'next_m': 800}), ('control 29', {'front_m': 100, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 0, 'to_m': 100, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 32', {'front_m': 1100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 20}]}, {'limit': 20, 'next_m': None})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 62', {'front_m': 500, 'length_m': 400, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 40}, {'from_m': 1000, 'to_m': 1600, 'kmh': 20}]}, {'limit': 100, 'next_m': 1000}), ('control 57', {'front_m': 250, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 60}, {'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 120, 'next_m': 500}), ('boundary: restriction just behind the rear', {'front_m': 1000, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 900, 'kmh': 20}]}, {'limit': 100, 'next_m': None}), ('boundary: rear still inside the restriction', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('sampled regression 34', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 80}, {'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 1000, 'to_m': 1600, 'kmh': 80}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 100, 'next_m': 1000}), ('control 37', {'front_m': 500, 'length_m': 400, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 60}, {'from_m': 200, 'to_m': 800, 'kmh': 40}, {'from_m': 0, 'to_m': 100, 'kmh': 20}, {'from_m': 1500, 'to_m': 1800, 'kmh': 20}]}, {'limit': 40, 'next_m': None}), ('control 40', {'front_m': 1300, 'length_m': 200, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 60}, {'from_m': 1500, 'to_m': 2100, 'kmh': 20}]}, {'limit': 120, 'next_m': 1500})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: rear exactly at the restriction end', {'front_m': 800, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None}), ('boundary: restriction ahead faster than current limit', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 40, 'next_m': None}), ('boundary: restriction ahead slower than line speed only', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 450, 'to_m': 700, 'kmh': 30}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 30, 'next_m': None}), ('control 45', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 0, 'to_m': 300, 'kmh': 60}, {'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 800, 'to_m': 1100, 'kmh': 40}, {'from_m': 200, 'to_m': 500, 'kmh': 60}]}, {'limit': 80, 'next_m': 800}), ('control 48', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 800, 'to_m': 1400, 'kmh': 80}, {'from_m': 1000, 'to_m': 1100, 'kmh': 40}, {'from_m': 0, 'to_m': 100, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 51', {'front_m': 900, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None})]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    front = x['front_m']
    rear = front - x['length_m']
    limit = x['line_kmh']
    for s in x['tsr']:
        if s['from_m'] <= front and s['to_m'] > rear:
            limit = min(limit, s['kmh'])
    ahead = [s for s in x['tsr'] if s['from_m'] > front and s['from_m'] - rear <= x['sight_m'] and s['kmh'] < limit]
    nxt = min(ahead, key=lambda s: s['from_m'])['from_m'] if ahead else None
    return {'limit': limit, 'next_m': nxt}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 34', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 80}, {'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 1000, 'to_m': 1600, 'kmh': 80}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 100, 'next_m': 1000}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: rear still inside the restriction', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('boundary: rear exactly at the restriction end', {'front_m': 800, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None}), ('control 1', {'front_m': 1100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('control 4', {'front_m': 700, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 40}, {'from_m': 1000, 'to_m': 1600, 'kmh': 20}, {'from_m': 800, 'to_m': 900, 'kmh': 20}, {'from_m': 500, 'to_m': 600, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 7', {'front_m': 1100, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 60, 'next_m': None})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('control 57', {'front_m': 250, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 60}, {'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 120, 'next_m': 500}), ('boundary: restriction ahead faster than current limit', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 40, 'next_m': None}), ('boundary: restriction ahead slower than line speed only', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 450, 'to_m': 700, 'kmh': 30}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 30, 'next_m': None}), ('boundary: two restrictions ahead listed far first', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}, {'from_m': 300, 'to_m': 400, 'kmh': 60}]}, {'limit': 100, 'next_m': 300}), ('control 12', {'front_m': 1300, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 500, 'to_m': 1100, 'kmh': 20}, {'from_m': 1500, 'to_m': 1600, 'kmh': 20}, {'from_m': 200, 'to_m': 300, 'kmh': 40}]}, {'limit': 20, 'next_m': None}), ('control 15', {'front_m': 100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 60}, {'from_m': 800, 'to_m': 900, 'kmh': 20}, {'from_m': 200, 'to_m': 300, 'kmh': 40}]}, {'limit': 120, 'next_m': 200}), ('control 18', {'front_m': 700, 'length_m': 400, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 120, 'next_m': 1000})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 26', {'front_m': 500, 'length_m': 100, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 40}]}, {'limit': 120, 'next_m': 800}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: two restrictions ahead listed far first', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}, {'from_m': 300, 'to_m': 400, 'kmh': 60}]}, {'limit': 100, 'next_m': 300}), ('boundary: restriction just behind the rear', {'front_m': 1000, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 900, 'kmh': 20}]}, {'limit': 100, 'next_m': None}), ('control 23', {'front_m': 700, 'length_m': 100, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 200, 'to_m': 300, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 80}]}, {'limit': 120, 'next_m': 800}), ('control 29', {'front_m': 100, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 0, 'to_m': 100, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 32', {'front_m': 1100, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 20}]}, {'limit': 20, 'next_m': None})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 62', {'front_m': 500, 'length_m': 400, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 1500, 'to_m': 2100, 'kmh': 40}, {'from_m': 1000, 'to_m': 1600, 'kmh': 20}]}, {'limit': 100, 'next_m': 1000}), ('control 57', {'front_m': 250, 'length_m': 200, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 40}, {'from_m': 800, 'to_m': 1100, 'kmh': 60}, {'from_m': 500, 'to_m': 800, 'kmh': 40}, {'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 120, 'next_m': 500}), ('boundary: restriction just behind the rear', {'front_m': 1000, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 900, 'kmh': 20}]}, {'limit': 100, 'next_m': None}), ('boundary: rear still inside the restriction', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 40, 'next_m': None}), ('sampled regression 34', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1300, 'kmh': 80}, {'from_m': 0, 'to_m': 300, 'kmh': 20}, {'from_m': 1000, 'to_m': 1600, 'kmh': 80}, {'from_m': 1000, 'to_m': 1300, 'kmh': 60}]}, {'limit': 100, 'next_m': 1000}), ('control 37', {'front_m': 500, 'length_m': 400, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 1000, 'to_m': 1600, 'kmh': 60}, {'from_m': 200, 'to_m': 800, 'kmh': 40}, {'from_m': 0, 'to_m': 100, 'kmh': 20}, {'from_m': 1500, 'to_m': 1800, 'kmh': 20}]}, {'limit': 40, 'next_m': None}), ('control 40', {'front_m': 1300, 'length_m': 200, 'line_kmh': 120, 'sight_m': 500, 'tsr': [{'from_m': 1000, 'to_m': 1100, 'kmh': 60}, {'from_m': 1500, 'to_m': 2100, 'kmh': 20}]}, {'limit': 120, 'next_m': 1500})], [('regression: restriction exactly at sighting distance', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 600, 'to_m': 700, 'kmh': 40}]}, {'limit': 100, 'next_m': 600}), ('sampled regression 5', {'front_m': 500, 'length_m': 400, 'line_kmh': 120, 'sight_m': 300, 'tsr': [{'from_m': 800, 'to_m': 1100, 'kmh': 20}]}, {'limit': 120, 'next_m': 800}), ('boundary: rear exactly at the restriction end', {'front_m': 800, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None}), ('boundary: restriction ahead faster than current limit', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 400, 'to_m': 600, 'kmh': 40}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 40, 'next_m': None}), ('boundary: restriction ahead slower than line speed only', {'front_m': 500, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 450, 'to_m': 700, 'kmh': 30}, {'from_m': 800, 'to_m': 900, 'kmh': 60}]}, {'limit': 30, 'next_m': None}), ('control 45', {'front_m': 700, 'length_m': 200, 'line_kmh': 100, 'sight_m': 300, 'tsr': [{'from_m': 0, 'to_m': 300, 'kmh': 60}, {'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 800, 'to_m': 1100, 'kmh': 40}, {'from_m': 200, 'to_m': 500, 'kmh': 60}]}, {'limit': 80, 'next_m': 800}), ('control 48', {'front_m': 100, 'length_m': 100, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 200, 'to_m': 800, 'kmh': 80}, {'from_m': 800, 'to_m': 1400, 'kmh': 80}, {'from_m': 1000, 'to_m': 1100, 'kmh': 40}, {'from_m': 0, 'to_m': 100, 'kmh': 20}]}, {'limit': 20, 'next_m': None}), ('control 51', {'front_m': 900, 'length_m': 200, 'line_kmh': 100, 'sight_m': 500, 'tsr': [{'from_m': 500, 'to_m': 600, 'kmh': 40}]}, {'limit': 100, 'next_m': None})]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

prompt:
A restriction exactly at the sighting distance is not announced, or sighting is measured from the wrong end.

A restriction [from_m, to_m) applies while any part of the train (rear = front - length) is inside it: from <= front and to > rear. The limit is the minimum of the line speed and applicable restrictions. next_m is the start of the nearest restriction ahead of the front (from > front) within sight_m of the front whose speed is below the current limit, else None.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up | dn if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down']), ('control 10', {'floor': 10, 'dir': 'down', 'car_calls': [], 'hall_up': [], 'hall_down': [3]}, [3, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 76', {'floor': 0, 'dir': 'idle', 'car_calls': [6, 0, 9], 'hall_up': [2, 6], 'hall_down': [1]}, [2, 'up']), ('control 22', {'floor': 2, 'dir': 'idle', 'car_calls': [0, 3, 4], 'hall_up': [], 'hall_down': []}, [3, 'up']), ('boundary: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 39', {'floor': 0, 'dir': 'down', 'car_calls': [9, 2], 'hall_up': [5], 'hall_down': [6, 1, 7]}, [2, 'up']), ('control 71', {'floor': 9, 'dir': 'up', 'car_calls': [10, 2], 'hall_up': [], 'hall_down': [2, 5]}, [10, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 16', {'floor': 3, 'dir': 'up', 'car_calls': [0, 6, 5], 'hall_up': [10], 'hall_down': []}, [5, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 49', {'floor': 2, 'dir': 'idle', 'car_calls': [], 'hall_up': [9, 10], 'hall_down': [7]}, [9, 'up']), ('control 52', {'floor': 5, 'dir': 'idle', 'car_calls': [8], 'hall_up': [5, 10], 'hall_down': []}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down']), ('control 10', {'floor': 10, 'dir': 'down', 'car_calls': [], 'hall_up': [], 'hall_down': [3]}, [3, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 76', {'floor': 0, 'dir': 'idle', 'car_calls': [6, 0, 9], 'hall_up': [2, 6], 'hall_down': [1]}, [2, 'up']), ('control 22', {'floor': 2, 'dir': 'idle', 'car_calls': [0, 3, 4], 'hall_up': [], 'hall_down': []}, [3, 'up']), ('boundary: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 39', {'floor': 0, 'dir': 'down', 'car_calls': [9, 2], 'hall_up': [5], 'hall_down': [6, 1, 7]}, [2, 'up']), ('control 71', {'floor': 9, 'dir': 'up', 'car_calls': [10, 2], 'hall_up': [], 'hall_down': [2, 5]}, [10, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 16', {'floor': 3, 'dir': 'up', 'car_calls': [0, 6, 5], 'hall_up': [10], 'hall_down': []}, [5, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('sampled regression 49', {'floor': 2, 'dir': 'idle', 'car_calls': [], 'hall_up': [9, 10], 'hall_down': [7]}, [9, 'up']), ('control 52', {'floor': 5, 'dir': 'idle', 'car_calls': [8], 'hall_up': [5, 10], 'hall_down': []}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

prompt:
An up-travelling car stops for passengers who want to go down.

A car stopped at floor with direction up, down or idle chooses its next stop. Travelling up it stops at the nearest car call or up hall call above; failing that it runs to the highest down hall call above; failing that it reverses and applies the mirrored rule downwards (nearest car call or down call below, else lowest up call below). An idle car heads towards the nearest call other than its own floor (ties to the lower floor). Returns [floor, travel direction] or [None, idle].

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [min(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('control 58', {'floor': 0, 'dir': 'idle', 'car_calls': [], 'hall_up': [0], 'hall_down': [6]}, [6, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('control 42', {'floor': 10, 'dir': 'up', 'car_calls': [], 'hall_up': [4, 6, 1], 'hall_down': [7, 11]}, [11, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'down']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('control 58', {'floor': 0, 'dir': 'idle', 'car_calls': [], 'hall_up': [0], 'hall_down': [6]}, [6, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('control 42', {'floor': 10, 'dir': 'up', 'car_calls': [], 'hall_up': [4, 6, 1], 'hall_down': [7, 11]}, [11, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('sampled regression 17', {'floor': 9, 'dir': 'up', 'car_calls': [], 'hall_up': [9, 6, 1], 'hall_down': [10, 9, 11]}, [11, 'up']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

prompt:
The car reverses at the nearest down call and leaves higher down calls waiting.

A car stopped at floor with direction up, down or idle chooses its next stop. Travelling up it stops at the nearest car call or up hall call above; failing that it runs to the highest down hall call above; failing that it reverses and applies the mirrored rule downwards (nearest car call or down call below, else lowest up call below). An idle car heads towards the nearest call other than its own floor (ties to the lower floor). Returns [floor, travel direction] or [None, idle].

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), -c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 3', {'floor': 4, 'dir': 'idle', 'car_calls': [0, 11], 'hall_up': [1, 5], 'hall_down': [2, 8, 4]}, [5, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('boundary: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 9', {'floor': 3, 'dir': 'idle', 'car_calls': [0], 'hall_up': [9, 10, 4], 'hall_down': [7, 5, 3]}, [4, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('sampled regression 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 66', {'floor': 5, 'dir': 'idle', 'car_calls': [7, 2], 'hall_up': [8, 10, 1], 'hall_down': [7, 11]}, [7, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: c) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down' if d == 'up' else 'up')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 3', {'floor': 4, 'dir': 'idle', 'car_calls': [0, 11], 'hall_up': [1, 5], 'hall_down': [2, 8, 4]}, [5, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('boundary: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 9', {'floor': 3, 'dir': 'idle', 'car_calls': [0], 'hall_up': [9, 10, 4], 'hall_down': [7, 5, 3]}, [4, 'up']), ('boundary: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('sampled regression 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 66', {'floor': 5, 'dir': 'idle', 'car_calls': [7, 2], 'hall_up': [8, 10, 1], 'hall_down': [7, 11]}, [7, 'up']), ('boundary: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: idle car equidistant calls', {'floor': 5, 'dir': 'idle', 'car_calls': [3, 7], 'hall_up': [], 'hall_down': []}, [3, 'down']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('sampled regression 27', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [3, 6, 9], 'hall_down': [4, 7, 6]}, [4, 'down']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

prompt:
An idle car picks the wrong call when two are equally near, or ignores distance.

A car stopped at floor with direction up, down or idle chooses its next stop. Travelling up it stops at the nearest car call or up hall call above; failing that it runs to the highest down hall call above; failing that it reverses and applies the mirrored rule downwards (nearest car call or down call below, else lowest up call below). An idle car heads towards the nearest call other than its own floor (ties to the lower floor). Returns [floor, travel direction] or [None, idle].

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        pass
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 5', {'floor': 11, 'dir': 'up', 'car_calls': [8], 'hall_up': [10], 'hall_down': [10]}, [10, 'down']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down']), ('control 10', {'floor': 10, 'dir': 'down', 'car_calls': [], 'hall_up': [], 'hall_down': [3]}, [3, 'down'])], [('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 53', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [7, 3, 1], 'hall_down': []}, [1, 'up']), ('sampled regression 59', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [4, 10, 1], 'hall_down': []}, [1, 'up']), ('boundary: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('sampled regression 39', {'floor': 0, 'dir': 'down', 'car_calls': [9, 2], 'hall_up': [5], 'hall_down': [6, 1, 7]}, [2, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 44', {'floor': 1, 'dir': 'down', 'car_calls': [8, 1, 7], 'hall_up': [7], 'hall_down': [4, 7]}, [7, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('sampled regression 53', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [7, 3, 1], 'hall_down': []}, [1, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    f = x['floor']
    cc = set(x['car_calls'])
    up = set(x['hall_up'])
    dn = set(x['hall_down'])
    def ahead(sd):
        if sd == 'up':
            same = [c for c in cc | up if c > f]
            if same:
                return [min(same), 'up']
            opp = [c for c in dn if c > f]
            if opp:
                return [max(opp), 'up']
        else:
            same = [c for c in cc | dn if c < f]
            if same:
                return [max(same), 'down']
            opp = [c for c in up if c < f]
            if opp:
                return [min(opp), 'down']
        return None
    d = x['dir']
    if d == 'idle':
        allc = [c for c in sorted(cc | up | dn, key=lambda c: (abs(c - f), c)) if c != f]
        if not allc:
            return [None, 'idle']
        d = 'up' if allc[0] > f else 'down'
    r = ahead(d)
    if r is None:
        r = ahead('down')
    return r if r is not None else [None, 'idle']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 5', {'floor': 11, 'dir': 'up', 'car_calls': [8], 'hall_up': [10], 'hall_down': [10]}, [10, 'down']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 4', {'floor': 4, 'dir': 'down', 'car_calls': [10], 'hall_up': [6, 0], 'hall_down': [10]}, [0, 'down']), ('control 7', {'floor': 3, 'dir': 'down', 'car_calls': [7, 3], 'hall_up': [10], 'hall_down': [2, 4, 7]}, [2, 'down']), ('control 10', {'floor': 10, 'dir': 'down', 'car_calls': [], 'hall_up': [], 'hall_down': [3]}, [3, 'down'])], [('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 53', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [7, 3, 1], 'hall_down': []}, [1, 'up']), ('sampled regression 59', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [4, 10, 1], 'hall_down': []}, [1, 'up']), ('boundary: highest down call is the reversal', {'floor': 1, 'dir': 'up', 'car_calls': [], 'hall_up': [], 'hall_down': [4, 9]}, [9, 'up']), ('control 12', {'floor': 5, 'dir': 'idle', 'car_calls': [6, 9], 'hall_up': [6, 10], 'hall_down': [6, 2, 7]}, [6, 'up']), ('control 15', {'floor': 3, 'dir': 'down', 'car_calls': [], 'hall_up': [2, 4, 10], 'hall_down': [6, 5, 8]}, [2, 'down']), ('control 18', {'floor': 1, 'dir': 'idle', 'car_calls': [1], 'hall_up': [10, 1, 2], 'hall_down': [5]}, [2, 'up'])], [('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 1', {'floor': 1, 'dir': 'down', 'car_calls': [7, 4, 8], 'hall_up': [], 'hall_down': [10, 5, 3]}, [4, 'up']), ('sampled regression 39', {'floor': 0, 'dir': 'down', 'car_calls': [9, 2], 'hall_up': [5], 'hall_down': [6, 1, 7]}, [2, 'up']), ('boundary: idle car nearest call above', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [6], 'hall_down': [1]}, [6, 'up']), ('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('control 23', {'floor': 1, 'dir': 'idle', 'car_calls': [], 'hall_up': [5], 'hall_down': []}, [5, 'up']), ('control 26', {'floor': 7, 'dir': 'idle', 'car_calls': [9], 'hall_up': [3], 'hall_down': [10, 5, 9]}, [5, 'down']), ('control 29', {'floor': 4, 'dir': 'down', 'car_calls': [2], 'hall_up': [5], 'hall_down': []}, [2, 'down'])], [('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('sampled regression 44', {'floor': 1, 'dir': 'down', 'car_calls': [8, 1, 7], 'hall_up': [7], 'hall_down': [4, 7]}, [7, 'up']), ('boundary: idle car with a call at its own floor', {'floor': 4, 'dir': 'idle', 'car_calls': [], 'hall_up': [4], 'hall_down': [8]}, [8, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('control 34', {'floor': 11, 'dir': 'down', 'car_calls': [10], 'hall_up': [4, 5], 'hall_down': []}, [10, 'down']), ('control 37', {'floor': 5, 'dir': 'idle', 'car_calls': [], 'hall_up': [0, 1], 'hall_down': [1, 7]}, [7, 'up']), ('control 40', {'floor': 9, 'dir': 'up', 'car_calls': [1, 9], 'hall_up': [8, 10, 5], 'hall_down': []}, [10, 'up'])], [('regression: down car with nothing below', {'floor': 6, 'dir': 'down', 'car_calls': [], 'hall_up': [9], 'hall_down': []}, [9, 'up']), ('regression: up car with nothing above', {'floor': 6, 'dir': 'up', 'car_calls': [2], 'hall_up': [1], 'hall_down': []}, [2, 'down']), ('sampled regression 53', {'floor': 0, 'dir': 'down', 'car_calls': [3], 'hall_up': [7, 3, 1], 'hall_down': []}, [1, 'up']), ('boundary: down call passed on the way up', {'floor': 3, 'dir': 'up', 'car_calls': [8], 'hall_up': [], 'hall_down': [5]}, [8, 'up']), ('boundary: car call ahead of an up call', {'floor': 2, 'dir': 'up', 'car_calls': [6], 'hall_up': [4], 'hall_down': []}, [4, 'up']), ('control 45', {'floor': 9, 'dir': 'idle', 'car_calls': [9, 0], 'hall_up': [7], 'hall_down': [2, 6, 1]}, [6, 'down']), ('control 48', {'floor': 4, 'dir': 'down', 'car_calls': [9], 'hall_up': [4, 2, 1], 'hall_down': []}, [1, 'down']), ('control 51', {'floor': 6, 'dir': 'idle', 'car_calls': [6], 'hall_up': [9], 'hall_down': []}, [9, 'up'])]]
for label, args, expected in fixtures[N-1]:
    check(label, 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)

prompt:
A car with calls only behind it goes idle instead of reversing.

A car stopped at floor with direction up, down or idle chooses its next stop. Travelling up it stops at the nearest car call or up hall call above; failing that it runs to the highest down hall call above; failing that it reverses and applies the mirrored rule downwards (nearest car call or down call below, else lowest up call below). An idle car heads towards the nearest call other than its own floor (ties to the lower floor). Returns [floor, travel direction] or [None, idle].

split: open-access