Advertisement
Guest User

Untitled

a guest
Dec 21st, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. inpt = open("input.txt").read().strip().split("\n\n")
  2.  
  3.  
  4. player1 = list(map(int, inpt[0].split('\n')[1:]))
  5. player2 = list(map(int, inpt[1].split('\n')[1:]))
  6.  
  7. def part1(deck1, deck2):
  8. player1 = deck1.copy()
  9. player2 = deck2.copy()
  10.  
  11. while len(player1) > 0 and len(player2) > 0:
  12. card1 = player1.pop(0)
  13. card2 = player2.pop(0)
  14.  
  15. if card1 > card2:
  16. player1.append(card1)
  17. player1.append(card2)
  18. else:
  19. player2.append(card2)
  20. player2.append(card1)
  21.  
  22. t = 0
  23. for i, j in enumerate(player1):
  24. t += (50-i) * int(j)
  25. print(t)
  26.  
  27. def recursive_combat(deck1, deck2):
  28. previous_games = set() # will be tuple(player1, player2)
  29.  
  30. player1 = deck1.copy()
  31. player2 = deck2.copy()
  32.  
  33. winner = None
  34. while not winner:
  35. if (tuple(player1), tuple(player2)) in previous_games:
  36. winner = "p1"
  37. else:
  38. previous_games.add((tuple(player1), tuple(player2)))
  39.  
  40. card1 = player1.pop(0)
  41. card2 = player2.pop(0)
  42.  
  43. if card1 <= len(player1) and card2 <= len(player2):
  44. result = recursive_combat(player1[:card1], player2[:card2])[0]
  45.  
  46. if result == "p1":
  47. player1.append(card1)
  48. player1.append(card2)
  49. else:
  50. player2.append(card2)
  51. player2.append(card1)
  52. else:
  53. if card1 > card2:
  54. player1.append(card1)
  55. player1.append(card2)
  56. else:
  57. player2.append(card2)
  58. player2.append(card1)
  59.  
  60. if len(player1) == 0:
  61. winner = "p2"
  62. elif len(player2) == 0:
  63. winner = "p1"
  64.  
  65. return winner, player1, player2
  66.  
  67. def part2(player1, player2):
  68. result = recursive_combat(player1, player2)
  69. if result[0] == "p1":
  70. winner = result[1]
  71. else:
  72. winner = result[2]
  73.  
  74. t = 0
  75.  
  76. for i, j in enumerate(winner):
  77. t += (50 - i) * int(j)
  78.  
  79. print(t)
  80.  
  81. part1(player1, player2)
  82. part2(player1, player2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement