This commit is contained in:
Ivan Zinchenko 2023-10-30 21:20:11 +03:00
commit dd626e6655
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E
2 changed files with 74 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.pdf
venv
.idea/

71
main.py Normal file
View File

@ -0,0 +1,71 @@
import re
# 8<\
def assert_eq(expression, eq):
if expression == eq:
print("")
return
print(f"❌ / Got: {expression}, excepted: {eq}")
return
reg = r"8<\\"
tests = [
[r"8<\\", 1],
[r":-|8<{(X-{O8-\\", 0],
[r"8 < \ 8<\\", 1],
[r"8<|8<(8<)8<\8<O8</8<P", 1],
[r"=-O8-{P8<\:<\X-O", 1]
]
print("№1")
for k, i in enumerate(tests):
print(f"Тест {k+1} - ", end='')
assert_eq(len(re.findall(reg, i[0])), i[1])
reg = r"\b[A-Za-zА-Яа-яЕЕёё]+(?:-[A-Za-zА-Яа-яЕЕёё]+)?(?= \w\.\w\.)"
tests = [
["Студент Вася вспомнил, что на своей лекции \
Балакшин П.В. упоминал про старшекурсников, которые будут ему \
помогать: Анищенко А.А., Машина Е.А. и Голованова-Иванова Д.В.",
['Анищенко', "Балакшин", "Голованова-Иванова", "Машина"]],
["Иванов, Петров, Сидоров и Краснова-Петрова отправились в поход.",
[]],
["Василиса-Иванова М.И. и Александров А.А. были на концерте Иванова И.И.",
["Александров", "Василиса-Иванова", "Иванова"]],
["Краснов и Мымрина-Сидорова В.Г. встретились с Петровым А.И. и Петровой Е.К.",
["Мымрина-Сидорова", "Петровой", "Петровым"]],
["А Б. В-F Г.Д.Е Ё.Ж З.Х. Х.",
["В-F", "Ж"]]
]
print("\n№2")
for k, i in enumerate(tests):
print(f"Тест {k+1} - ", end='')
assert_eq(sorted(re.findall(reg, i[0])), i[1])
reg = r"[+-]?(?:\d)+"
tests = [
["20 + 22 = 42", "1593 + 1929 = 7049"],
["72 - -15 = 666", "20729 - 893 = 1774217"],
["4da65f6frg687fsf6g4 HELL0 K1TTY :) 3+-+-+-3++--+13", "57da16893f137frg1887869fsf137g57 HELL-7 K-3TTY :) 29+-+-+29++--+669"],
["МАМА MIA", "МАМА MIA"],
["0000000000.000000000001", "-7.-3"]
]
def repl(s):
return ('+' if s[0][0] in '+' else '') + str(4*int(s[0])**2 - 7)
print("\n№3")
for k, i in enumerate(tests):
print(f"Тест {k+1} - ", end='')
assert_eq(re.sub(reg, repl, i[0]), i[1])