2_2.py 944 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. def inRange(code,pos):
  2. if code[pos+1] <= len(code) and code[pos+2] <= len(code) and code[pos+3] <= len(code):
  3. return True
  4. else:
  5. return False
  6. def compute(code):
  7. for v in range(len(code)):
  8. code[v] = int(code[v])
  9. #print(code)
  10. i = 0
  11. while i < (len(code) - 3):
  12. if code[i] == 1:
  13. if not inRange(code,i):
  14. return -1
  15. code[code[i + 3]] = code[code[i + 2]] + code[code[i + 1]]
  16. i += 4
  17. if code[i] == 2:
  18. if not inRange(code,i):
  19. return -1
  20. code[code[i + 3]] = code[code[i + 2]] * code[code[i + 1]]
  21. i += 4
  22. if code[i] == 99:
  23. i += 1
  24. return code
  25. if code[i] not in (1,2,99):
  26. i += 1
  27. #return -1
  28. file = open("2_2.txt","r")
  29. input = file.read()
  30. for noun in range(100):
  31. for verb in range(100):
  32. code = input.replace("\n","").split(",")
  33. code[1] = noun
  34. code[2] = verb
  35. ret = compute(code)
  36. #print(ret)
  37. if ret == -1:
  38. continue
  39. if ret[0] == 19690720:
  40. print(ret)
  41. print("---done---")
  42. exit()