Repository navigation
Expand file tree
/
Copy pathmodule2hard.py
More file actions
63 lines (49 loc) · 3.32 KB
/
Copy pathmodule2hard.py
File metadata and controls
63 lines (49 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Дополнительное практическое задание по модулю: "Основные операторы"
"""
Задание "Слишком древний шифр":
Вы отправились в путешествие на необитаемый остров и конечно же
в очередной вылазке в джунгли вы попали в ловушку местному племени (да-да, классика "Индиана Джонса").
К вашему удивлению, в племени были неплохие математики и по совместительству фантазёры.
Вы поняли это, когда после долгих блужданий перед вами появились ворота
(выход из ловушки) с двумя каменными вставками для чисел.
В первом поле камни с числом менялись постоянно (от 3 до 20) случайным образом, а второе было всегда пустым.
К вашему счастью рядом с менее успешными и уже неговорящими путешественниками находился папирус,
где были написаны правила для решения этого "ребуса". (Как жаль, что они поняли это так поздно).
Во вторую вставку нужно было написать те пары чисел друг за другом,
чтобы число из первой вставки было кратно(делилось без остатка) сумме их значений.
--------------------------------------------------------------------------------------------------------------
Пример кратности(деления без остатка):
1 + 2 = 3 (сумма пары)
9 / 3 = 3 (ровно 3 без остатка)
9 кратно 3 (9 делится на 3 без остатка)
Пример 1:
9 - число из первой вставки
1218273645 - нужный пароль (1 и 2, 1 и 8, 2 и 7, 3 и 6, 4 и 5 - пары; число 9 кратно сумме каждой пары)
Пример 2:
11 - число из первой вставки
11029384756 - нужный пароль (1 и 10, 2 и 9, 3 и 8, 4 и 7, 5 и 6 - пары; число 11 кратно сумме каждой пары)
"""
import random
# функция поиска пар для составления пароля
def find_pairs(n):
pairs = []
# ищем пары
for i in range(1, n):
for j in range(i + 1, n):
if n % (i + j) == 0:
pairs.append((i, j))
# формируем строку из найденных пар
result = ''.join(f"{i}{j}" for i, j in pairs)
return result
# генерируем случайное число от 3 до 20
random_number = random.randint(3, 20)
# вывод на экран
print(f"Random number: {random_number}")
password = find_pairs(random_number)
print(f"Resulting password: {password}")
# вывод на экран всех паролей
# for i in range(3, 20):
# random_number = i
# print(f"Random number: {random_number}")
# password = find_pairs(random_number)
# print(f"Resulting password: {password}")