#!/usr/bin/env python3 """CodeShell.kr - No Show (Misc, 100p) solver. The room starts empty and booking_events is stored out of order; replaying BOOK / RELEASE / MOVE by ascending seq gives the final occupancy bitmap. The assertion that every cell ends up in {0,1} is what shows the event stream is self-consistent and no conflict policy has to be guessed. """ import sqlite3
DB = "extracted/misc-no-show/room.sqlite"
defmain(): c = sqlite3.connect(DB) rows, seats = c.execute("SELECT rows, seats_per_row FROM room").fetchone() ev = list(c.execute( "SELECT seq, action, src_row, src_seat, dst_row, dst_seat " "FROM booking_events ORDER BY seq"))
occ = [[0] * seats for _ inrange(rows)] for _, act, sr, ss, dr, ds in ev: if act == "BOOK": occ[dr][ds] += 1 elif act == "RELEASE": occ[sr][ss] -= 1 else: occ[sr][ss] -= 1 occ[dr][ds] += 1
assert {v for r in occ for v in r} <= {0, 1} for r in occ: print("".join("#"if v else"."for v in r))