Вести два предложения, и проверить, можно ли одно предложение получить из другого перестановкой слов, без учёта больших и маленьких букв, но с учётом присутствия нужного количества знаков препинания (не обязательно в правильных местах). Никаких символов, кроме букв, знаков препинания и пробелов, в предложениях не содержится (например, нет цифр, кавычек и т. п.). Вывести True или False соответственно.
Да пребудет с тобой Сила, Люк! Пребудет люк, сила тобой да с!
Спойлер (включить «комментарии, чтобы посмотреть):
True
Вот такой ввод тоже будет правильным: «сила с преБУдет ДА люк!, ТОБой»
Вот код программы для тестирования. Она генерирует пары соответствующих друг другу предложений:
1 import urllib.request
2 import random
3 import sys
4
5 Words = urllib.request.urlopen("https://github.com/first20hours/google-10000-english/raw/master/google-10000-english.txt").read().decode().split()
6
7 Len = int(sys.argv[1]) if len(sys.argv)>1 else 20
8 while Len > len(Words):
9 Words *=2
10
11 Prep = random.sample((list(",!.:;")+[""]*12)*(Len//10),Len)
12 Sent = random.sample(random.sample(Words, 2 * Len // 3)*2,Len)
13
14 def genit(sent, prep):
15 S = Sent[:]
16 random.shuffle(S)
17 S = " ".join(S)
18 P = list(prep)
19 random.shuffle(P)
20 for i in range(len(Sent)//4):
21 j = random.randrange(len(S))
22 S = S[:j] + S[j].swapcase() + S[j+1:]
23 return " ".join(s+P[i] for i,s in enumerate(S.split()))
24
25 print(genit(Sent, Prep))
26 print(genit(Sent, Prep))