From ba7f08b6ca184b78f97bf30b8a0ba97ed407bba8 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Thu, 13 Dec 2018 21:19:56 +1030 Subject: [PATCH] Small 2018 Day 13 cleanup --- 2018/day13.py | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/2018/day13.py b/2018/day13.py index b1c3d53..cc884c9 100644 --- a/2018/day13.py +++ b/2018/day13.py @@ -32,41 +32,26 @@ for y, line in enumerate(data): minecarts.append([x, y, carts[char][0], 0]) while len(minecarts) > 1: - minecarts = sorted(minecarts, key=lambda c: c[1]*200+c[0]) + minecarts = sorted(minecarts, key=lambda c: (c[1], c[0])) i = 0 while i < len(minecarts): mc = minecarts[i] - next_index = list(mc[0:2]+directions[mc[2]]) - g = grid[tuple(next_index)] - mc[0:2] = next_index - if g == 1 or g == 2: + mc[:2] = list(mc[:2]+directions[mc[2]]) + g = grid[tuple(mc[:2])] + if g in (1, 2): pass elif g == 4: - if mc[2] == 0: - mc[2] = 3 - elif mc[2] == 1: - mc[2] = 2 - elif mc[2] == 2: - mc[2] = 1 - elif mc[2] == 3: - mc[2] = 0 + mc[2] = (3, 2, 1, 0)[mc[2]] elif g == 5: - if mc[2] == 0: - mc[2] = 1 - elif mc[2] == 1: - mc[2] = 0 - elif mc[2] == 2: - mc[2] = 3 - elif mc[2] == 3: - mc[2] = 2 + mc[2] = (1, 0, 3, 2)[mc[2]] elif g == 3: - mc[2] = (mc[2]+turns[mc[3]])%4 + mc[2] = (mc[2]+turns[mc[3]]) % 4 mc[3] = (mc[3]+1) % 3 for j, mc2 in enumerate(minecarts): if mc2 == mc: continue - if np.array_equal(mc[0:2], mc2[0:2]): - print('Crash at', mc[0:2]) + if np.array_equal(mc[:2], mc2[:2]): + print('Crash at', mc[:2]) if j > i: minecarts.pop(j) minecarts.pop(i)