Add: add second day solutions

This commit is contained in:
Kirill Samoylenkov 2025-12-02 13:28:51 +05:00
parent 34ac3971f0
commit 1cc4e213d7
5 changed files with 74 additions and 0 deletions

View file

@ -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 по новым правилам.

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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