Задачи о примерных студентах, сортировке IP-адресов, гематрии слов, группировке дубликатов и разделении списка на отрезки.
1. Список примерных студентов
Декану факультета захотелось узнать, какие студенты посетили все лекции с начала учебного года. Для каждой лекции есть список присутствовавших студентов. Напишите программу, определяющую фамилии студентов, которые не пропустили ни одной лекции.
Входные данные:
В первой строке подается число m – количество лекций, проведенных с начала учебного года. Далее идут m блоков строк со списками студентов. На первой строке каждого блока указано количество фамилий n, а затем идут n строк с фамилиями тех, кто был на лекции.
Выходные данные:
Программа должна вывести список студентов, посетивших все лекции, в алфавитном порядке.
Способ 1:
Способ 2:
Способ 3:
2. Сортировка IP-адресов
Напишите программу, которая считывает IP-адреса и выводит их в порядке возрастания в соответствии с десятичным представлением. Чтобы перевести адрес, к примеру 192.168.1.2 в десятичное число, применяют формулу:
192 х 2563 + 168 x 2562 + 1 x 2561 + 2 x 2560 = 3232235778
Входные данные:
В первой строке подается число n, затем n строк с IP-адресами.
Выходные данные:
Список IP-адресов, отсортированных по десятичному представлению.
Решение
Способ 1 – с использованием ipaddress:
Способ 2:
Способ 3:
3. Сортировка по гематрии
Гематрия – это сумма числовых значений букв, входящих в состав слова. В данном случае числовое значение букв определяется по таблице ASCII, причем учитываются только заглавные буквы (то есть при подсчете гематрии все буквы переводятся в верхний регистр). Программа должна вывести список слов в исходном регистре, отсортированный в соответствии с гематрией.
Входные данные:
Число n, затем n строк с английскими словами, состоящими из букв в разных регистрах.
Выходные данные:
Список, отсортированный в соответствии с гематрией слов.
Решение
Способ 1:
Способ 2:
Способ 3:
4. Группировка дубликатов
На вход подается строка символов, разделенных пробелами. Напишите программу, которая группирует одинаковые символы, формируя вложенный список.
Входные данные:
Выходные данные:
Решение
Вариант 1 – с itertools:
Вариант 2:
Вариант 3:
5. Разделение списка на отрезки
На вход подается строка символов, из которых формируется список и число n. Напишите функцию, которая разбивает список на n частей, формируя вложенный список.