diff --git a/python/src/2-day/README.md b/python/src/2-day/README.md new file mode 100644 index 0000000..71c751a --- /dev/null +++ b/python/src/2-day/README.md @@ -0,0 +1,33 @@ +# День 2: Подарочный магазин + +## Задача + +В базе данных подарочного магазина появились неверные ID продуктов. Нужно найти все неверные ID в заданных диапазонах. + +### Входные данные + +Диапазоны ID, разделенные запятыми. Каждый диапазон: `начало-конец` + +Пример: + +``` +11-22,95-115,998-1012,1188511880-1188511890,222220-222224, +1698522-1698528,446443-446449,38593856-38593862,565653-565659, +824824821-824824827,2121212118-2121212124 +``` + +### Часть 1 + +Неверный ID - число, состоящее из повторяющейся последовательности цифр **дважды**. + +Примеры: `55` (5 дважды), `6464` (64 дважды), `123123` (123 дважды) + +**Ответ:** сумма всех неверных ID в заданных диапазонах. + +### Часть 2 + +Неверный ID - число, состоящее из повторяющейся последовательности цифр **как минимум дважды**. + +Примеры: `12341234` (1234 дважды), `123123123` (123 трижды), `1111111` (1 семь раз) + +**Ответ:** сумма всех неверных ID по новым правилам. diff --git a/python/src/2-day/input.txt b/python/src/2-day/input.txt new file mode 100644 index 0000000..69b5adc --- /dev/null +++ b/python/src/2-day/input.txt @@ -0,0 +1 @@ +9191906840-9191941337,7671-13230,2669677096-2669816099,2-12,229599-392092,48403409-48523311,96763-229430,1919163519-1919240770,74928-96389,638049-668065,34781-73835,736781-819688,831765539-831907263,5615884-5749554,14101091-14196519,7134383-7169141,413340-625418,849755289-849920418,7745350-7815119,16717-26267,4396832-4549887,87161544-87241541,4747436629-4747494891,335-549,867623-929630,53-77,1414-3089,940604-1043283,3444659-3500714,3629-7368,79-129,5488908-5597446,97922755-98097602,182-281,8336644992-8336729448,24-47,613-1077 diff --git a/python/src/2-day/solution1.py b/python/src/2-day/solution1.py new file mode 100644 index 0000000..ce6adcd --- /dev/null +++ b/python/src/2-day/solution1.py @@ -0,0 +1,18 @@ +with open("./src/2-day/input.txt", "r") as file: + durs = file.readline().split(",") + + correct_cnt = 0 + + for dur in durs: + first, last = map(int, dur.split("-")) + + for number in range(first, last + 1): + number = str(number) + + if len(number) % 2: + continue + + if number[: len(number) // 2] * 2 == number: + correct_cnt += int(number) + + print(correct_cnt) diff --git a/python/src/2-day/solution2.py b/python/src/2-day/solution2.py new file mode 100644 index 0000000..46863d9 --- /dev/null +++ b/python/src/2-day/solution2.py @@ -0,0 +1,21 @@ +with open("./src/2-day/input.txt", "r") as file: + durs = file.readline().split(",") + + correct_cnt = 0 + + for dur in durs: + first, last = map(int, dur.split("-")) + + for number in range(first, last + 1): + string_number = str(number) + string_number_len = len(string_number) + + for letters_cnt in range(1, string_number_len // 2 + 1): + repeat = string_number_len // letters_cnt + if ( + string_number[:letters_cnt] * repeat + ) == string_number and repeat >= 2: + correct_cnt += number + break + + print(correct_cnt) diff --git a/python/src/2-day/test_input.txt b/python/src/2-day/test_input.txt new file mode 100644 index 0000000..bd04584 --- /dev/null +++ b/python/src/2-day/test_input.txt @@ -0,0 +1 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 \ No newline at end of file