commit 033611cd9743d8f5432127dc4ea29b0308f27aa0 Author: rawhide kobayashi Date: Tue Nov 26 23:24:33 2024 -0600 initial diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/Advent Of Code.iml b/.idea/Advent Of Code.iml new file mode 100644 index 0000000..2c80e12 --- /dev/null +++ b/.idea/Advent Of Code.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..b624f6b --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,19 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..211825d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3f04fb3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2015/1.py b/2015/1.py new file mode 100644 index 0000000..958816a --- /dev/null +++ b/2015/1.py @@ -0,0 +1,16 @@ +input = "()()(()()()(()()((()((()))((()((((()()((((()))()((((())(((((((()(((((((((()(((())(()()(()((()()(()(())(()((((()((()()()((((())((((((()(()(((()())(()((((()))())(())(()(()()))))))))((((((((((((()())()())())(())))(((()()()((((()(((()(()(()()(()(()()(()(((((((())(())(())())))((()())()((((()()((()))(((()()()())))(())))((((())(((()())(())(()))(()((((()())))())((()(())(((()((((()((()(())())))((()))()()(()(()))))((((((((()())((((()()((((()(()())(((((()(()())()))())(((()))()(()(()(()((((()(())(()))(((((()()(()()()(()(((())())(((()()(()()))(((()()(((())())(()(())())()()(())()()()((()(((()(())((()()((())()))((()()))((()()())((((()(()()(()(((()))()(()))))((()(((()()()))(()(((())()(()((()())(()(()()(()())(())()(((()(()())()((((()((()))))())()))((()()()()(())()())()()()((((()))))(()(((()()(((((((())()))()((((()((())()(()())(())()))(()(()())(((((((())))(((()))())))))()))())((())(()()((())()())()))))()((()()())(())((())((((()())())()()()(((()))())))()()))())(()()()(()((((((()()))())()))()(((()(((())((((()()()(()))())()()))))())()))())((())()())(((((())())((())())))(((())(((())(((((()(((((())(()(()())())(()(())(()))(()((((()))())()))))())))((()(()))))())))(((((())()))())()))))()))))(((()))()))))((()))((()((()(()(())()())))(()()()(())()))()((((())))))))(())(()((()()))(()))(()))(()((()))))))()()((((()()))()())()))))))()()()))(()((())(()))((()()()())()(((()((((())())))()((((()(()))))))())))()()())()))(()))))(()())()))))))((())))))))())()))()((())())))(()((()))()))(())))))(()))()())()()))((()(()))()()()()))))())()()))())(())()()))()))((()))))()()(()())))))()()()))((((()))()))))(()(())))(()())))((())())(()))()))))()())))()())()())))))))))()()))))())))((())((()))))())))(((()())))))))(()))()()))(()))()))))()())))))())((((()())))))))())))()()))))))))()))()))))()))))))(())))))))))())))))))))))))))())())((())))))))))()))((())))()))))))))())()(()))))))())))))()()()())()(()()()(()())(()))()()()(()())))())())))()))))())))))))()()()()())(())())()())()))))(()()()()()))))()))())())))((()())()())))()))()))))(()())))()))))))))(((()))()()))))))))))))))))))))(()))(()((()))())))())(()))(()(()(())))))()(()))()))()()))))))))))))()((()())(())())()(())))))())()())((()()))))(()()))))())()(())()))))))))))))))))))))()))(()(()())))))))()()((()))()))))))((())))()))))))))((()))())()()))())()()))((()))())))))))))))(()())()))(())((()(()()))(()())(())))()())(()(())()()))))()))()(()))))))(()))))))))))(()))())))))))))())))))())))(())))))()))))(())())))))))))()(()))))()())))())(()))()())))))))))))))())()()))))()))))))())))))()))))(())(()()()()((())()))())(()))((())()))())())(())(()()))))()))(())()()((())(())))(())))()))())))))))))()(((((())())))(())()))))(())))((()))()(((((((()))))()()))(())))))()(()))))(()()))()))())))))))(()())()))))))))())))(()))())()))(())()((())())()())())(()(()))))()))))))((()())(())()()(()())))()()))(())(())(()))())))()))(()))()()))((((()))))()))((()()()))))()))()))())))(()))()))))(())))()))())()(()))()())))())))))))())))())))()()))))))(()))())())))()))()()())())))))))))))))())))()))(()()))))())))())()(())))())))))))))))))))))()()())())))))()()()((()(()))()()(())()())()))()))))()()()))))))((()))))))))()(()(()((((((()()((()())))))))))))()))())))))((())())(()))())))())))))())()()())(())))())))()())())(())))))))()()(())))()))())))())())())()))))))))()))(()()()())())())))(())())))))))()()())()))))())))())()(())())))))))()())()))(()()(())())))()(()((()()((()()(((((())(()())()))(())()))(())))(())))))))()))()))((()))()))()))))))))()))))))))((()()())(()))(((()))(())))()))((())(((())))()())))())))))((())))))(())())((((((())())()(()))()(()((()())))((())()(()(()))))(())(()()())(())))())((()(((())())))(((()())())))())()(())())((((()()))))())((()))()()()()(())(((((((()()()((()))())(()())))(())())((((()()(()))))()((())))((())()))()(((()))())))()))((()(()))(())(()((((())((((()()(()()))(((())(()))))((((()(()))(())))))((()))(()))((()(((()(()))(()(()((()(())(()(()(()(()()((()))())(((())(()(()))))(()))()()))(())))(())()(((())(()))()((((()()))))())(()))))((())()((((()(((()))())())(((()))()())((())(())())(())()(())()(()()((((((()()))))()()(((()()))))()())()(((()(()))(()(()())(()(()))))(((((()(((())())))))(((((()((()()((())())((((((()(())(()()((()()()()()()()(()()))()(((()))()))(((((((())(((()((()())()((((())(((()(())))()((()(()()()((())((()())()))()))())))())((((((()))(()(()()()))(()((()(()(()))()((()(((()()()((())(((((())()(()))())())((()(())))(()(()())(())((())())())(((()()()(())))))())(()))))))()))))))())((()()()))((()((((((()))(((()((((()()()(((()))())()(()()(((()((()()()()())()()))()()()(()(())((()))))(()))())))))))()(()()(((((())()(()(((((()((()(()()())(()((((((((()((((((())()((((()()()((()((()((((((()))((())))))))())()))((()(()))()(()()(()((())((()()((((((((((((()())(()()()))((((()((((((())(()))())(()()((()()))()(((((((()((()()((((((()(((())))((())))((((((((()()(((((((())(((((()())(((())((())()((((()(((((((()(()(((()((((((()(((()(((((((((((()()((()()(()))((()()(((()(((())))((((())()(()(((())()(()(((())(((((((((((()))())))((((((())((()()((((()())())((((()()))((())(((((()(()()(()()()((())(()((()()((((()(((((()((()(()((((()())((((((()(((((()()(()(()((((())))(())(())(())((((()(()()((((()((((()()((()((((((())))(((((()))))()))(()((((((((()(((())())(((())))(()(()((())(((()((()()(((((()((()()(((())()(()))(((((((())(()(((((()))((()((()((()))(())())((((()((((())()(()))(((()(((((((((((((((())(((((((((()))(((()(()()()()((((((()((())()((((((((()(())(((((((((((()(()((())()((()()(()(()()((((()()((())(()((()()(()()((((()(((((((())))((((())(())()(((()()((()()((((()((()(((()((())(((()()()((((()((((()()(()(()((((((((())(()(((((())(()())(((((((()())()(()((((()((())(()()())((((()()(((()((((())(())(()()(((((((((()()))()(((())(()(()((((((())(()()())(()))()()(((()(((()((())(()(((((((()(()(()((()(((((()(()((()(()((((((()((((()()((((()(((()((())(()(()((()()((((()()(())()(())(((())(()((((((((()())(((((((((()(())()((((())))()))()()(((((()()((((((())(()()(((()(()(((((((()(()(((((((())(())((((()((()(())))((((()()())(()))((()())((((()(((((()(()(())(()(()()())(((((()(((((()((((()()((((((((()()))(()((((((())((((())()(()(((()()()(((()(()(())(())(((((()(())())((((())(())(()(((()(((((())((((())())((()(((((((()(((())(()(()))(((((((((()((()((()()(()((((())(((()((())((((())(()(((()(((()(()((((()(((())(()(((()(()()(()(()((()()(()())(())())((()(()(((()(((()(((()()(((((((((()(((((((((()()(((()(((()())((((()(()(((()()()((())((((((((((())(()(((()((((()())((((()((()))(((()()()(((((()(((((((())((()())(()((((())((((((((())(()((()((((((((((()()((()((()()))(((()())()())()(((()())()()(()(()(((((((())()))(())()))())()()((())()((()((((()((()((())(((((()((((((()(())))(()))())(((()))((()()(()(((()))((((())()(((()))))()(()(())()(((((())(()(()(())(())()((()()()((((()(())((()())(()(()))(()(()(()()(())()()(()((())()((()))))()))((()(()()()()((()())(()))())()(()(((((((((())())((()((()((((((())()((((())(((())((()(()()()((())(()((())(((()((((()()((()(()(((((())()))()((((((()))((())(((()()))(((())(())()))(((((((())(())())()(())(((((()))()((()))()(()()((()()()()()())(((((((" + +floor = 0 +floor_traversal = list(input) + +for index, floor_step in enumerate(floor_traversal): + if floor_step == '(': + floor += 1 + + else: + floor -= 1 + + if floor == -1: + print(index + 1) + +print(floor) \ No newline at end of file diff --git a/2015/Day 1/1.py b/2015/Day 1/1.py new file mode 100644 index 0000000..958816a --- /dev/null +++ b/2015/Day 1/1.py @@ -0,0 +1,16 @@ +input = "()()(()()()(()()((()((()))((()((((()()((((()))()((((())(((((((()(((((((((()(((())(()()(()((()()(()(())(()((((()((()()()((((())((((((()(()(((()())(()((((()))())(())(()(()()))))))))((((((((((((()())()())())(())))(((()()()((((()(((()(()(()()(()(()()(()(((((((())(())(())())))((()())()((((()()((()))(((()()()())))(())))((((())(((()())(())(()))(()((((()())))())((()(())(((()((((()((()(())())))((()))()()(()(()))))((((((((()())((((()()((((()(()())(((((()(()())()))())(((()))()(()(()(()((((()(())(()))(((((()()(()()()(()(((())())(((()()(()()))(((()()(((())())(()(())())()()(())()()()((()(((()(())((()()((())()))((()()))((()()())((((()(()()(()(((()))()(()))))((()(((()()()))(()(((())()(()((()())(()(()()(()())(())()(((()(()())()((((()((()))))())()))((()()()()(())()())()()()((((()))))(()(((()()(((((((())()))()((((()((())()(()())(())()))(()(()())(((((((())))(((()))())))))()))())((())(()()((())()())()))))()((()()())(())((())((((()())())()()()(((()))())))()()))())(()()()(()((((((()()))())()))()(((()(((())((((()()()(()))())()()))))())()))())((())()())(((((())())((())())))(((())(((())(((((()(((((())(()(()())())(()(())(()))(()((((()))())()))))())))((()(()))))())))(((((())()))())()))))()))))(((()))()))))((()))((()((()(()(())()())))(()()()(())()))()((((())))))))(())(()((()()))(()))(()))(()((()))))))()()((((()()))()())()))))))()()()))(()((())(()))((()()()())()(((()((((())())))()((((()(()))))))())))()()())()))(()))))(()())()))))))((())))))))())()))()((())())))(()((()))()))(())))))(()))()())()()))((()(()))()()()()))))())()()))())(())()()))()))((()))))()()(()())))))()()()))((((()))()))))(()(())))(()())))((())())(()))()))))()())))()())()())))))))))()()))))())))((())((()))))())))(((()())))))))(()))()()))(()))()))))()())))))())((((()())))))))())))()()))))))))()))()))))()))))))(())))))))))())))))))))))))))())())((())))))))))()))((())))()))))))))())()(()))))))())))))()()()())()(()()()(()())(()))()()()(()())))())())))()))))())))))))()()()()())(())())()())()))))(()()()()()))))()))())())))((()())()())))()))()))))(()())))()))))))))(((()))()()))))))))))))))))))))(()))(()((()))())))())(()))(()(()(())))))()(()))()))()()))))))))))))()((()())(())())()(())))))())()())((()()))))(()()))))())()(())()))))))))))))))))))))()))(()(()())))))))()()((()))()))))))((())))()))))))))((()))())()()))())()()))((()))())))))))))))(()())()))(())((()(()()))(()())(())))()())(()(())()()))))()))()(()))))))(()))))))))))(()))())))))))))())))))())))(())))))()))))(())())))))))))()(()))))()())))())(()))()())))))))))))))())()()))))()))))))())))))()))))(())(()()()()((())()))())(()))((())()))())())(())(()()))))()))(())()()((())(())))(())))()))())))))))))()(((((())())))(())()))))(())))((()))()(((((((()))))()()))(())))))()(()))))(()()))()))())))))))(()())()))))))))())))(()))())()))(())()((())())()())())(()(()))))()))))))((()())(())()()(()())))()()))(())(())(()))())))()))(()))()()))((((()))))()))((()()()))))()))()))())))(()))()))))(())))()))())()(()))()())))())))))))())))())))()()))))))(()))())())))()))()()())())))))))))))))())))()))(()()))))())))())()(())))())))))))))))))))))()()())())))))()()()((()(()))()()(())()())()))()))))()()()))))))((()))))))))()(()(()((((((()()((()())))))))))))()))())))))((())())(()))())))())))))())()()())(())))())))()())())(())))))))()()(())))()))())))())())())()))))))))()))(()()()())())())))(())())))))))()()())()))))())))())()(())())))))))()())()))(()()(())())))()(()((()()((()()(((((())(()())()))(())()))(())))(())))))))()))()))((()))()))()))))))))()))))))))((()()())(()))(((()))(())))()))((())(((())))()())))())))))((())))))(())())((((((())())()(()))()(()((()())))((())()(()(()))))(())(()()())(())))())((()(((())())))(((()())())))())()(())())((((()()))))())((()))()()()()(())(((((((()()()((()))())(()())))(())())((((()()(()))))()((())))((())()))()(((()))())))()))((()(()))(())(()((((())((((()()(()()))(((())(()))))((((()(()))(())))))((()))(()))((()(((()(()))(()(()((()(())(()(()(()(()()((()))())(((())(()(()))))(()))()()))(())))(())()(((())(()))()((((()()))))())(()))))((())()((((()(((()))())())(((()))()())((())(())())(())()(())()(()()((((((()()))))()()(((()()))))()())()(((()(()))(()(()())(()(()))))(((((()(((())())))))(((((()((()()((())())((((((()(())(()()((()()()()()()()(()()))()(((()))()))(((((((())(((()((()())()((((())(((()(())))()((()(()()()((())((()())()))()))())))())((((((()))(()(()()()))(()((()(()(()))()((()(((()()()((())(((((())()(()))())())((()(())))(()(()())(())((())())())(((()()()(())))))())(()))))))()))))))())((()()()))((()((((((()))(((()((((()()()(((()))())()(()()(((()((()()()()())()()))()()()(()(())((()))))(()))())))))))()(()()(((((())()(()(((((()((()(()()())(()((((((((()((((((())()((((()()()((()((()((((((()))((())))))))())()))((()(()))()(()()(()((())((()()((((((((((((()())(()()()))((((()((((((())(()))())(()()((()()))()(((((((()((()()((((((()(((())))((())))((((((((()()(((((((())(((((()())(((())((())()((((()(((((((()(()(((()((((((()(((()(((((((((((()()((()()(()))((()()(((()(((())))((((())()(()(((())()(()(((())(((((((((((()))())))((((((())((()()((((()())())((((()()))((())(((((()(()()(()()()((())(()((()()((((()(((((()((()(()((((()())((((((()(((((()()(()(()((((())))(())(())(())((((()(()()((((()((((()()((()((((((())))(((((()))))()))(()((((((((()(((())())(((())))(()(()((())(((()((()()(((((()((()()(((())()(()))(((((((())(()(((((()))((()((()((()))(())())((((()((((())()(()))(((()(((((((((((((((())(((((((((()))(((()(()()()()((((((()((())()((((((((()(())(((((((((((()(()((())()((()()(()(()()((((()()((())(()((()()(()()((((()(((((((())))((((())(())()(((()()((()()((((()((()(((()((())(((()()()((((()((((()()(()(()((((((((())(()(((((())(()())(((((((()())()(()((((()((())(()()())((((()()(((()((((())(())(()()(((((((((()()))()(((())(()(()((((((())(()()())(()))()()(((()(((()((())(()(((((((()(()(()((()(((((()(()((()(()((((((()((((()()((((()(((()((())(()(()((()()((((()()(())()(())(((())(()((((((((()())(((((((((()(())()((((())))()))()()(((((()()((((((())(()()(((()(()(((((((()(()(((((((())(())((((()((()(())))((((()()())(()))((()())((((()(((((()(()(())(()(()()())(((((()(((((()((((()()((((((((()()))(()((((((())((((())()(()(((()()()(((()(()(())(())(((((()(())())((((())(())(()(((()(((((())((((())())((()(((((((()(((())(()(()))(((((((((()((()((()()(()((((())(((()((())((((())(()(((()(((()(()((((()(((())(()(((()(()()(()(()((()()(()())(())())((()(()(((()(((()(((()()(((((((((()(((((((((()()(((()(((()())((((()(()(((()()()((())((((((((((())(()(((()((((()())((((()((()))(((()()()(((((()(((((((())((()())(()((((())((((((((())(()((()((((((((((()()((()((()()))(((()())()())()(((()())()()(()(()(((((((())()))(())()))())()()((())()((()((((()((()((())(((((()((((((()(())))(()))())(((()))((()()(()(((()))((((())()(((()))))()(()(())()(((((())(()(()(())(())()((()()()((((()(())((()())(()(()))(()(()(()()(())()()(()((())()((()))))()))((()(()()()()((()())(()))())()(()(((((((((())())((()((()((((((())()((((())(((())((()(()()()((())(()((())(((()((((()()((()(()(((((())()))()((((((()))((())(((()()))(((())(())()))(((((((())(())())()(())(((((()))()((()))()(()()((()()()()()())(((((((" + +floor = 0 +floor_traversal = list(input) + +for index, floor_step in enumerate(floor_traversal): + if floor_step == '(': + floor += 1 + + else: + floor -= 1 + + if floor == -1: + print(index + 1) + +print(floor) \ No newline at end of file diff --git a/2015/Day 2/2.py b/2015/Day 2/2.py new file mode 100644 index 0000000..3862bb3 --- /dev/null +++ b/2015/Day 2/2.py @@ -0,0 +1,35 @@ +with open('input.txt', 'r') as f: + dimensions = f.read().splitlines() + +sqft_total = 0 +ribbon_length = 0 + +for box in dimensions: + local_dimensions = box.split('x') + local_dimensions = [int(item) for item in local_dimensions] + length = local_dimensions[0] + width = local_dimensions[1] + height = local_dimensions[2] + print(local_dimensions) + + volume = length * width * height + + local_dimensions.remove(max(local_dimensions)) + print(volume) + print(local_dimensions) + + ribbon_length += volume + ribbon_length += local_dimensions[0] * 2 + local_dimensions[1] * 2 + print(local_dimensions[0] * 2 + local_dimensions[1] * 2) + + side_a_area = length * width + side_b_area = width * height + side_c_area = length * height + + smallest_side = min(side_a_area, side_b_area, side_c_area) + + sqft_total += 2 * (side_a_area + side_b_area + side_c_area) + sqft_total += smallest_side + +print(f"sqft: {sqft_total}") +print(f"ribbon length: {ribbon_length}") diff --git a/2015/Day 2/input.txt b/2015/Day 2/input.txt new file mode 100644 index 0000000..74fefbf --- /dev/null +++ b/2015/Day 2/input.txt @@ -0,0 +1,1000 @@ +3x11x24 +13x5x19 +1x9x27 +24x8x21 +6x8x17 +19x18x22 +10x9x12 +12x2x5 +26x6x11 +9x23x15 +12x8x17 +13x29x10 +28x18x6 +22x28x26 +1x5x11 +29x26x12 +8x28x29 +27x4x21 +12x7x16 +7x4x23 +15x24x8 +15x14x2 +11x6x29 +28x19x9 +10x3x1 +5x20x13 +10x25x1 +22x17x7 +16x29x3 +18x22x8 +18x11x19 +21x24x20 +4x7x17 +22x27x12 +1x26x6 +5x27x24 +29x21x3 +25x30x2 +21x26x2 +10x24x27 +10x16x28 +18x16x23 +6x5x26 +19x12x20 +6x24x25 +11x20x7 +4x8x5 +2x13x11 +11x17x1 +13x24x6 +22x29x16 +4x24x20 +10x25x10 +12x29x23 +23x27x12 +11x21x9 +13x2x6 +15x30x2 +8x26x24 +24x7x30 +22x22x8 +29x27x8 +28x23x27 +13x16x14 +9x28x20 +21x4x30 +21x20x20 +11x17x30 +9x14x22 +20x2x6 +10x11x14 +1x8x23 +23x19x19 +26x10x13 +21x12x12 +25x7x24 +1x28x17 +20x23x9 +2x24x27 +20x24x29 +1x3x10 +5x20x14 +25x21x3 +15x5x22 +14x17x19 +27x3x18 +29x23x19 +14x21x19 +20x8x3 +22x27x12 +24x15x18 +9x10x19 +29x25x28 +14x22x6 +4x19x28 +4x24x14 +17x19x17 +7x19x29 +28x8x26 +7x20x16 +11x26x29 +2x18x3 +12x7x18 +11x15x21 +24x7x26 +2x22x23 +2x30x5 +1x19x8 +15x29x10 +15x26x22 +20x16x14 +25x29x22 +3x13x19 +1x12x30 +3x15x27 +19x9x11 +30x8x21 +26x12x20 +11x17x19 +17x25x1 +19x24x12 +30x6x20 +11x19x18 +18x15x29 +18x8x9 +25x15x5 +15x6x26 +13x27x19 +23x24x12 +3x15x28 +17x10x10 +15x4x7 +15x27x7 +21x8x11 +9x18x2 +7x20x20 +17x23x12 +2x19x1 +7x26x26 +13x23x8 +10x3x12 +11x1x9 +1x11x19 +25x14x26 +16x10x15 +7x6x11 +8x1x27 +20x28x17 +3x25x9 +30x7x5 +17x17x4 +23x25x27 +23x8x5 +13x11x1 +15x10x21 +22x16x1 +12x15x28 +27x18x26 +25x18x5 +21x3x27 +15x25x5 +29x27x19 +11x10x12 +22x16x21 +11x8x18 +6x10x23 +21x21x2 +13x27x28 +2x5x20 +23x16x20 +1x21x7 +22x2x13 +11x10x4 +7x3x4 +19x2x5 +21x11x1 +7x27x26 +12x4x23 +12x3x15 +25x7x4 +20x7x15 +16x5x11 +1x18x26 +11x27x10 +17x6x24 +19x13x16 +6x3x11 +4x19x18 +16x15x15 +1x11x17 +19x11x29 +18x19x1 +1x25x7 +8x22x14 +15x6x19 +5x30x18 +30x24x22 +11x16x2 +21x29x19 +20x29x11 +27x1x18 +20x5x30 +12x4x28 +3x9x30 +26x20x15 +18x25x18 +20x28x28 +21x5x3 +20x21x25 +19x27x22 +8x27x9 +1x5x15 +30x6x19 +16x5x15 +18x30x21 +4x15x8 +9x3x28 +18x15x27 +25x11x6 +17x22x15 +18x12x18 +14x30x30 +1x7x23 +27x21x12 +15x7x18 +16x17x24 +11x12x19 +18x15x21 +6x18x15 +2x21x4 +12x9x14 +19x7x25 +22x3x1 +29x19x7 +30x25x7 +6x27x27 +5x13x9 +21x4x18 +13x1x16 +11x21x25 +27x20x27 +14x25x9 +23x11x15 +22x10x26 +15x16x4 +14x16x21 +1x1x24 +17x27x3 +25x28x16 +12x2x29 +9x19x28 +12x7x17 +6x9x19 +15x14x24 +25x21x23 +26x27x25 +7x18x13 +15x10x6 +22x28x2 +15x2x14 +3x24x18 +30x22x7 +18x27x17 +29x18x7 +20x2x4 +4x20x26 +23x30x15 +5x7x3 +4x24x12 +24x30x20 +26x18x17 +6x28x3 +29x19x29 +14x10x4 +15x5x23 +12x25x4 +7x15x19 +26x21x19 +18x2x23 +19x20x3 +3x13x9 +29x21x24 +26x13x29 +30x27x4 +20x10x29 +21x18x8 +7x26x10 +29x16x21 +22x5x11 +17x15x2 +7x29x5 +6x18x15 +23x6x14 +10x30x14 +26x6x16 +24x13x25 +17x29x20 +4x27x19 +28x12x11 +23x20x3 +22x6x20 +29x9x19 +10x16x22 +30x26x4 +29x26x11 +2x11x15 +1x3x30 +30x30x29 +9x1x3 +30x13x16 +20x4x5 +23x28x11 +24x27x1 +4x25x10 +9x3x6 +14x4x15 +4x5x25 +27x14x13 +20x30x3 +28x15x25 +5x19x2 +10x24x29 +29x30x18 +30x1x25 +7x7x15 +1x13x16 +23x18x4 +1x28x8 +24x11x8 +22x26x19 +30x30x14 +2x4x13 +27x20x26 +16x20x17 +11x12x13 +28x2x17 +15x26x13 +29x15x25 +30x27x9 +2x6x25 +10x26x19 +16x8x23 +12x17x18 +26x14x22 +13x17x4 +27x27x29 +17x13x22 +9x8x3 +25x15x20 +14x13x16 +8x7x13 +12x4x21 +27x16x15 +6x14x5 +28x29x17 +23x17x25 +10x27x28 +1x28x21 +18x2x30 +25x30x16 +25x21x7 +2x3x4 +9x6x13 +19x6x10 +28x17x8 +13x24x28 +24x12x7 +5x19x5 +18x10x27 +16x1x6 +12x14x30 +1x2x28 +23x21x2 +13x3x23 +9x22x10 +10x17x2 +24x20x11 +30x6x14 +28x1x16 +24x20x1 +28x7x7 +1x24x21 +14x9x7 +22x8x15 +20x1x21 +6x3x7 +7x26x14 +5x7x28 +5x4x4 +15x7x28 +30x16x23 +7x26x2 +1x2x30 +24x28x20 +5x17x28 +4x15x20 +15x26x2 +1x3x23 +22x30x24 +9x20x16 +7x15x2 +6x21x18 +21x21x29 +29x10x10 +4x3x23 +23x2x18 +29x24x14 +29x29x16 +22x28x24 +21x18x24 +16x21x6 +3x9x22 +9x18x4 +22x9x9 +12x9x13 +18x21x14 +7x8x29 +28x28x14 +1x6x24 +11x11x3 +8x28x6 +11x16x10 +9x16x16 +6x6x19 +21x5x12 +15x17x12 +3x6x29 +19x1x26 +10x30x25 +24x26x21 +1x10x18 +6x1x16 +4x17x27 +17x11x27 +15x15x21 +14x23x1 +8x9x30 +22x22x25 +20x27x22 +12x7x9 +9x26x19 +26x25x12 +8x8x16 +28x15x10 +29x18x2 +25x22x6 +4x6x15 +12x18x4 +10x3x20 +17x28x17 +14x25x13 +14x10x3 +14x5x10 +7x7x22 +21x2x14 +1x21x5 +27x29x1 +6x20x4 +7x19x23 +28x19x27 +3x9x18 +13x17x17 +18x8x15 +26x23x17 +10x10x13 +11x5x21 +25x15x29 +6x23x24 +10x7x2 +19x10x30 +4x3x23 +22x12x6 +11x17x16 +6x8x12 +18x20x11 +6x2x2 +17x4x11 +20x23x22 +29x23x24 +25x11x21 +22x11x15 +29x3x9 +13x30x5 +17x10x12 +10x30x8 +21x16x17 +1x5x26 +22x15x16 +27x7x11 +16x8x18 +29x9x7 +25x4x17 +10x21x25 +2x19x21 +29x11x16 +18x26x21 +2x8x20 +17x29x27 +25x27x4 +14x3x14 +25x29x29 +26x18x11 +8x24x28 +7x30x24 +12x30x22 +29x20x6 +3x17x1 +6x15x14 +6x22x20 +13x26x26 +12x2x1 +7x14x12 +15x16x11 +3x21x4 +30x17x29 +9x18x27 +11x28x16 +22x3x25 +18x15x15 +2x30x12 +3x27x22 +10x8x8 +26x16x14 +15x2x29 +12x10x7 +21x20x15 +2x15x25 +4x14x13 +3x15x13 +29x8x3 +7x7x28 +15x10x24 +23x15x5 +5x7x14 +24x1x22 +1x11x13 +26x4x19 +19x16x26 +5x25x5 +17x25x14 +23x7x14 +24x6x17 +5x13x12 +20x20x5 +22x29x17 +11x17x29 +25x6x4 +29x8x16 +28x22x24 +24x23x17 +16x17x4 +17x8x25 +22x9x13 +24x4x8 +18x10x20 +21x23x21 +13x14x12 +23x26x4 +4x10x29 +2x18x18 +19x5x21 +2x27x23 +6x29x30 +21x9x20 +6x5x16 +25x10x27 +5x29x21 +24x14x19 +19x11x8 +2x28x6 +19x25x6 +27x1x11 +6x8x29 +18x25x30 +4x27x26 +8x12x1 +7x17x25 +7x14x27 +12x9x5 +14x29x13 +18x17x5 +23x1x3 +28x5x13 +3x2x26 +3x7x11 +1x8x7 +12x5x4 +2x30x21 +16x30x11 +3x26x4 +16x9x4 +11x9x22 +23x5x6 +13x20x3 +4x3x2 +14x10x29 +11x8x12 +26x15x16 +7x17x29 +18x19x18 +8x28x4 +22x6x13 +9x23x7 +11x23x20 +13x11x26 +15x30x13 +1x5x8 +5x10x24 +22x25x17 +27x20x25 +30x10x21 +16x28x24 +20x12x8 +17x25x1 +30x14x9 +14x18x6 +8x28x29 +12x18x29 +9x7x18 +6x12x25 +20x13x24 +22x3x12 +5x23x22 +8x10x17 +7x23x5 +10x26x27 +14x26x19 +10x18x24 +8x4x4 +16x15x11 +3x14x9 +18x5x30 +29x12x26 +16x13x12 +15x10x7 +18x5x26 +14x1x6 +10x8x29 +3x4x9 +19x4x23 +28x17x23 +30x7x17 +19x5x9 +26x29x28 +22x13x17 +28x2x1 +20x30x8 +15x13x21 +25x23x19 +27x23x1 +4x6x23 +29x29x24 +5x18x7 +4x6x30 +17x15x2 +27x4x2 +25x24x14 +28x8x30 +24x29x5 +14x30x14 +10x18x19 +15x26x22 +24x19x21 +29x23x27 +21x10x16 +7x4x29 +14x21x3 +21x4x28 +17x16x15 +24x7x13 +21x24x15 +25x11x16 +10x26x13 +23x20x14 +20x29x27 +14x24x14 +14x23x12 +18x6x5 +3x18x9 +8x18x19 +20x26x15 +16x14x13 +30x16x3 +17x13x4 +15x19x30 +20x3x8 +13x4x5 +12x10x15 +8x23x26 +16x8x15 +22x8x11 +12x11x18 +28x3x30 +15x8x4 +13x22x13 +21x26x21 +29x1x15 +28x9x5 +27x3x26 +22x19x30 +4x11x22 +21x27x20 +22x26x7 +19x28x20 +24x23x16 +26x12x9 +13x22x9 +5x6x23 +20x7x2 +18x26x30 +3x6x28 +24x18x13 +28x19x16 +25x21x25 +25x19x23 +22x29x10 +29x19x30 +4x7x27 +5x12x28 +8x26x6 +14x14x25 +17x17x2 +5x27x11 +8x2x2 +3x20x24 +26x10x9 +22x28x27 +18x15x20 +12x11x1 +5x14x30 +7x3x16 +2x16x16 +18x20x15 +13x14x29 +1x17x12 +13x5x23 +19x4x10 +25x19x11 +15x17x14 +1x28x27 +11x9x28 +9x10x18 +30x11x22 +21x21x20 +2x1x5 +2x25x1 +7x3x4 +22x15x29 +21x28x15 +12x12x4 +21x30x6 +15x10x7 +10x14x6 +21x26x18 +14x25x6 +9x7x11 +22x3x1 +1x16x27 +1x14x23 +2x13x8 +14x19x11 +21x26x1 +4x28x13 +12x16x20 +21x13x9 +3x4x13 +14x9x8 +21x21x12 +27x10x17 +6x20x6 +28x23x23 +2x28x12 +8x10x10 +3x9x2 +20x3x29 +19x4x16 +29x24x9 +26x20x8 +15x28x26 +18x17x10 +7x22x10 +20x15x9 +6x10x8 +7x26x21 +8x8x16 +15x6x29 +22x30x11 +18x25x8 +6x21x20 +7x23x25 +8x25x26 +11x25x27 +22x18x23 +3x2x14 +16x16x1 +15x13x11 +3x9x25 +29x25x24 +9x15x1 +12x4x1 +23x30x20 +3x1x23 +6x10x29 +28x13x24 +4x19x17 +6x6x25 +27x29x17 +12x13x2 +10x7x13 +14x15x8 +22x2x3 +27x17x19 +23x10x16 +5x9x25 +9x25x14 +11x18x6 +18x10x12 +9x4x15 +7x16x14 +17x24x10 +11x4x6 +12x9x17 +22x18x12 +6x24x24 +6x22x23 +5x17x30 +6x9x5 +17x20x10 +6x8x12 +14x17x13 +29x10x17 +22x4x5 +10x19x30 +22x29x11 +10x12x29 +21x22x26 +16x6x25 +1x26x24 +30x17x16 +27x28x5 +30x13x22 +7x26x12 +11x24x30 +1x17x25 +22x1x3 +29x24x6 +4x8x24 +13x9x20 +8x12x9 +21x25x4 +23x23x28 +5x2x19 +29x3x15 +22x1x14 +3x23x30 +8x25x3 +15x8x14 +30x14x6 +23x27x24 +19x1x2 +10x9x13 +13x8x7 +8x13x22 +5x15x20 +17x14x8 +5x11x20 +5x10x27 +24x17x19 +21x2x3 +15x30x26 +21x19x15 +2x7x23 +13x17x25 +30x15x19 +26x4x10 +2x25x8 +9x9x10 +2x25x8 +19x21x30 +17x26x12 +7x5x10 +2x22x14 +10x17x30 +1x8x5 +23x2x25 +22x29x8 +13x26x1 +26x3x30 +25x17x8 +25x18x26 +26x19x15 +8x28x10 +12x16x29 +30x6x29 +28x19x4 +27x26x18 +15x23x17 +5x21x30 +8x11x13 +2x26x7 +19x9x24 +3x22x23 +6x7x18 +4x26x30 +13x25x20 +17x3x15 +8x20x18 +23x18x23 +28x23x9 +16x3x4 +1x29x14 +20x26x22 +3x2x22 +23x8x17 +19x5x17 +21x18x20 +17x21x8 +30x28x1 +29x19x23 +12x12x11 +24x18x7 +21x18x14 +14x26x25 +9x11x3 +10x7x15 +27x6x28 +14x26x4 +28x4x1 +22x25x29 +6x26x6 +1x3x13 +26x22x12 +6x21x26 +23x4x27 +26x13x24 +5x24x28 +22x16x7 +3x27x24 +19x28x2 +11x13x9 +29x16x22 +30x10x24 +14x14x22 +22x23x16 +14x8x3 +20x5x14 +28x6x13 +3x15x25 +4x12x22 +15x12x25 +10x11x24 +7x7x6 +8x11x9 +21x10x29 +23x28x30 +8x29x26 +16x27x11 +1x10x2 +24x20x16 +7x12x28 +28x8x20 +14x10x30 +1x19x6 +4x12x20 +18x2x7 +24x18x17 +16x11x10 +1x12x22 +30x16x28 +18x12x11 +28x9x8 +23x6x17 +10x3x11 +5x12x8 +22x2x23 +9x19x14 +15x28x13 +27x20x23 +19x16x12 +19x30x15 +8x17x4 +10x22x18 +13x22x4 +3x12x19 +22x16x23 +11x8x19 +8x11x6 +7x14x7 +29x17x29 +21x8x12 +21x9x11 +20x1x27 +1x22x11 +5x28x4 +26x7x26 +30x12x18 +29x11x20 +3x12x15 +24x25x17 +14x6x11 \ No newline at end of file diff --git a/2015/Day 3/input.txt b/2015/Day 3/input.txt new file mode 100644 index 0000000..03504fc --- /dev/null +++ b/2015/Day 3/input.txt @@ -0,0 +1 @@ +^><^>>>^<^v<<^<><^<^v>^vv<>v>>^^^v<<<^>^<^v<^>^v><<<^>><>v>v^<<^>^<<^^^>v>>v^^>^>vv>>^>>v^>^v>^<^^v>^>^^v^^>v^^v><^><^<<>v^<^<^vv^>>>v^v^>^<>^v<^^vv^>^<>^^<vv<>^>v<^>^v>v^>^v<>^><>>v^v<><>v^v>>>>v^^>^><^^<^>^v^v<>v<<<^<v^^^<^^^>v<^v>>>>>v<^^^^>v<^<>>>>>>v^vvvv^^^v<^v^>v><^>^v<<>>vv^>v>v^^>vv^<^vvv<>><>><><^^^^<^^^<^v>>v>^v^^^>v^^^v>>^v^^<^>>^>^<>>^^<>>^vv>v^<^>>>><><^^v<><<<<^^<>>^<>vv^<^>v^^><^v>^^>v<>^v^<>^vv^>vvv>v>^>^>>^>><>>>^^^^v^<>v^^>^<>v<^^v><^v><>^^^^^v^v>>^^v><<><^^^^><^>v>><<<^v>v^^>^v^<^^v>v<^<<>>^v<<>v<^v^>v^>^v<<v>v>>v>v^^v>^v^>>>><>^>v>^v^>>>>v^<<<>vvv>><^^>^<><^^<^v^v^<^^>^<^v^<<<^^v^v>>><>^^>vv<<^v^<<<<^^>>>v>v<<<>^^>>>v>^>v>vv<<>^<^>^^<^>^v^<>v^><^^^>vv>><^v<^<<<><<^^<><>v>^>^<>>^^v>vv^<^^v>><^vv^<<<>vv^v<^<>v^^>><>^<^v<<<^<<^>>>^^<^^v>v^vvvv>v<>><^>^<<<v^^^v<>v>^^<v>>v>>v^>^<>v><>>>v^>^v<^<><<^>^^^>^><>^><^<>vv<>>v^v>^>^>^<^><>v<><>>>^^^<^v>>^<>>>vv^>vvvv>>><^>v<>^^^>v>>v^v^>^^<<^>^>>v<<><>v^^>v^><<^v^>^^<v><<<^v^<>^<>^>>^<^^<>^v<>v^>>><>^><>>vv>v^<^^^>v>^^>^v<><>>><>><^<>>v>v^^>^^<^^>^>>v>vv^^v<^<^v>><<^>^v>^^^<<>v^<^^v<<<>^^vv<^>vv>^>^<><<>vv<^>v^vv>^^^v><<^vv>^v<>vv^^<^<>^^v^<^vvv>v^^<>^^>^^>^<><<^v>^><^^vvvv<><>^v<>^><>v>><>vv^<<><<>><>v<^>^v>>^^v><<<>>^<^v^^^<^<><><^><<<<^^<>><><>>v><<vvvv^^vv><<^v^vvv><>v><>v<<<^><^^>v^>^^^v^v>><<>^v<>v^v<<<<^^^v^v<<>>>v>>vv>^^<><^v<>>v^>>>>>^>v^v^<^v^v^vvv>vvv^<vv>>v^^vv<^v>>>>vv<>v<>^^vv^v^>>vvv<<v>v>^><<<^>v^>^v^^^><<><<<^^<^^<>^^v<^v>^v<^>^>><>^v^v<<^>^>v><^>^vv^^^v^v^>^<<>>>>>v^<>^>v^vv^><<>>^^<>v^>^vvv^>v^v><>^><<>v>v<^<^><^^vv<<><>>v>>v>>^v<<>^vv<>^vv>v>v>^>^>>><><<>v^<<^v^^<<<>>vv<^<<>v<^^^<<^v^>^v>^^^v^v>>>v>v^v>^>^vv<^^<^<<v^<><<^vvv^^><>vv^v>v>^><<^^^^vvv^><^v<^>^<>>^>>vv^<>>^v>^>v>^<^<^^^<>>>>>>v>^<>^^v^><>><^v^^><>v^v<^<<<<^>^^>vv>><^v^vvv>v^^><^^<^<>>^^v^vv<>v<^<<v>v<>^v^><>v<^v>><<^<^v^>><^<^><>v>>^vv<^v>^>v<^>>^>>v^>^v<^v^v><<><>^><<<><>^<>^^^^v>^>^vvvvv>v>>v><<<^><<^v><^v>>>>^v<^v<<>>^>^<v>><<^>^>^v><><>^><v^><<^v^<^^><^^v^<<^v^^>>^v^<^>v^^<<^^^<><>^>v^v>v^>^v^vv>^^>>>>^^<^>>>^^v<^^v><<<>^>^^>^>^v<<<<>>^<<>>>v>^^<^v<>v<>v^>v^><^<^^>^^vv><>v>^<<<^><^^<^<^^v<^>v^v^^^><^>v^v>>^^v^>>>>><<>^>v>v<>>>v>^^^^>>v^<<^>>><^v^<<>>v><>^v^^><<>>^>^>vv<^<>^vvv^vv^v>^^<<<<<>^v^>^<>v^^<>v^v^<>vv^<^vv>>><<>v^^^>^>^^>>>vvv>^>v>v>>>^>vv^><>^><>v>^^^><><<<>>v^v<^<>^^<>^^<<><>^v<><>>>^vv<^<<^<^v>v<<<<<^^v<^v<><^>v>^v>>^v^><^^^^v<><><>vv^<>vv<^v<^^><^^v^v^<^^<<>v<>v^v<^>vvv><<^v>>v><>>>v<^>>v>^<>><>^v<^^>^<^v<^<<^^v<>>^>^>^v^^v^v>v>v<>v^>v^^>^^>><<>><<^^>><^v<<><<>>>>>>^^^^^<<>^<<^><<^^vvv<<>vv><<>v>v^v>>>>>^<>><^^^><<<<>>v<^>>>^^vvv>v<>>>>v>>^v^vvv<<>vvv<<^^^<>vv^^v<<>^^^>>^<^v^<^^>v^>>^<<^v<v^>>^>v^><^><>^>>>vv>><^^^>vv<<^^vv><^<>^>^^<^<>>^vv^>>^v><>v^>>><<<^^<^>^>v<^>^<^^<>>><^^<>^v^<<>vvv>v^v<<^^^><<^vv^v>v>v<<^v^<<<>^><>v>^vv^v<>vv^>^^<^>^>v^^v><>>^v<^<><><^vv<><<>v^^>^^<><<>^<^<<<>v>><^<<>^>^v^v<^>>^v<^>v<<>^^^<^v>>>^vvvv<vvvv>v<>v^<><>vvv<>^<<>^>>>>v^<^<><^v>v^>>v><>^><^<<>^>^v^>^v>^<>v^<^^>v>^>>>v^v>>>^<>^<>>>>>v>>vv^v<><<<><><<>>vv<^^v<<>v^v<^v<>>^v>>vvv^^v>>v>^>^>v><^>^^<<>^v<^<<<<^>v<^>>v^<^v>^v<<>^>^vvv<^^vv>^vv>vv<>>v>v>v^<<<<<^^v^>v>^<<>v^<<>>^<^>^^<>>>>^<^v<>v^^>^<^^v<^><>>>^v^vv<^v<^><><>><^^>^<^v^<^<>v<<<^v>v^^^<>v^^v^>><>^^<<^^v^<>^<^vv>>><^v>vv<^v<<>v>v^v>^v<^<>v^vvv>^vv<<<<^>>^^>><^v><<^>v^^<<<<<>^v<<^^>v<<<<^>^>^>>^>>>v^<>^^v>>>^vvv<^v<>>>vv>^^><^v>vv^>>v>v^<>^^>^<<^>^^^>>^vv>^^>vvvv<>>^^^^>>>v>v^^>vv>vv^<<>^><^><<>>^>^><^v^>v^<>^>v^^v^>^^>v<<<<^<<^>>v>v^^^<<>>^^v>v<<<<^^^v>^vv^>><>^v<>>>v>vvv^v^^v^>>vv>^>><>^v><^v^><^^>vv>^<^<^>>v>><><>^>^>v>vv>vv>^^>v>v^>^>^v>^^v>^<^v<>>vvv^^>^>vvv^^v<^<^>vv^^<^^^>v>vv<v<^>^v^<^>v<^>^<>vv^><>>^>>^<^><<>^<^>v>v><>>>^<<^><<^v<>>vv<^>>v>v>>>>^^>v<^v^>><<^<>>v><^><<^>^<<>>^^<><^^v>^^>vv>^v>^^v^<^<<>>v^^^<^><^<<><><<>^v>vvv^vvv^^>>^<^><>^<<<<^^<>>>v^<<^^v>><><v>^vv>vv^><>^><<><^^>^>^<><>><^^<><>^>><^v<<<<>>^v>^^vv^v^<><<vv>>v>>^v^<>>vv^<^>^<<>v<<<^vv<^vv^vv<^v^^^v>>v<^^<^^vvv<^^v<>>>^>v^>^^><>vv>v>v<<<^^v<^vv^v>^^^>>>^^<>^^<^vvv>><><<><^><<>^>^^vv>vv^^<^^<<><><v><<>v>vvv<^^^^<^>>><<<^^^<^>vv^^v>>v<vvv^^v^^<^v<^<>^<^v>>^><><>v>>>^^>>v^>><>v<><>>><>>>>><<^vvv<<><><<>^><><<^^v><<^>v>^>^v>v>>^^<><^>vv<^<^v>v<><^<<^><>^^^^^v>><>^>^vvv>v^vv^v^>v><>v^><>v>^^^^><^v^^^>^^><<^^>v>v<^v^^vv^<<<<^>v>v^v><>^><><>^v^<>^v>^v>v^<><^>>v<<^><^vv^<><^<>><>><<^^^^>v<^<^vv<><^vv><<^<v^>>^v>^>v^^v>vvv<v<>^>>vv^>>><>^v^^<^>v<<^<^^v^^v^<vv^><^v<^>>>vv^^^^v>^><^^^<><<^^>v<><><><>vv^><<^>^><^v<^<^v^v<<<<<<><vv>v<^><<><><<>>v>><^>^v>^v^<>v^^^><^^<<<^vv^vv>^v^vvv^^>v^><^<^<^<>^vv^^^>vv^v>>><<<^<>>v>v<^^<>>><><^v^^<<><<<>^<^^v^>v><^<^>^>>^<>^v><>>^vv^>^^<<<^v<>>^v<>vvv<<^^<<>>>>^^<><>^><>^vv^v<^>^v<>v^vv<><^vvv<><<^>>^^><><>^<>^>v^^v^><>>v>><^v>^v<<<>vvv^<^^v^<>^>>v<>^^><>>^><^^vv>><<>><^><>>^vv>vv^v^^v<<^^v^^vv<<^<<><>^<><^<^<>>^vvv>>^<^vv>^vv^>v>^<><^><^<>v^v^^<^<>^^v>>><^v<>v^v<<^>v><>^^<v^>>v>^<>^>^>^<^>v><<><><><<<>^>><^>>>^v<<<^<<>^><<^>>>>>v<^>v>>v^^>v^^><>v^v^vvvvv>>><<>^<v>^>^vv^^<^>>v>vv^v<^<>^v^<^<<><<<^vvv^>^^<<>>>vv<<^<><^v<^<><<^^>vv^v>v^^^>>>>^>vv<v>>^^v^^><>v<<^><^>^>v^v>><^v^>v<<^<^<^<^<>>v^^>><<<>vv<^^>^vv<<<^^v^^>v<<><^<>^^>^v<>v>><^^^vv^>^><>v^^>^v>^<<^v>^>>>>><^^^<>v>v^^<^v^>>v^<^>v^v>>>>^>>vv<>^<^v>v>v^v>^<>^>v<<>^<>>^<>>^<>v^><<>^v>>^^^^<<^v><>^<^>^^v><^^<^^v>v<<^>^>><<^^^vvv<<^vv<^^>v^^vv^<^^<<^^>>^^<v^>>v^^>v<^>^>vv>><v><^<^vv>^^v>^>v<<^vv><^^^^^^><<^>>>^v<>^^v<<<>><<<>^<<v^>^^^<^>^^^v<<>v^><<^^<<^v<<>^v>>vv>><<^v^^>v^v>^^v<><^^^<^^>v>^<>vvv^v^^^>v^^v<^>^^>>^v<><^><^<<^vv^<><<>v^vv^<<<^^>v<<>>>v<>v<><<^v>^^v>^^>v>^>^>v<>><>^>^>^vvvv<^^^^^v>v>><>^>^><>^^>v^^<<><^><<<<>v>^^>^v<<<>vvv>>v<^v>>v>v^<<<>^>^>^<>v<^^vv><^v<<^vv<^<<^^vv^^>vv<^>v>^^<^>v<<^^<^>^^^v^^>>v^vv^<^v>^<>^<^>>^<^v<>v><^^<><>^>v<^<^vv>><^v>^<>^^>^<><<>^<>><<>vvv^<<^^>>v<^>>vv>^v^^^v<>v<>><>^vv^>vv^ \ No newline at end of file diff --git a/2015/Day 3/main.py b/2015/Day 3/main.py new file mode 100644 index 0000000..398e8fd --- /dev/null +++ b/2015/Day 3/main.py @@ -0,0 +1,99 @@ +with open('input.txt', 'r') as f: + puzzle = f.read() + +directions = list(puzzle) + +santa_x = 0 +santa_y = 0 + +robo_santa_x = 0 +robo_santa_y = 0 + +houses = { + 0: { + 0: { + 'presents': 1 + } + } +} + +house_count = 1 + +loop_iter = 1 + +for direction in directions: + if loop_iter % 2 == 0: + if direction == '>': + robo_santa_x += 1 + + elif direction == '<': + robo_santa_x -= 1 + + elif direction == '^': + robo_santa_y += 1 + + elif direction == 'v': + robo_santa_y -= 1 + + if robo_santa_x not in houses: + houses.update({ + robo_santa_x: { + robo_santa_y: { + 'presents': 1 + } + } + }) + + house_count += 1 + + elif robo_santa_y not in houses[robo_santa_x]: + houses[robo_santa_x].update({ + robo_santa_y: { + 'presents': 1 + } + }) + + house_count += 1 + + else: + houses[robo_santa_x][robo_santa_y]['presents'] += 1 + + else: + if direction == '>': + santa_x += 1 + + elif direction == '<': + santa_x -= 1 + + elif direction == '^': + santa_y += 1 + + elif direction == 'v': + santa_y -= 1 + + if santa_x not in houses: + houses.update({ + santa_x: { + santa_y: { + 'presents': 1 + } + } + }) + + house_count += 1 + + elif santa_y not in houses[santa_x]: + houses[santa_x].update({ + santa_y: { + 'presents': 1 + } + }) + + house_count += 1 + + else: + houses[santa_x][santa_y]['presents'] += 1 + + loop_iter += 1 + +print(house_count) \ No newline at end of file diff --git a/2015/Day 4/main.py b/2015/Day 4/main.py new file mode 100644 index 0000000..99dbe79 --- /dev/null +++ b/2015/Day 4/main.py @@ -0,0 +1,24 @@ +puzzle = "iwrupvqb" + +import hashlib +import sys + +iterations = 0 + +while True: + zero_count = 0 + key_increment = f'{puzzle}{iterations}' + hash_check = list(hashlib.md5(key_increment.encode()).hexdigest()) + for index, x in enumerate(hash_check): + if x == '0': + zero_count += 1 + print(zero_count) + if zero_count >= 6: + print(iterations) + print(hash_check) + sys.exit() + + else: + break + + iterations += 1 \ No newline at end of file diff --git a/2015/Day 5/gold.py b/2015/Day 5/gold.py new file mode 100644 index 0000000..f84b7e3 --- /dev/null +++ b/2015/Day 5/gold.py @@ -0,0 +1,37 @@ +with open('puzzle.txt', 'r') as f: + strings = f.read().splitlines() + +nice_strings = 0 + +def second_method(even_pairs, odd_pairs): + for index_even, even_pair in enumerate(even_pairs): + for index_odd, odd_pair in enumerate(odd_pairs): + if even_pair == odd_pair and index_odd != index_even and index_even != index_odd + 1: + return True + return False + +for string in strings: + string_list = list(string) + for character_idx in range(len(string_list) - 2): + if string_list[character_idx] == string_list[character_idx + 2]: + even_pairs = [] + odd_pairs = [] + for character_idx_b in range(len(string_list) - 1): + if character_idx_b % 2 == 0: + even_pairs.append(f'{string_list[character_idx_b]}{string_list[character_idx_b + 1]}') + else: + odd_pairs.append(f'{string_list[character_idx_b]}{string_list[character_idx_b + 1]}') + + if len(even_pairs) != len(set(even_pairs)) or len(odd_pairs) != len(set(odd_pairs)): + nice_strings += 1 + print(nice_strings, "First method") + break + + else: + if second_method(even_pairs, odd_pairs): + nice_strings += 1 + print(nice_strings, "Second method", string) + break + + +print(nice_strings) diff --git a/2015/Day 5/main.py b/2015/Day 5/main.py new file mode 100644 index 0000000..51e9c4f --- /dev/null +++ b/2015/Day 5/main.py @@ -0,0 +1,24 @@ +with open('puzzle.txt', 'r') as f: + strings = f.read().splitlines() + +nice_strings = 0 +vowels = ['a', 'e', 'i', 'o', 'u'] +naughty_strings = ['ab', 'cd', 'pq', 'xy'] + +for string in strings: + + if not any(naughty_bit in string for naughty_bit in naughty_strings): + vowel_count = 0 + string_list = list(string) + for vowel in vowels: + for character in string_list: + if character == vowel: + vowel_count += 1 + + if vowel_count >= 3: + for character_idx in range(len(string_list) - 1): + if string_list[character_idx] == string_list[character_idx + 1]: + nice_strings += 1 + break + +print(nice_strings) \ No newline at end of file diff --git a/2015/Day 5/puzzle.txt b/2015/Day 5/puzzle.txt new file mode 100644 index 0000000..4a1970a --- /dev/null +++ b/2015/Day 5/puzzle.txt @@ -0,0 +1,1000 @@ +sszojmmrrkwuftyv +isaljhemltsdzlum +fujcyucsrxgatisb +qiqqlmcgnhzparyg +oijbmduquhfactbc +jqzuvtggpdqcekgk +zwqadogmpjmmxijf +uilzxjythsqhwndh +gtssqejjknzkkpvw +wrggegukhhatygfi +vhtcgqzerxonhsye +tedlwzdjfppbmtdx +iuvrelxiapllaxbg +feybgiimfthtplui +qxmmcnirvkzfrjwd +vfarmltinsriqxpu +oanqfyqirkraesfq +xilodxfuxphuiiii +yukhnchvjkfwcbiq +bdaibcbzeuxqplop +ivegnnpbiyxqsion +ybahkbzpditgwdgt +dmebdomwabxgtctu +ibtvimgfaeonknoh +jsqraroxudetmfyw +dqdbcwtpintfcvuz +tiyphjunlxddenpj +fgqwjgntxagidhah +nwenhxmakxqkeehg +zdoheaxqpcnlhnen +tfetfqojqcdzlpbm +qpnxkuldeiituggg +xwttlbdwxohahwar +hjkwzadmtrkegzye +koksqrqcfwcaxeof +wulwmrptktliyxeq +gyufbedqhhyqgqzj +txpunzodohikzlmj +jloqfuejfkemcrvu +amnflshcheuddqtc +pdvcsduggcogbiia +yrioavgfmeafjpcz +uyhbtmbutozzqfvq +mwhgfwsgyuwcdzik +auqylgxhmullxpaa +lgelzivplaeoivzh +uyvcepielfcmswoa +qhirixgwkkccuzlp +zoonniyosmkeejfg +iayfetpixkedyana +ictqeyzyqswdskiy +ejsgqteafvmorwxe +lhaiqrlqqwfbrqdx +ydjyboqwhfpqfydc +dwhttezyanrnbybv +edgzkqeqkyojowvr +rmjfdwsqamjqehdq +ozminkgnkwqctrxz +bztjhxpjthchhfcd +vrtioawyxkivrpiq +dpbcsznkpkaaclyy +vpoypksymdwttpvz +hhdlruwclartkyap +bqkrcbrksbzcggbo +jerbbbnxlwfvlaiw +dwkasufidwjrjfbf +kkfxtjhbnmqbmfwf +vmnfziwqxmioukmj +rqxvcultipkecdtu +fhmfdibhtjzkiqsd +hdpjbuzzbyafqrpd +emszboysjuvwwvts +msyigmwcuybfiooq +druyksfnbluvnwoh +fvgstvynnfbvxhsx +bmzalvducnqtuune +lzwkzfzttsvpllei +olmplpvjamynfyfd +padcwfkhystsvyfb +wjhbvxkwtbfqdilb +hruaqjwphonnterf +bufjobjtvxtzjpmj +oiedrjvmlbtwyyuy +sgiemafwfztwsyju +nsoqqfudrtwszyqf +vonbxquiiwxnazyl +yvnmjxtptujwqudn +rrnybqhvrcgwvrkq +taktoxzgotzxntfu +quffzywzpxyaepxa +rfvjebfiddcfgmwv +iaeozntougqwnzoh +scdqyrhoqmljhoil +bfmqticltmfhxwld +brbuktbyqlyfpsdl +oidnyhjkeqenjlhd +kujsaiqojopvrygg +vebzobmdbzvjnjtk +uunoygzqjopwgmbg +piljqxgicjzgifso +ikgptwcjzywswqnw +pujqsixoisvhdvwi +trtuxbgigogfsbbk +mplstsqclhhdyaqk +gzcwflvmstogdpvo +tfjywbkmimyyqcjd +gijutvhruqcsiznq +ibxkhjvzzxgavkha +btnxeqvznkxjsgmq +tjgofgauxaelmjoq +sokshvyhlkxerjrv +ltogbivktqmtezta +uduwytzvqvfluyuf +msuckpthtgzhdxan +fqmcglidvhvpirzr +gwztkqpcwnutvfga +bsjfgsrntdhlpqbx +xloczbqybxmiopwt +orvevzyjliomkkgu +mzjbhmfjjvaziget +tlsdxuhwdmghdyjb +atoecyjhwmznaewi +pyxpyvvipbqibiox +ajbfmpqqobfsmesj +siknbzefjblnohgd +eqfhgewbblwdfkmc +opylbscrotckkrbk +lbwxbofgjkzdxkle +ceixfjstaptdomvm +hnkrqxifjmmjktie +aqykzeuzvvetoygd +fouahjimfcisxima +prkzhutbqsyrhjzx +qqwliakathnsbzne +sayhgqtlcqqidqhj +ygduolbysehdudra +zricvxhdzznuxuce +ucvzakslykpgsixd +udirhgcttmyspgsb +yuwzppjzfsjhhdzi +gtqergjiuwookwre +xvxexbjyjkxovvwf +mlpaqhnnkqxrmwmm +ezuqbrjozwuqafhb +mcarusdthcbsonoq +weeguqeheeiigrue +pngtfugozxofaqxv +copphvbjcmfspenv +jiyahihykjjkdaya +gdqnmesvptuyrfwp +vbdscfywqmfxbohh +crtrfuxyjypzubrg +seihvevtxywxhflp +fvvpmgttnapklwou +qmqaqsajmqwhetpk +zetxvrgjmblxvakr +kpvwblrizaabmnhz +mwpvvzaaicntrkcp +clqyjiegtdsswqfm +ymrcnqgcpldgfwtm +nzyqpdenetncgnwq +cmkzevgacnmdkqro +kzfdsnamjqbeirhi +kpxrvgvvxapqlued +rzskbnfobevzrtqu +vjoahbfwtydugzap +ykbbldkoijlvicbl +mfdmroiztsgjlasb +quoigfyxwtwprmdr +ekxjqafwudgwfqjm +obtvyjkiycxfcdpb +lhoihfnbuqelthof +eydwzitgxryktddt +rxsihfybacnpoyny +bsncccxlplqgygtw +rvmlaudsifnzhcqh +huxwsyjyebckcsnn +gtuqzyihwhqvjtes +zreeyomtngvztveq +nwddzjingsarhkxb +nuqxqtctpoldrlsh +wkvnrwqgjooovhpf +kwgueyiyffudtbyg +tpkzapnjxefqnmew +ludwccvkihagvxal +lfdtzhfadvabghna +njqmlsnrkcfhtvbb +cajzbqleghhnlgap +vmitdcozzvqvzatp +eelzefwqwjiywbcz +uyztcuptfqvymjpi +aorhnrpkjqqtgnfo +lfrxfdrduoeqmwwp +vszpjvbctblplinh +zexhadgpqfifcqrz +ueirfnshekpemqua +qfremlntihbwabtb +nwznunammfexltjc +zkyieokaaogjehwt +vlrxgkpclzeslqkq +xrqrwfsuacywczhs +olghlnfjdiwgdbqc +difnlxnedpqcsrdf +dgpuhiisybjpidsj +vlwmwrikmitmoxbt +sazpcmcnviynoktm +pratafauetiknhln +ilgteekhzwlsfwcn +ywvwhrwhkaubvkbl +qlaxivzwxyhvrxcf +hbtlwjdriizqvjfb +nrmsononytuwslsa +mpxqgdthpoipyhjc +mcdiwmiqeidwcglk +vfbaeavmjjemfrmo +qzcbzmisnynzibrc +shzmpgxhehhcejhb +wirtjadsqzydtyxd +qjlrnjfokkqvnpue +dxawdvjntlbxtuqc +wttfmnrievfestog +eamjfvsjhvzzaobg +pbvfcwzjgxahlrag +omvmjkqqnobvnzkn +lcwmeibxhhlxnkzv +uiaeroqfbvlazegs +twniyldyuonfyzqw +wgjkmsbwgfotdabi +hnomamxoxvrzvtew +ycrcfavikkrxxfgw +isieyodknagzhaxy +mgzdqwikzullzyco +mumezgtxjrrejtrs +nwmwjcgrqiwgfqel +wjgxmebfmyjnxyyp +durpspyljdykvzxf +zuslbrpooyetgafh +kuzrhcjwbdouhyme +wyxuvbciodscbvfm +kbnpvuqwmxwfqtqe +zddzercqogdpxmft +sigrdchxtgavzzjh +lznjolnorbuddgcs +ycnqabxlcajagwbt +bnaudeaexahdgxsj +rlnykxvoctfwanms +jngyetkoplrstfzt +tdpxknwacksotdub +yutqgssfoptvizgr +lzmqnxeqjfnsxmsa +iqpgfsfmukovsdgu +qywreehbidowtjyz +iozamtgusdctvnkw +ielmujhtmynlwcfd +hzxnhtbnmmejlkyf +ftbslbzmiqkzebtd +bcwdqgiiizmohack +dqhfkzeddjzbdlxu +mxopokqffisxosci +vciatxhtuechbylk +khtkhcvelidjdena +blatarwzfqcapkdt +elamngegnczctcck +xeicefdbwrxhuxuf +sawvdhjoeahlgcdr +kmdcimzsfkdfpnir +axjayzqlosrduajb +mfhzreuzzumvoggr +iqlbkbhrkptquldb +xcvztvlshiefuhgb +pkvwyqmyoazocrio +ajsxkdnerbmhyxaj +tudibgsbnpnizvsi +cxuiydkgdccrqvkh +cyztpjesdzmbcpot +nnazphxpanegwitx +uphymczbmjalmsct +yyxiwnlrogyzwqmg +gmqwnahjvvdyhnfa +utolskxpuoheugyl +mseszdhyzoyavepd +ycqknvbuvcjfgmlc +sknrxhxbfpvpeorn +zqxqjetooqcodwml +sesylkpvbndrdhsy +fryuxvjnsvnjrxlw +mfxusewqurscujnu +mbitdjjtgzchvkfv +ozwlyxtaalxofovd +wdqcduaykxbunpie +rlnhykxiraileysk +wgoqfrygttlamobg +kflxzgxvcblkpsbz +tmkisflhativzhde +owsdrfgkaamogjzd +gaupjkvkzavhfnes +wknkurddcknbdleg +lltviwincmbtduap +qwzvspgbcksyzzmb +ydzzkumecryfjgnk +jzvmwgjutxoysaam +icrwpyhxllbardkr +jdopyntshmvltrve +afgkigxcuvmdbqou +mfzzudntmvuyhjzt +duxhgtwafcgrpihc +tsnhrkvponudumeb +sqtvnbeiigdzbjgv +eczmkqwvnsrracuo +mhehsgqwiczaiaxv +kaudmfvifovrimpd +lupikgivechdbwfr +mwaaysrndiutuiqx +aacuiiwgaannunmm +tjqjbftaqitukwzp +lrcqyskykbjpaekn +lirrvofbcqpjzxmr +jurorvzpplyelfml +qonbllojmloykjqe +sllkzqujfnbauuqp +auexjwsvphvikali +usuelbssqmbrkxyc +wyuokkfjexikptvv +wmfedauwjgbrgytl +sfwvtlzzebxzmuvw +rdhqxuechjsjcvaf +kpavhqkukugocsxu +ovnjtumxowbxduts +zgerpjufauptxgat +pevvnzjfwhjxdoxq +pmmfwxajgfziszcs +difmeqvaghuitjhs +icpwjbzcmlcterwm +ngqpvhajttxuegyh +mosjlqswdngwqsmi +frlvgpxrjolgodlu +eazwgrpcxjgoszeg +bbtsthgkjrpkiiyk +tjonoglufuvsvabe +xhkbcrofytmbzrtk +kqftfzdmpbxjynps +kmeqpocbnikdtfyv +qjjymgqxhnjwxxhp +dmgicrhgbngdtmjt +zdxrhdhbdutlawnc +afvoekuhdboxghvx +hiipezngkqcnihty +bbmqgheidenweeov +suprgwxgxwfsgjnx +adeagikyamgqphrj +zzifqinoeqaorjxg +adhgppljizpaxzld +lvxyieypvvuqjiyc +nljoakatwwwoovzn +fcrkfxclcacshhmx +ownnxqtdhqbgthch +lmfylrcdmdkgpwnj +hlwjfbvlswbzpbjr +mkofhdtljdetcyvp +synyxhifbetzarpo +agnggugngadrcxoc +uhttadmdmhidpyjw +ohfwjfhunalbubpr +pzkkkkwrlvxiuysn +kmidbxmyzkjrwjhu +egtitdydwjxmajnw +civoeoiuwtwgbqqs +dfptsguzfinqoslk +tdfvkreormspprer +zvnvbrmthatzztwi +ffkyddccrrfikjde +hrrmraevdnztiwff +qaeygykcpbtjwjbr +purwhitkmrtybslh +qzziznlswjaussel +dfcxkvdpqccdqqxj +tuotforulrrytgyn +gmtgfofgucjywkev +wkyoxudvdkbgpwhd +qbvktvfvipftztnn +otckgmojziezmojb +inxhvzbtgkjxflay +qvxapbiatuudseno +krpvqosbesnjntut +oqeukkgjsfuqkjbb +prcjnyymnqwqksiz +vuortvjxgckresko +orqlyobvkuwgathr +qnpyxlnazyfuijox +zwlblfkoklqmqzkw +hmwurwtpwnrcsanl +jzvxohuakopuzgpf +sfcpnxrviphhvxmx +qtwdeadudtqhbely +dbmkmloasqphnlgj +olylnjtkxgrubmtk +nxsdbqjuvwrrdbpq +wbabpirnpcsmpipw +hjnkyiuxpqrlvims +enzpntcjnxdpuqch +vvvqhlstzcizyimn +triozhqndbttglhv +fukvgteitwaagpzx +uhcvukfbmrvskpen +tizcyupztftzxdmt +vtkpnbpdzsaluczz +wodfoyhoekidxttm +otqocljrmwfqbxzu +linfbsnfvixlwykn +vxsluutrwskslnye +zbshygtwugixjvsi +zdcqwxvwytmzhvoo +wrseozkkcyctrmei +fblgtvogvkpqzxiy +opueqnuyngegbtnf +qxbovietpacqqxok +zacrdrrkohfygddn +gbnnvjqmkdupwzpq +qgrgmsxeotozvcak +hnppukzvzfmlokid +dzbheurndscrrtcl +wbgdkadtszebbrcw +fdmzppzphhpzyuiz +bukomunhrjrypohj +ohodhelegxootqbj +rsplgzarlrknqjyh +punjjwpsxnhpzgvu +djdfahypfjvpvibm +mlgrqsmhaozatsvy +xwktrgyuhqiquxgn +wvfaoolwtkbrisvf +plttjdmguxjwmeqr +zlvvbwvlhauyjykw +cigwkbyjhmepikej +masmylenrusgtyxs +hviqzufwyetyznze +nzqfuhrooswxxhus +pdbdetaqcrqzzwxf +oehmvziiqwkzhzib +icgpyrukiokmytoy +ooixfvwtiafnwkce +rvnmgqggpjopkihs +wywualssrmaqigqk +pdbvflnwfswsrirl +jeaezptokkccpbuj +mbdwjntysntsaaby +ldlgcawkzcwuxzpz +lwktbgrzswbsweht +ecspepmzarzmgpjm +qmfyvulkmkxjncai +izftypvwngiukrns +zgmnyjfeqffbooww +nyrkhggnprhedows +yykzzrjmlevgffah +mavaemfxhlfejfki +cmegmfjbkvpncqwf +zxidlodrezztcrij +fseasudpgvgnysjv +fupcimjupywzpqzp +iqhgokavirrcvyys +wjmkcareucnmfhui +nftflsqnkgjaexhq +mgklahzlcbapntgw +kfbmeavfxtppnrxn +nuhyvhknlufdynvn +nviogjxbluwrcoec +tyozixxxaqiuvoys +kgwlvmvgtsvxojpr +moeektyhyonfdhrb +kahvevmmfsmiiqex +xcywnqzcdqtvhiwd +fnievhiyltbvtvem +jlmndqufirwgtdxd +muypbfttoeelsnbs +rypxzbnujitfwkou +ubmmjbznskildeoj +ofnmizdeicrmkjxp +rekvectjbmdnfcib +yohrojuvdexbctdh +gwfnfdeibynzjmhz +jfznhfcqdwlpjull +scrinzycfhwkmmso +mskutzossrwoqqsi +rygoebkzgyzushhr +jpjqiycflqkexemx +arbufysjqmgaapnl +dbjerflevtgweeoj +snybnnjlmwjvhois +fszuzplntraprmbj +mkvaatolvuggikvg +zpuzuqygoxesnuyc +wnpxvmxvllxalulm +eivuuafkvudeouwy +rvzckdyixetfuehr +qgmnicdoqhveahyx +miawwngyymshjmpj +pvckyoncpqeqkbmx +llninfenrfjqxurv +kzbjnlgsqjfuzqtp +rveqcmxomvpjcwte +bzotkawzbopkosnx +ktqvpiribpypaymu +wvlzkivbukhnvram +uohntlcoguvjqqdo +ajlsiksjrcnzepkt +xsqatbldqcykwusd +ihbivgzrwpmowkop +vfayesfojmibkjpb +uaqbnijtrhvqxjtb +hhovshsfmvkvymba +jerwmyxrfeyvxcgg +hncafjwrlvdcupma +qyvigggxfylbbrzt +hiiixcyohmvnkpgk +mmitpwopgxuftdfu +iaxderqpceboixoa +zodfmjhuzhnsqfcb +sthtcbadrclrazsi +bkkkkcwegvypbrio +wmpcofuvzemunlhj +gqwebiifvqoeynro +juupusqdsvxcpsgv +rbhdfhthxelolyse +kjimpwnjfrqlqhhz +rcuigrjzarzpjgfq +htxcejfyzhydinks +sxucpdxhvqjxxjwf +omsznfcimbcwaxal +gufmtdlhgrsvcosb +bssshaqujtmluerz +uukotwjkstgwijtr +kbqkneobbrdogrxk +ljqopjcjmelgrakz +rwtfnvnzryujwkfb +dedjjbrndqnilbeh +nzinsxnpptzagwlb +lwqanydfirhnhkxy +hrjuzfumbvfccxno +okismsadkbseumnp +sfkmiaiwlktxqvwa +hauwpjjwowbunbjj +nowkofejwvutcnui +bqzzppwoslaeixro +urpfgufwbtzenkpj +xgeszvuqwxeykhef +yxoldvkyuikwqyeq +onbbhxrnmohzskgg +qcikuxakrqeugpoa +lnudcqbtyzhlpers +nxduvwfrgzaailgl +xniuwvxufzxjjrwz +ljwithcqmgvntjdj +awkftfagrfzywkhs +uedtpzxyubeveuek +bhcqdwidbjkqqhzl +iyneqjdmlhowwzxx +kvshzltcrrururty +zgfpiwajegwezupo +tkrvyanujjwmyyri +ercsefuihcmoaiep +ienjrxpmetinvbos +jnwfutjbgenlipzq +bgohjmrptfuamzbz +rtsyamajrhxbcncw +tfjdssnmztvbnscs +bgaychdlmchngqlp +kfjljiobynhwfkjo +owtdxzcpqleftbvn +ltjtimxwstvzwzjj +wbrvjjjajuombokf +zblpbpuaqbkvsxye +gwgdtbpnlhyqspdi +abipqjihjqfofmkx +nlqymnuvjpvvgova +avngotmhodpoufzn +qmdyivtzitnrjuae +xfwjmqtqdljuerxi +csuellnlcyqaaamq +slqyrcurcyuoxquo +dcjmxyzbzpohzprl +uqfnmjwniyqgsowb +rbmxpqoblyxdocqc +ebjclrdbqjhladem +ainnfhxnsgwqnmyo +eyytjjwhvodtzquf +iabjgmbbhilrcyyp +pqfnehkivuelyccc +xgjbyhfgmtseiimt +jwxyqhdbjiqqqeyy +gxsbrncqkmvaryln +vhjisxjkinaejytk +seexagcdmaedpcvh +lvudfgrcpjxzdpvd +fxtegyrqjzhmqean +dnoiseraqcoossmc +nwrhmwwbykvwmgep +udmzskejvizmtlce +hbzvqhvudfdlegaa +cghmlfqejbxewskv +bntcmjqfwomtbwsb +qezhowyopjdyhzng +todzsocdkgfxanbz +zgjkssrjlwxuhwbk +eibzljqsieriyrzr +wamxvzqyycrxotjp +epzvfkispwqynadu +dwlpfhtrafrxlyie +qhgzujhgdruowoug +girstvkahaemmxvh +baitcrqmxhazyhbl +xyanqcchbhkajdmc +gfvjmmcgfhvgnfdq +tdfdbslwncbnkzyz +jojuselkpmnnbcbb +hatdslkgxtqpmavj +dvelfeddvgjcyxkj +gnsofhkfepgwltse +mdngnobasfpewlno +qssnbcyjgmkyuoga +glvcmmjytmprqwvn +gwrixumjbcdffsdl +lozravlzvfqtsuiq +sicaflbqdxbmdlch +inwfjkyyqbwpmqlq +cuvszfotxywuzhzi +igfxyoaacoarlvay +ucjfhgdmnjvgvuni +rvvkzjsytqgiposh +jduinhjjntrmqroz +yparkxbgsfnueyll +lyeqqeisxzfsqzuj +woncskbibjnumydm +lltucklragtjmxtl +ubiyvmyhlesfxotj +uecjseeicldqrqww +xxlxkbcthufnjbnm +lhqijovvhlffpxga +fzdgqpzijitlogjz +efzzjqvwphomxdpd +jvgzvuyzobeazssc +hejfycgxywfjgbfw +yhjjmvkqfbnbliks +sffvfyywtlntsdsz +dwmxqudvxqdenrur +asnukgppdemxrzaz +nwqfnumblwvdpphx +kqsmkkspqvxzuket +cpnraovljzqiquaz +qrzgrdlyyzbyykhg +opoahcbiydyhsmqe +hjknnfdauidjeydr +hczdjjlygoezadow +rtflowzqycimllfv +sfsrgrerzlnychhq +bpahuvlblcolpjmj +albgnjkgmcrlaicl +pijyqdhfxpaxzdex +eeymiddvcwkpbpux +rqwkqoabywgggnln +vckbollyhgbgmgwh +ylzlgvnuvpynybkm +hpmbxtpfosbsjixt +ocebeihnhvkhjfqz +tvctyxoujdgwayze +efvhwxtuhapqxjen +rusksgefyidldmpo +nkmtjvddfmhirmzz +whvtsuadwofzmvrt +iiwjqvsdxudhdzzk +gucirgxaxgcassyo +rmhfasfzexeykwmr +hynlxcvsbgosjbis +huregszrcaocueen +pifezpoolrnbdqtv +unatnixzvdbqeyox +xtawlpduxgacchfe +bdvdbflqfphndduf +xtdsnjnmzccfptyt +nkhsdkhqtzqbphhg +aqcubmfkczlaxiyb +moziflxpsfubucmv +srdgnnjtfehiimqx +pwfalehdfyykrohf +sysxssmvewyfjrve +brsemdzosgqvvlxe +bimbjoshuvflkiat +hkgjasmljkpkwwku +sbnmwjvodygobpqc +bbbqycejueruihhd +corawswvlvneipyc +gcyhknmwsczcxedh +kppakbffdhntmcqp +ynulzwkfaemkcefp +pyroowjekeurlbii +iwksighrswdcnmxf +glokrdmugreygnsg +xkmvvumnfzckryop +aesviofpufygschi +csloawlirnegsssq +fkqdqqmlzuxbkzbc +uzlhzcfenxdfjdzp +poaaidrktteusvyf +zrlyfzmjzfvivcfr +qwjulskbniitgqtx +gjeszjksbfsuejki +vczdejdbfixbduaq +knjdrjthitjxluth +jweydeginrnicirl +bottrfgccqhyycsl +eiquffofoadmbuhk +lbqfutmzoksscswf +xfmdvnvfcnzjprba +uvugkjbkhlaoxmyx +wadlgtpczgvcaqqv +inzrszbtossflsxk +dbzbtashaartczrj +qbjiqpccefcfkvod +hluujmokjywotvzy +thwlliksfztcmwzh +arahybspdaqdexrq +nuojrmsgyipdvwyx +hnajdwjwmzattvst +sulcgaxezkprjbgu +rjowuugwdpkjtypw +oeugzwuhnrgiaqga +wvxnyymwftfoswij +pqxklzkjpcqscvde +tuymjzknntekglqj +odteewktugcwlhln +exsptotlfecmgehc +eeswfcijtvzgrqel +vjhrkiwmunuiwqau +zhlixepkeijoemne +pavfsmwesuvebzdd +jzovbklnngfdmyws +nbajyohtzfeoiixz +ciozmhrsjzrwxvhz +gwucrxieqbaqfjuv +uayrxrltnohexawc +flmrbhwsfbcquffm +gjyabmngkitawlxc +rwwtggvaygfbovhg +xquiegaisynictjq +oudzwuhexrwwdbyy +lengxmguyrwhrebb +uklxpglldbgqsjls +dbmvlfeyguydfsxq +zspdwdqcrmtmdtsc +mqfnzwbfqlauvrgc +amcrkzptgacywvhv +ndxmskrwrqysrndf +mwjyhsufeqhwisju +srlrukoaenyevykt +tnpjtpwawrxbikct +geczalxmgxejulcv +tvkcbqdhmuwcxqci +tiovluvwezwwgaox +zrjhtbgajkjqzmfo +vcrywduwsklepirs +lofequdigsszuioy +wxsdzomkjqymlzat +iabaczqtrfbmypuy +ibdlmudbajikcncr +rqcvkzsbwmavdwnv +ypxoyjelhllhbeog +fdnszbkezyjbttbg +uxnhrldastpdjkdz +xfrjbehtxnlyzcka +omjyfhbibqwgcpbv +eguucnoxaoprszmp +xfpypldgcmcllyzz +aypnmgqjxjqceelv +mgzharymejlafvgf +tzowgwsubbaigdok +ilsehjqpcjwmylxc +pfmouwntfhfnmrwk +csgokybgdqwnduwp +eaxwvxvvwbrovypz +nmluqvobbbmdiwwb +lnkminvfjjzqbmio +mjiiqzycqdhfietz +towlrzriicyraevq +obiloewdvbrsfwjo +lmeooaajlthsfltw +ichygipzpykkesrw +gfysloxmqdsfskvt +saqzntehjldvwtsx +pqddoemaufpfcaew +mjrxvbvwcreaybwe +ngfbrwfqnxqosoai +nesyewxreiqvhald +kqhqdlquywotcyfy +liliptyoqujensfi +nsahsaxvaepzneqq +zaickulfjajhctye +gxjzahtgbgbabtht +koxbuopaqhlsyhrp +jhzejdjidqqtjnwe +dekrkdvprfqpcqki +linwlombdqtdeyop +dvckqqbnigdcmwmx +yaxygbjpzkvnnebv +rlzkdkgaagmcpxah +cfzuyxivtknirqvt +obivkajhsjnrxxhn +lmjhayymgpseuynn +bbjyewkwadaipyju +lmzyhwomfypoftuu +gtzhqlgltvatxack +jfflcfaqqkrrltgq +txoummmnzfrlrmcg +ohemsbfuqqpucups +imsfvowcbieotlok +tcnsnccdszxfcyde +qkcdtkwuaquajazz +arcfnhmdjezdbqku +srnocgyqrlcvlhkb +mppbzvfmcdirbyfw +xiuarktilpldwgwd +ypufwmhrvzqmexpc +itpdnsfkwgrdujmj +cmpxnodtsswkyxkr +wayyxtjklfrmvbfp +mfaxphcnjczhbbwy +sjxhgwdnqcofbdra +pnxmujuylqccjvjm +ivamtjbvairwjqwl +deijtmzgpfxrclss +bzkqcaqagsynlaer +tycefobvxcvwaulz +ctbhnywezxkdsswf +urrxxebxrthtjvib +fpfelcigwqwdjucv +ngfcyyqpqulwcphb +rltkzsiipkpzlgpw +qfdsymzwhqqdkykc +balrhhxipoqzmihj +rnwalxgigswxomga +ghqnxeogckshphgr +lyyaentdizaumnla +exriodwfzosbeoib +speswfggibijfejk +yxmxgfhvmshqszrq +hcqhngvahzgawjga +qmhlsrfpesmeksur +eviafjejygakodla +kvcfeiqhynqadbzv +fusvyhowslfzqttg +girqmvwmcvntrwau +yuavizroykfkdekz +jmcwohvmzvowrhxf +kzimlcpavapynfue +wjudcdtrewfabppq +yqpteuxqgbmqfgxh +xdgiszbuhdognniu +jsguxfwhpftlcjoh +whakkvspssgjzxre +ggvnvjurlyhhijgm +krvbhjybnpemeptr +pqedgfojyjybfbzr +jzhcrsgmnkwwtpdo +yyscxoxwofslncmp +gzjhnxytmyntzths +iteigbnqbtpvqumi +zjevfzusnjukqpfw +xippcyhkfuounxqk +mcnhrcfonfdgpkyh +pinkcyuhjkexbmzj +lotxrswlxbxlxufs +fmqajrtoabpckbnu +wfkwsgmcffdgaqxg +qfrsiwnohoyfbidr +czfqbsbmiuyusaqs +ieknnjeecucghpoo +cevdgqnugupvmsge +gjkajcyjnxdrtuvr +udzhrargnujxiclq +zqqrhhmjwermjssg +ggdivtmgoqajydzz +wnpfsgtxowkjiivl +afbhqawjbotxnqpd +xjpkifkhfjeqifdn +oyfggzsstfhvticp +kercaetahymeawxy +khphblhcgmbupmzt +iggoqtqpvaebtiol +ofknifysuasshoya +qxuewroccsbogrbv +apsbnbkiopopytgu +zyahfroovfjlythh +bxhjwfgeuxlviydq +uvbhdtvaypasaswa +qamcjzrmesqgqdiz +hjnjyzrxntiycyel +wkcrwqwniczwdxgq +hibxlvkqakusswkx +mzjyuenepwdgrkty +tvywsoqslfsulses +jqwcwuuisrclircv +xanwaoebfrzhurct +ykriratovsvxxasf +qyebvtqqxbjuuwuo +telrvlwvriylnder +acksrrptgnhkeiaa +yemwfjhiqlzsvdxf +banrornfkcymmkcc +ytbhxvaeiigjpcgm +crepyazgxquposkn +xlqwdrytzwnxzwzv +xtrbfbwopxscftps +kwbytzukgseeyjla +qtfdvavvjogybxjg +ytbmvmrcxwfkgvzw +nbscbdskdeocnfzr +sqquwjbdxsxhcseg +ewqxhigqcgszfsuw +cvkyfcyfmubzwsee +dcoawetekigxgygd +ohgqnqhfimyuqhvi +otisopzzpvnhctte +bauieohjejamzien +ewnnopzkujbvhwce +aeyqlskpaehagdiv +pncudvivwnnqspxy +ytugesilgveokxcg +zoidxeelqdjesxpr +ducjccsuaygfchzj +smhgllqqqcjfubfc +nlbyyywergronmir +prdawpbjhrzsbsvj +nmgzhnjhlpcplmui +eflaogtjghdjmxxz +qolvpngucbkprrdc +ixywxcienveltgho +mwnpqtocagenkxut +iskrfbwxonkguywx +ouhtbvcaczqzmpua +srewprgddfgmdbao +dyufrltacelchlvu +czmzcbrkecixuwzz +dtbeojcztzauofuk +prrgoehpqhngfgmw +baolzvfrrevxsyke +zqadgxshwiarkzwh +vsackherluvurqqj +surbpxdulvcvgjbd +wqxytarcxzgxhvtx +vbcubqvejcfsgrac +zqnjfeapshjowzja +hekvbhtainkvbynx +knnugxoktxpvoxnh +knoaalcefpgtvlwm +qoakaunowmsuvkus +ypkvlzcduzlezqcb +ujhcagawtyepyogh +wsilcrxncnffaxjf +gbbycjuscquaycrk +aduojapeaqwivnly +ceafyxrakviagcjy +nntajnghicgnrlst +vdodpeherjmmvbje +wyyhrnegblwvdobn +xlfurpghkpbzhhif +xyppnjiljvirmqjo +kglzqahipnddanpi +omjateouxikwxowr +ocifnoopfglmndcx +emudcukfbadyijev +ooktviixetfddfmh +wtvrhloyjewdeycg +cgjncqykgutfjhvb +nkwvpswppeffmwad +hqbcmfhzkxmnrivg +mdskbvzguxvieilr +anjcvqpavhdloaqh +erksespdevjylenq +fadxwbmisazyegup +iyuiffjmcaahowhj +ygkdezmynmltodbv +fytneukxqkjattvh +woerxfadbfrvdcnz +iwsljvkyfastccoa +movylhjranlorofe +drdmicdaiwukemep +knfgtsmuhfcvvshg +ibstpbevqmdlhajn +tstwsswswrxlzrqs +estyydmzothggudf +jezogwvymvikszwa +izmqcwdyggibliet +nzpxbegurwnwrnca +kzkojelnvkwfublh +xqcssgozuxfqtiwi +tcdoigumjrgvczfv +ikcjyubjmylkwlwq +kqfivwystpqzvhan +bzukgvyoqewniivj +iduapzclhhyfladn +fbpyzxdfmkrtfaeg +yzsmlbnftftgwadz \ No newline at end of file diff --git a/2015/Day 6/main.py b/2015/Day 6/main.py new file mode 100644 index 0000000..bb9d664 --- /dev/null +++ b/2015/Day 6/main.py @@ -0,0 +1,12 @@ +with open('puzzle.txt', 'r') as f: + instructions = f.read().splitlines() + +lights = { + x: { + y: { + 'light_state': True + } for y in range(1000) + } for x in range(1000) +} + +print(lights) \ No newline at end of file diff --git a/2015/Day 6/puzzle.txt b/2015/Day 6/puzzle.txt new file mode 100644 index 0000000..c4357c6 --- /dev/null +++ b/2015/Day 6/puzzle.txt @@ -0,0 +1,300 @@ +turn on 887,9 through 959,629 +turn on 454,398 through 844,448 +turn off 539,243 through 559,965 +turn off 370,819 through 676,868 +turn off 145,40 through 370,997 +turn off 301,3 through 808,453 +turn on 351,678 through 951,908 +toggle 720,196 through 897,994 +toggle 831,394 through 904,860 +toggle 753,664 through 970,926 +turn off 150,300 through 213,740 +turn on 141,242 through 932,871 +toggle 294,259 through 474,326 +toggle 678,333 through 752,957 +toggle 393,804 through 510,976 +turn off 6,964 through 411,976 +turn off 33,572 through 978,590 +turn on 579,693 through 650,978 +turn on 150,20 through 652,719 +turn off 782,143 through 808,802 +turn off 240,377 through 761,468 +turn off 899,828 through 958,967 +turn on 613,565 through 952,659 +turn on 295,36 through 964,978 +toggle 846,296 through 969,528 +turn off 211,254 through 529,491 +turn off 231,594 through 406,794 +turn off 169,791 through 758,942 +turn on 955,440 through 980,477 +toggle 944,498 through 995,928 +turn on 519,391 through 605,718 +toggle 521,303 through 617,366 +turn off 524,349 through 694,791 +toggle 391,87 through 499,792 +toggle 562,527 through 668,935 +turn off 68,358 through 857,453 +toggle 815,811 through 889,828 +turn off 666,61 through 768,87 +turn on 27,501 through 921,952 +turn on 953,102 through 983,471 +turn on 277,552 through 451,723 +turn off 64,253 through 655,960 +turn on 47,485 through 734,977 +turn off 59,119 through 699,734 +toggle 407,898 through 493,955 +toggle 912,966 through 949,991 +turn on 479,990 through 895,990 +toggle 390,589 through 869,766 +toggle 593,903 through 926,943 +toggle 358,439 through 870,528 +turn off 649,410 through 652,875 +turn on 629,834 through 712,895 +toggle 254,555 through 770,901 +toggle 641,832 through 947,850 +turn on 268,448 through 743,777 +turn off 512,123 through 625,874 +turn off 498,262 through 930,811 +turn off 835,158 through 886,242 +toggle 546,310 through 607,773 +turn on 501,505 through 896,909 +turn off 666,796 through 817,924 +toggle 987,789 through 993,809 +toggle 745,8 through 860,693 +toggle 181,983 through 731,988 +turn on 826,174 through 924,883 +turn on 239,228 through 843,993 +turn on 205,613 through 891,667 +toggle 867,873 through 984,896 +turn on 628,251 through 677,681 +toggle 276,956 through 631,964 +turn on 78,358 through 974,713 +turn on 521,360 through 773,597 +turn off 963,52 through 979,502 +turn on 117,151 through 934,622 +toggle 237,91 through 528,164 +turn on 944,269 through 975,453 +toggle 979,460 through 988,964 +turn off 440,254 through 681,507 +toggle 347,100 through 896,785 +turn off 329,592 through 369,985 +turn on 931,960 through 979,985 +toggle 703,3 through 776,36 +toggle 798,120 through 908,550 +turn off 186,605 through 914,709 +turn off 921,725 through 979,956 +toggle 167,34 through 735,249 +turn on 726,781 through 987,936 +toggle 720,336 through 847,756 +turn on 171,630 through 656,769 +turn off 417,276 through 751,500 +toggle 559,485 through 584,534 +turn on 568,629 through 690,873 +toggle 248,712 through 277,988 +toggle 345,594 through 812,723 +turn off 800,108 through 834,618 +turn off 967,439 through 986,869 +turn on 842,209 through 955,529 +turn on 132,653 through 357,696 +turn on 817,38 through 973,662 +turn off 569,816 through 721,861 +turn on 568,429 through 945,724 +turn on 77,458 through 844,685 +turn off 138,78 through 498,851 +turn on 136,21 through 252,986 +turn off 2,460 through 863,472 +turn on 172,81 through 839,332 +turn on 123,216 through 703,384 +turn off 879,644 through 944,887 +toggle 227,491 through 504,793 +toggle 580,418 through 741,479 +toggle 65,276 through 414,299 +toggle 482,486 through 838,931 +turn off 557,768 through 950,927 +turn off 615,617 through 955,864 +turn on 859,886 through 923,919 +turn on 391,330 through 499,971 +toggle 521,835 through 613,847 +turn on 822,787 through 989,847 +turn on 192,142 through 357,846 +turn off 564,945 through 985,945 +turn off 479,361 through 703,799 +toggle 56,481 through 489,978 +turn off 632,991 through 774,998 +toggle 723,526 through 945,792 +turn on 344,149 through 441,640 +toggle 568,927 through 624,952 +turn on 621,784 through 970,788 +toggle 665,783 through 795,981 +toggle 386,610 through 817,730 +toggle 440,399 through 734,417 +toggle 939,201 through 978,803 +turn off 395,883 through 554,929 +turn on 340,309 through 637,561 +turn off 875,147 through 946,481 +turn off 945,837 through 957,922 +turn off 429,982 through 691,991 +toggle 227,137 through 439,822 +toggle 4,848 through 7,932 +turn off 545,146 through 756,943 +turn on 763,863 through 937,994 +turn on 232,94 through 404,502 +turn off 742,254 through 930,512 +turn on 91,931 through 101,942 +toggle 585,106 through 651,425 +turn on 506,700 through 567,960 +turn off 548,44 through 718,352 +turn off 194,827 through 673,859 +turn off 6,645 through 509,764 +turn off 13,230 through 821,361 +turn on 734,629 through 919,631 +toggle 788,552 through 957,972 +toggle 244,747 through 849,773 +turn off 162,553 through 276,887 +turn off 569,577 through 587,604 +turn off 799,482 through 854,956 +turn on 744,535 through 909,802 +toggle 330,641 through 396,986 +turn off 927,458 through 966,564 +toggle 984,486 through 986,913 +toggle 519,682 through 632,708 +turn on 984,977 through 989,986 +toggle 766,423 through 934,495 +turn on 17,509 through 947,718 +turn on 413,783 through 631,903 +turn on 482,370 through 493,688 +turn on 433,859 through 628,938 +turn off 769,549 through 945,810 +turn on 178,853 through 539,941 +turn off 203,251 through 692,433 +turn off 525,638 through 955,794 +turn on 169,70 through 764,939 +toggle 59,352 through 896,404 +toggle 143,245 through 707,320 +turn off 103,35 through 160,949 +toggle 496,24 through 669,507 +turn off 581,847 through 847,903 +turn on 689,153 through 733,562 +turn on 821,487 through 839,699 +turn on 837,627 through 978,723 +toggle 96,748 through 973,753 +toggle 99,818 through 609,995 +turn on 731,193 through 756,509 +turn off 622,55 through 813,365 +turn on 456,490 through 576,548 +turn on 48,421 through 163,674 +turn off 853,861 through 924,964 +turn off 59,963 through 556,987 +turn on 458,710 through 688,847 +toggle 12,484 through 878,562 +turn off 241,964 through 799,983 +turn off 434,299 through 845,772 +toggle 896,725 through 956,847 +turn on 740,289 through 784,345 +turn off 395,840 through 822,845 +turn on 955,224 through 996,953 +turn off 710,186 through 957,722 +turn off 485,949 through 869,985 +turn on 848,209 through 975,376 +toggle 221,241 through 906,384 +turn on 588,49 through 927,496 +turn on 273,332 through 735,725 +turn on 505,962 through 895,962 +toggle 820,112 through 923,143 +turn on 919,792 through 978,982 +toggle 489,461 through 910,737 +turn off 202,642 through 638,940 +turn off 708,953 through 970,960 +toggle 437,291 through 546,381 +turn on 409,358 through 837,479 +turn off 756,279 through 870,943 +turn off 154,657 through 375,703 +turn off 524,622 through 995,779 +toggle 514,221 through 651,850 +toggle 808,464 through 886,646 +toggle 483,537 through 739,840 +toggle 654,769 through 831,825 +turn off 326,37 through 631,69 +turn off 590,570 through 926,656 +turn off 881,913 through 911,998 +turn on 996,102 through 998,616 +turn off 677,503 through 828,563 +turn on 860,251 through 877,441 +turn off 964,100 through 982,377 +toggle 888,403 through 961,597 +turn off 632,240 through 938,968 +toggle 731,176 through 932,413 +turn on 5,498 through 203,835 +turn on 819,352 through 929,855 +toggle 393,813 through 832,816 +toggle 725,689 through 967,888 +turn on 968,950 through 969,983 +turn off 152,628 through 582,896 +turn off 165,844 through 459,935 +turn off 882,741 through 974,786 +turn off 283,179 through 731,899 +toggle 197,366 through 682,445 +turn on 106,309 through 120,813 +toggle 950,387 through 967,782 +turn off 274,603 through 383,759 +turn off 155,665 through 284,787 +toggle 551,871 through 860,962 +turn off 30,826 through 598,892 +toggle 76,552 through 977,888 +turn on 938,180 through 994,997 +toggle 62,381 through 993,656 +toggle 625,861 through 921,941 +turn on 685,311 through 872,521 +turn on 124,934 through 530,962 +turn on 606,379 through 961,867 +turn off 792,735 through 946,783 +turn on 417,480 through 860,598 +toggle 178,91 through 481,887 +turn off 23,935 through 833,962 +toggle 317,14 through 793,425 +turn on 986,89 through 999,613 +turn off 359,201 through 560,554 +turn off 729,494 through 942,626 +turn on 204,143 through 876,610 +toggle 474,97 through 636,542 +turn off 902,924 through 976,973 +turn off 389,442 through 824,638 +turn off 622,863 through 798,863 +turn on 840,622 through 978,920 +toggle 567,374 through 925,439 +turn off 643,319 through 935,662 +toggle 185,42 through 294,810 +turn on 47,124 through 598,880 +toggle 828,303 through 979,770 +turn off 174,272 through 280,311 +turn off 540,50 through 880,212 +turn on 141,994 through 221,998 +turn on 476,695 through 483,901 +turn on 960,216 through 972,502 +toggle 752,335 through 957,733 +turn off 419,713 through 537,998 +toggle 772,846 through 994,888 +turn on 881,159 through 902,312 +turn off 537,651 through 641,816 +toggle 561,947 through 638,965 +turn on 368,458 through 437,612 +turn on 290,149 through 705,919 +turn on 711,918 through 974,945 +toggle 916,242 through 926,786 +toggle 522,272 through 773,314 +turn on 432,897 through 440,954 +turn off 132,169 through 775,380 +toggle 52,205 through 693,747 +toggle 926,309 through 976,669 +turn off 838,342 through 938,444 +turn on 144,431 through 260,951 +toggle 780,318 through 975,495 +turn off 185,412 through 796,541 +turn on 879,548 through 892,860 +turn on 294,132 through 460,338 +turn on 823,500 through 899,529 +turn off 225,603 through 483,920 +toggle 717,493 through 930,875 +toggle 534,948 through 599,968 +turn on 522,730 through 968,950 +turn off 102,229 through 674,529