type Report = tuple[int, ...] type ReportList = list[Report] def parse(filename: str) -> ReportList: report_list: ReportList = [] with open(filename) as f: while line := f.readline().strip("\n"): report: Report = tuple(int(digit) for digit in line.split()) report_list.append(report) return report_list def is_safe(report: Report) -> bool: if not (report == tuple(sorted(report)) or report == tuple(sorted(report, reverse=True))): return False for i, value in enumerate(report[:-1]): if abs(value - report[i + 1]) > 3 or value == report[i + 1]: return False return True