-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path3F. Alien genome.py
65 lines (48 loc) · 2.63 KB
/
3F. Alien genome.py
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
64
65
"""
Геном жителей системы Тау Кита содержит 26 видов оснований, для обозначения которых
будем использовать буквы латинского алфавита от A до Z, а сам геном записывается
строкой из латинских букв. Важную роль в геноме играют пары соседних оснований,
например, в геноме «ABBACAB» можно выделить следующие пары оснований: AB, BB, BA,
AC, CA, AB.
Степенью близости одного генома другому геному называется количество пар соседних
оснований первого генома, которые встречаются во втором геноме.
Формат ввода
Вам даны два генома, определите степень близости первого генома второму геному.
Программа получает на вход две строки, состоящие из заглавных латинских букв. Каждая
строка непустая, и её длина не превосходит 105.
Формат вывода
Программа должна вывести одно целое число – степень близости генома, записанного
в первой строке, геному, записанному во второй строке.
Пример
Ввод
Вывод
ABBACAB
BCABB
4
Примечания
Следующие пары оснований первого генома встречаются во втором геноме: AB, BB, CA,
AB. Обратите внимание на то, что пара AB в первом геноме встречается два раза, поэтому
и подсчитана в ответе два раза.
Система оценивания:
Решение, правильно работающее только для случаев, когда длины данных строк не превосходят
100, будет оцениваться в 60 баллов.
"""
def fun(s1, s2):
"""
>>> fun('ABBACAB', 'BCABB')
4
"""
s1 = [s1[i : i + 2] for i in range(len(s1) - 1)]
s2 = {s2[i : i + 2] for i in range(len(s2) - 1)}
ans = 0
for i in s1:
if i in s2:
ans += 1
return ans
s1, s2 = input(), input()
print(fun(s1, s2))
# print(f">>> fun({s1, s2})")
# print(f"{fun(s1, s2)}")
if __name__ == "__main__":
import doctest
doctest.testmod()