#!/usr/bin/env python3 import sys import pathlib def read_input(): path = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("input.txt") return path.read_text().rstrip("\n") def parse(data): return data.splitlines() def part1(data): password = 0 postion = 50 for rotation in data: direction = rotation[0] dist = int(rotation[1:]) if direction == "R": postion += dist else: # left case postion -= dist postion %= 100 if postion == 0: password += 1 return password def part2(data): password = 0 pos = 50 modulo = 100 for rotation in data: direction = rotation[0] num = int(rotation[1:]) old_pos = pos if direction == 'L': pos -= num else: pos += num if old_pos != pos: old = old_pos new = pos if old < new: first = (old // modulo + 1) * modulo last = (new // modulo) * modulo if first <= new: crosses = (last - first) // modulo + 1 else: crosses = 0 else: if new % modulo == 0: first = new else: first = (new // modulo + 1) * modulo last = ((old - 1) // modulo) * modulo if first <= last: crosses = (last - first) // modulo + 1 else: crosses = 0 else: crosses = 0 password += crosses return password def main(): raw = read_input() data = parse(raw) r1 = part1(data) r2 = part2(data) print(r1) print(r2) if __name__ == "__main__": main()