diff options
| author | dzwdz | 2022-12-13 14:27:23 +0100 | 
|---|---|---|
| committer | dzwdz | 2022-12-13 14:27:23 +0100 | 
| commit | 0c77ec229fb715d91ad4b64fb37ff295542f6e93 (patch) | |
| tree | b1cf2537b4fd52b5cc167321094722bbbdc7d1c7 /22.13/main.py | |
| parent | 26dd7e867ab392771b4b9a095ac409a18b5e7a71 (diff) | |
day 13 part 1
Diffstat (limited to '22.13/main.py')
| -rw-r--r-- | 22.13/main.py | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/22.13/main.py b/22.13/main.py new file mode 100644 index 0000000..25b09a1 --- /dev/null +++ b/22.13/main.py @@ -0,0 +1,30 @@ +import json +import sys + +lines = [json.loads(s) for s in sys.stdin.readlines() if s.strip()] + +def cmp(a, b): +	def tolist(v): +		return v if type(v) == list else [v] +	i = 0 +	while True: +		if len(a) <= i and len(b) <= i: return 0 +		if len(a) <= i: return -1 +		if len(b) <= i: return 1 +		x = a[i] +		y = b[i] +		if type(x) == int and type(y) == int: +			if x < y: return -1 +			if x > y: return 1 +		else: +			r = cmp(tolist(x), tolist(y)) +			if r != 0: return r +		i += 1 + +partOne = 0 +for i in range(0, len(lines), 2): +	a = lines[i] +	b = lines[i+1] +	if cmp(a,b) != 1: +		partOne += i//2+1 +print(partOne)  | 
