Вести два предложения, и проверить, можно ли одно предложение получить из другого перестановкой слов, без учёта больших и маленьких букв, но с учётом присутствия нужного количества знаков препинания (не обязательно в правильных местах). Никаких символов, кроме букв, знаков препинания и пробелов, в предложениях не содержится (например, нет цифр, кавычек и т. п.). Вывести 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))


CategoryHomework

LecturesCMC/PythonIntro2018/Homework_WordsShuffle (последним исправлял пользователь FrBrGeorge 2018-10-28 14:40:27)