solve by emulate the game

Verifying solution...
Test 1 passed!
Test 2 passed!
Test 3 failed  [Hidden]
Test 4 failed  [Hidden]
Test 5 failed  [Hidden]
This commit is contained in:
Seongbeom Park 2022-04-24 05:10:37 +09:00
parent dc1a8de37a
commit d548438ea7

View File

@ -0,0 +1,47 @@
def solution(banana_list):
fewest_possible_number = len(banana_list)
for pairs in generate_trainer_pairs(list(range(len(banana_list)))):
possible_number = len(banana_list)
for i, j in pairs:
if check_loop(banana_list[i], banana_list[j]):
possible_number -= 2
if possible_number < fewest_possible_number:
fewest_possible_number = possible_number
return fewest_possible_number
import copy
def generate_trainer_pairs(trainer_id_list):
if len(trainer_id_list) < 2:
yield []
else:
first_id = trainer_id_list[0]
temp_list = copy.deepcopy(trainer_id_list)
temp_list.remove(first_id)
for second_id in temp_list:
tt_list = copy.deepcopy(temp_list)
tt_list.remove(second_id)
for pairs in generate_trainer_pairs(tt_list):
yield [(first_id, second_id)] + pairs
def check_loop(x, y):
a, b = x, y
memo = []
while a != b:
if a > b:
a, b = a - b, 2*b
else:
a, b = 2*a, b - a
if (a, b) in memo:
return True
else:
memo += [(a, b)]
return False
tests = [
([1, 1], 2),
([1, 7, 3, 21, 13, 19], 0),
]
for i, o in tests:
result = solution(i)
print(i, result == o, result, o)