From d548438ea7bcc3663d09b5ff4307a87c02190894 Mon Sep 17 00:00:00 2001 From: Seongbeom Park Date: Sun, 24 Apr 2022 05:10:37 +0900 Subject: [PATCH] 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] --- extra/distract-the-trainers/solution.py | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 extra/distract-the-trainers/solution.py diff --git a/extra/distract-the-trainers/solution.py b/extra/distract-the-trainers/solution.py new file mode 100644 index 0000000..a3f3918 --- /dev/null +++ b/extra/distract-the-trainers/solution.py @@ -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)