INFA_LAB3/main.py

75 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import re
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"(?<!-)[A-ZА-ЯЕЁ][a-zа-яёё]+[ ]?(?:[- ]{,2}?[A-ZА-ЯЕЁ][a-zа-яёё]+)?(?= \w\.)"
tests = [
["Студент Вася вспомнил, что на своей лекции \
Балакшин П.В. упоминал про старшекурсников, которые будут ему \
помогать: Анищенко А., Машина Е. А. и Голованова - Иванова Д.В.",
['Анищенко', "Балакшин", "Голованова - Иванова", "Машина"]],
["Иванов, Петров, Сидоров и Краснова-Петрова отправились в поход.",
[]],
["Василиса-Иванова М.И. и Александров А.А. были на концерте Иванова И.И.",
["Александров", "Василиса-Иванова", "Иванова"]],
["Краснов и Мымрина-Сидорова В.Г. встретились с Петровым А.И. и Петровой Е.К.",
["Мымрина-Сидорова", "Петровой", "Петровым"]],
["А Б. Ва-Fи Г.Д. Eв-Eк-Eа-Eы e.e. Е Ё. Ж З.Х. Х.",
["Ва-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"(?<![\w.])[+-]?(?:\d)+(?![\w.])"
tests = [
["20 + 22 = 42", "1593 + 1929 = 7049"],
["72 - -15 = 666", "20729 - 893 = 1774217"],
["4da65f6frg687fsf6g4 HELL0 K1TTY :) 3+-+-+-3++--+13", "4da65f6frg687fsf6g4 HELL0 K1TTY :) 29+-+-+29++--+669"],
["МАМА MIA", "МАМА MIA"],
["0000000000.000000000001", "0000000000.000000000001"]
]
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])