-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path05.py
55 lines (55 loc) · 4.55 KB
/
05.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def addCodes(i):
num1 = intcode[intcode[i+1]] if intcode[i]//10**2%10==0 else intcode[i+1]
num2 = intcode[intcode[i+2]] if intcode[i]//10**3%10==0 else intcode[i+2]
intcode[intcode[i+3]]=num1+num2
def multCodes(i):
num1 = intcode[intcode[i+1]] if intcode[i]//10**2%10==0 else intcode[i+1]
num2 = intcode[intcode[i+2]] if intcode[i]//10**3%10==0 else intcode[i+2]
intcode[intcode[i+3]]=num1*num2
def jumpIf(bolo,i):
cond = intcode[intcode[i+1]] if intcode[i]//10**2%10==0 else intcode[i+1]
if (bolo and cond) or (not bolo and not cond):
return intcode[intcode[i+2]] if intcode[i]//10**3%10==0 else intcode[i+2]
else:
return i+3
def compareLess(i):
num1 = intcode[intcode[i+1]] if intcode[i]//10**2%10==0 else intcode[i+1]
num2 = intcode[intcode[i+2]] if intcode[i]//10**3%10==0 else intcode[i+2]
intcode[intcode[i+3]]= 1 if num1 < num2 else 0
def compareEqual(i):
num1 = intcode[intcode[i+1]] if intcode[i]//10**2%10==0 else intcode[i+1]
num2 = intcode[intcode[i+2]] if intcode[i]//10**3%10==0 else intcode[i+2]
intcode[intcode[i+3]]= 1 if num1 == num2 else 0
intcode = [3,225,1,225,6,6,1100,1,238,225,104,0,1102,79,14,225,1101,17,42,225,2,74,69,224,1001,224,-5733,224,4,224,1002,223,8,223,101,4,224,224,1,223,224,223,1002,191,83,224,1001,224,-2407,224,4,224,102,8,223,223,101,2,224,224,1,223,224,223,1101,18,64,225,1102,63,22,225,1101,31,91,225,1001,65,26,224,101,-44,224,224,4,224,102,8,223,223,101,3,224,224,1,224,223,223,101,78,13,224,101,-157,224,224,4,224,1002,223,8,223,1001,224,3,224,1,224,223,223,102,87,187,224,101,-4698,224,224,4,224,102,8,223,223,1001,224,4,224,1,223,224,223,1102,79,85,224,101,-6715,224,224,4,224,1002,223,8,223,1001,224,2,224,1,224,223,223,1101,43,46,224,101,-89,224,224,4,224,1002,223,8,223,101,1,224,224,1,223,224,223,1101,54,12,225,1102,29,54,225,1,17,217,224,101,-37,224,224,4,224,102,8,223,223,1001,224,3,224,1,223,224,223,1102,20,53,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,107,226,226,224,1002,223,2,223,1006,224,329,101,1,223,223,1108,677,226,224,1002,223,2,223,1006,224,344,101,1,223,223,7,677,226,224,102,2,223,223,1006,224,359,101,1,223,223,108,226,226,224,1002,223,2,223,1005,224,374,101,1,223,223,8,226,677,224,1002,223,2,223,1006,224,389,101,1,223,223,1108,226,226,224,102,2,223,223,1006,224,404,101,1,223,223,1007,677,677,224,1002,223,2,223,1006,224,419,101,1,223,223,8,677,677,224,1002,223,2,223,1005,224,434,1001,223,1,223,1008,226,226,224,102,2,223,223,1005,224,449,1001,223,1,223,1008,226,677,224,102,2,223,223,1006,224,464,101,1,223,223,1107,677,677,224,102,2,223,223,1006,224,479,101,1,223,223,107,677,677,224,1002,223,2,223,1005,224,494,1001,223,1,223,1107,226,677,224,1002,223,2,223,1005,224,509,101,1,223,223,1108,226,677,224,102,2,223,223,1006,224,524,101,1,223,223,7,226,226,224,1002,223,2,223,1005,224,539,101,1,223,223,108,677,677,224,1002,223,2,223,1005,224,554,101,1,223,223,8,677,226,224,1002,223,2,223,1005,224,569,1001,223,1,223,1008,677,677,224,102,2,223,223,1006,224,584,101,1,223,223,107,226,677,224,102,2,223,223,1005,224,599,1001,223,1,223,7,226,677,224,102,2,223,223,1005,224,614,101,1,223,223,1007,226,226,224,1002,223,2,223,1005,224,629,101,1,223,223,1107,677,226,224,1002,223,2,223,1006,224,644,101,1,223,223,108,226,677,224,102,2,223,223,1006,224,659,101,1,223,223,1007,677,226,224,102,2,223,223,1006,224,674,101,1,223,223,4,223,99,226]
i= 0
instCount =0
while(True):
instCount+=1
if intcode[i]%100 == 1: # Addition
addCodes(i)
i+=4
elif intcode[i]%100 == 2: # Multiplication
multCodes(i)
i+=4
elif intcode[i]%100 == 3: # Input
intcode[intcode[i+1]]=input("Enter System ID: ")
i+=2
elif intcode[i]%100 == 4: # Output
print("Out> " + str(intcode[intcode[i+1]]))
i+=2
elif intcode[i]%100 == 5: # Jump-if-True
i=jumpIf(True,i)
elif intcode[i]%100 == 6: # Jump-if-False
i=jumpIf(False,i)
elif intcode[i]%100 == 7: # Less than
compareLess(i)
i+=4
elif intcode[i]%100 == 8: # Equals
compareEqual(i)
i+=4
elif intcode[i]%100 == 99: # End Program
break
else:
str("Program encountered error--\nInstruction#: " + str(instCount) + "\nIntCode: " + str(intcode[i]) +"\nIndex: " + str(i))
break
print("Instructions ran: " + str(instCount))