Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions day-02/input/ludoge.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,1,10,19,1,19,5,23,2,23,9,27,1,5,27,31,1,9,31,35,1,35,10,39,2,13,39,43,1,43,9,47,1,47,9,51,1,6,51,55,1,13,55,59,1,59,13,63,1,13,63,67,1,6,67,71,1,71,13,75,2,10,75,79,1,13,79,83,1,83,10,87,2,9,87,91,1,6,91,95,1,9,95,99,2,99,10,103,1,103,5,107,2,6,107,111,1,111,6,115,1,9,115,119,1,9,119,123,2,10,123,127,1,127,5,131,2,6,131,135,1,135,5,139,1,9,139,143,2,143,13,147,1,9,147,151,1,151,2,155,1,9,155,0,99,2,0,14,0
20 changes: 20 additions & 0 deletions day-02/part-1/ludoge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from tool.runners.python import SubmissionPy


class LudogeSubmission(SubmissionPy):
def run(self, s):
data = list(map(int, s.split(",")))
data[1] = 12
data[2] = 2
i = 0
while data[i] != 99:
opcode, operand_1, operand_2, destination = data[i : i + 4]
if opcode == 1:
result = data[operand_1] + data[operand_2]
elif opcode == 2:
result = data[operand_1] * data[operand_2]
else:
raise Exception(f"Not a valid opcode: {opcode}")
data[destination] = result
i += 4
return data[0]
24 changes: 24 additions & 0 deletions day-02/part-2/ludoge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from tool.runners.python import SubmissionPy


class LudogeSubmission(SubmissionPy):
def run(self, s):
base_data = list(map(int, s.split(",")))
for noun in range(100):
for verb in range(100):
data = base_data[::]
data[1] = noun
data[2] = verb
i = 0
while data[i] != 99:
opcode, operand_1, operand_2, destination = data[i : i + 4]
if opcode == 1:
result = data[operand_1] + data[operand_2]
elif opcode == 2:
result = data[operand_1] * data[operand_2]
else:
raise Exception(f"Not a valid opcode: {opcode}")
data[destination] = result
i += 4
if data[0] == 19690720:
return 100 * noun + verb
1 change: 1 addition & 0 deletions day-05/input/ludoge.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3,225,1,225,6,6,1100,1,238,225,104,0,1101,81,30,225,1102,9,63,225,1001,92,45,224,101,-83,224,224,4,224,102,8,223,223,101,2,224,224,1,224,223,223,1102,41,38,225,1002,165,73,224,101,-2920,224,224,4,224,102,8,223,223,101,4,224,224,1,223,224,223,1101,18,14,224,1001,224,-32,224,4,224,1002,223,8,223,101,3,224,224,1,224,223,223,1101,67,38,225,1102,54,62,224,1001,224,-3348,224,4,224,1002,223,8,223,1001,224,1,224,1,224,223,223,1,161,169,224,101,-62,224,224,4,224,1002,223,8,223,101,1,224,224,1,223,224,223,2,14,18,224,1001,224,-1890,224,4,224,1002,223,8,223,101,3,224,224,1,223,224,223,1101,20,25,225,1102,40,11,225,1102,42,58,225,101,76,217,224,101,-153,224,224,4,224,102,8,223,223,1001,224,5,224,1,224,223,223,102,11,43,224,1001,224,-451,224,4,224,1002,223,8,223,101,6,224,224,1,223,224,223,1102,77,23,225,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,8,226,677,224,1002,223,2,223,1006,224,329,1001,223,1,223,7,226,226,224,102,2,223,223,1006,224,344,101,1,223,223,108,677,677,224,1002,223,2,223,1006,224,359,101,1,223,223,1107,226,677,224,1002,223,2,223,1005,224,374,101,1,223,223,1008,677,226,224,1002,223,2,223,1005,224,389,101,1,223,223,1007,677,226,224,1002,223,2,223,1005,224,404,1001,223,1,223,1107,677,226,224,1002,223,2,223,1005,224,419,1001,223,1,223,108,677,226,224,102,2,223,223,1006,224,434,1001,223,1,223,7,226,677,224,102,2,223,223,1005,224,449,1001,223,1,223,107,226,226,224,102,2,223,223,1006,224,464,101,1,223,223,107,677,226,224,102,2,223,223,1006,224,479,101,1,223,223,1007,677,677,224,1002,223,2,223,1006,224,494,1001,223,1,223,1008,226,226,224,1002,223,2,223,1006,224,509,101,1,223,223,7,677,226,224,1002,223,2,223,1006,224,524,1001,223,1,223,1007,226,226,224,102,2,223,223,1006,224,539,101,1,223,223,8,677,226,224,1002,223,2,223,1006,224,554,101,1,223,223,1008,677,677,224,102,2,223,223,1006,224,569,101,1,223,223,1108,677,226,224,102,2,223,223,1005,224,584,101,1,223,223,107,677,677,224,102,2,223,223,1006,224,599,1001,223,1,223,1108,677,677,224,1002,223,2,223,1006,224,614,1001,223,1,223,1107,677,677,224,1002,223,2,223,1005,224,629,1001,223,1,223,108,226,226,224,1002,223,2,223,1005,224,644,101,1,223,223,8,226,226,224,1002,223,2,223,1005,224,659,101,1,223,223,1108,226,677,224,1002,223,2,223,1006,224,674,101,1,223,223,4,223,99,226
34 changes: 34 additions & 0 deletions day-05/part-1/ludoge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from tool.runners.python import SubmissionPy


class LudogeSubmission(SubmissionPy):
def run(self, s):
base_data = list(map(int, s.split(",")))
data = base_data[::]
i = 0

def get_param(offset):
mode = (data[i] // 10 ** (1 + offset)) % 10
return data[data[i + offset]] if mode == 0 else data[i + offset]

input_value = 1
outputs = []
while True:
opcode = data[i] % 100
if opcode == 1:
data[data[i + 3]] = get_param(1) + get_param(2)
i += 4
elif opcode == 2:
data[data[i + 3]] = get_param(1) * get_param(2)
i += 4
elif opcode == 3:
data[data[i + 1]] = input_value
i += 2
elif opcode == 4:
outputs.append(get_param(1))
i += 2
elif opcode == 99:
break
else:
raise Exception(f"Not a valid opcode: {opcode}")
return outputs[-1]
50 changes: 50 additions & 0 deletions day-05/part-2/ludoge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
from tool.runners.python import SubmissionPy


class LudogeSubmission(SubmissionPy):
def run(self, s):
base_data = list(map(int, s.split(",")))
data = base_data[::]
i = 0

def get_param(offset):
mode = (data[i] // 10 ** (1 + offset)) % 10
return data[data[i + offset]] if mode == 0 else data[i + offset]

input_value = 5
outputs = []
while True:
opcode = data[i] % 100
if opcode == 1:
data[data[i + 3]] = get_param(1) + get_param(2)
i += 4
elif opcode == 2:
data[data[i + 3]] = get_param(1) * get_param(2)
i += 4
elif opcode == 3:
data[data[i + 1]] = input_value
i += 2
elif opcode == 4:
outputs.append(get_param(1))
i += 2
elif opcode == 5:
if get_param(1) != 0:
i = get_param(2)
else:
i += 3
elif opcode == 6:
if get_param(1) == 0:
i = get_param(2)
else:
i += 3
elif opcode == 7:
data[data[i + 3]] = 1 if get_param(1) < get_param(2) else 0
i += 4
elif opcode == 8:
data[data[i + 3]] = 1 if get_param(1) == get_param(2) else 0
i += 4
elif opcode == 99:
break
else:
raise Exception(f"Not a valid opcode: {opcode}")
return outputs[-1]