@@ -303,3 +303,126 @@ def m_9_5_15():
303303 set_numbers_A = set (map (int , input ()))
304304 set_numbers_B = set (map (int , input ()))
305305 print (set_numbers_A == set_numbers_B )
306+
307+
308+ # === 9.6 Задачи II ===
309+
310+
311+ def m_9_6_1 ():
312+ """
313+ Анализ текста
314+ -------------------------------------
315+ Напишите программу, которая анализирует текст и выводит
316+ уникальные слова в нем, игнорируя знаки препинания и регистр.
317+
318+ **На вход** поступает строка, представляющая из себя предложение.
319+
320+ Ваша задача перевести все символы в нижний регистр, убрать знаки,
321+ такие как " ?!,.:;".
322+
323+ Также может встретиться тире с пробелами до и после слова " - ",
324+ его предлагаю заменить на пробел.
325+
326+ Отсортировать получившееся множество слов в лексикографическом порядке
327+ в порядке возрастания. В качестве результата вывести все отсортированные
328+ слова по порядку, каждое слово с новой строки.
329+ """
330+ string = input ()
331+ chrs = " ?!,.:;"
332+ words = set (word .strip (chrs ) for word in string .lower ().split () if word != "-" )
333+ print (* sorted (words ), sep = "\n " )
334+
335+
336+ def m_9_6_2 ():
337+ """
338+ Музыкальные предпочтения
339+ -------------------------------------
340+ Вася и Петя решили поделиться каждый своими музыкальными предпочтениями,
341+ а потом решили проанализировать, какие же группы нравятся и Васе и Пете,
342+ а потом проанализировать, которые нравятся только Вася и только Пете.
343+
344+ Необходимо найти общие, Васины и Петины уникальные музыкальные группы.
345+
346+ - Вводятся две строки музыкальных групп: сперва Васи, потом Пети.
347+ - Группы разделены между собой пробелами.
348+ - Результат необходимо представить в виде отсортированных
349+ в лексикографическом порядке списков.
350+ """
351+ vasya , petya = set (input ().split ()), set (input ().split ())
352+ print (sorted (vasya & petya ), sorted (vasya - petya ), sorted (petya - vasya ), sep = "\n " )
353+
354+
355+ def m_9_6_3 ():
356+ """
357+ Панграммы
358+ -------------------------------------
359+ На вход поступают строка, предложение из какого либо текста
360+ на русском языке.
361+
362+ Ваша задача определить, является ли данное предложение панграммой.
363+ Но давайте условимся, регистр не имеет значения!
364+
365+ Если текст является панграммой, то вывести True, иначе False.
366+
367+ Примечание: Панграмма - это предложение, в котором каждая буква
368+ данного алфавита используется по крайней мере один раз.
369+ """
370+ alphabet_ru = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
371+ string = input ()
372+ print (set (ch for ch in string .lower () if ch in alphabet_ru ) == set (alphabet_ru ))
373+
374+
375+ def m_9_6_4 ():
376+ """
377+ Одинаковые наборы букв у слов
378+ -------------------------------------
379+ На вход подаётся целое число n. Затем n слов, каждое с новой строки.
380+
381+ Ваша задача если все слова состоят из одних и тех же наборов букв,
382+ то вывести True, иначе False.
383+
384+ Интересные заметки на полях: Если мы поместим в обычное множество
385+ замороженные множества букв из слов,
386+ то дубликаты замороженных множеств будут удалены.
387+ Хмм, что же нам тогда даст длина len() такого множества?
388+ Как будто ответ где-то прям рядом?
389+ """
390+ n = int (input ())
391+ words = set (frozenset (input ()) for _ in range (n ))
392+ print (len (words ) == 1 )
393+
394+
395+ def m_9_6_5 ():
396+ """
397+ Группы учащихся
398+ -------------------------------------
399+ Как мы с Вами помним, Вася у нас поступил в шарагу. где его одногруппники
400+ посещают два дополнительных курса: информатику и физику.
401+
402+ Вася решил проанализировать, кто из студентов:
403+
404+ - посещает оба курса,
405+ - изучает только информатику,
406+ - изучает только физику,
407+ - учится только на одном из курсов (информатика или физика).
408+
409+ Формат вывода следующий:
410+
411+ - Выводим через запятую учащихся на курсе по информатике и физике
412+ - Выводим через запятую учащихся на курсе по информатике, но не физике
413+ - Выводим через запятую учащихся на курсе по физике, но не информатике
414+ - Выводим через запятую учащихся которые только на одном из курсов
415+ (вывести всех участников с двух курсов)
416+
417+ Примечание: Все списки отсортированы в лексикографическом порядке.
418+ Если список пуст - вместо перечисления ставится прочерк (`-`).
419+ """
420+ inform_students , physics_students = set (input ().split ()), set (input ().split ())
421+ result = [
422+ (inform_students & physics_students ),
423+ (inform_students - physics_students ),
424+ (physics_students - inform_students ),
425+ (physics_students ^ inform_students ),
426+ ]
427+ for res in result :
428+ print (* sorted (res ) if res else "-" , sep = ", " )
0 commit comments