diff --git a/lesson.16.py b/lesson.16.py index b7f3096..c9729eb 100644 --- a/lesson.16.py +++ b/lesson.16.py @@ -1,68 +1,61 @@ ''' ****** Задание 16 из 20 ********* -* У программистов особые отношения с двоичной системой счисления — ведь именно в ней работает вся цифровая техника. -Продолжим тренировки в статистической обработке данных и научимся анализировать числа с позиции их представления в двоичной системе. +* Дети в поезде снова играют в любимую игру — считать зверей за окном. +На этот раз их заинтересовало, что находится рядом с зайками. Поможем им разобраться! -Напишите программу, которая по списку целых чисел определяет: +Напишите программу, которая по описанию придорожной местности находит все объекты, стоящие рядом с зайками — слева или справа от слова зайка. -количество разрядов; -количество единиц; -количество нулей. Формат ввода -Вводится последовательность чисел, записанных через пробел. +В каждой записано описание придорожной местности. +Конец ввода обозначается пустой строкой. Формат вывода -Вывести список словарей с требуемой статистикой. +Определите список увиденного рядом с зайками без повторений. +Порядок вывода не имеет значения. Примечание -Вывод в примерах отформатирован только для визуальной наглядности. -Все пробельные символы при проверке игнорируются. -Порядок словарей обязан совпадать с порядком переданных чисел. -Порядок ключей в словаре не имеет значения. +Считается, что объект находится рядом, если он записан справа или слева от требуемого. Подсказка -Напомним, что получить двоичное представление числа можно: +Организуйте цикл не по описаниям, а по их индексам. + +В следующих параграфах мы рассмотрим более комфортный способ обработки, но пока предлагаем потренироваться в уже изученном материале. -bin(number) - формирует строку, содержащую двоичное представление числа с префиксом 0b -f'{number:b}' - формирует строку, содержащую двоичное представление числа Пример 1 Ввод -5 8 12 +березка елочка зайка волк березка +сосна зайка сосна елочка зайка медведь +сосна сосна сосна белочка сосна белочка + Вывод -[ - { - "digits": 3, - "units": 2, - "zeros": 1 - }, - { - "digits": 4, - "units": 1, - "zeros": 3 - }, - { - "digits": 4, - "units": 2, - "zeros": 2 - } -] +волк +елочка +медведь +сосна ''' if __name__ == "__main__": - data = [] - binary_strings = list(map(lambda x: bin(int(x))[2:], input().split())) + nearby_objects = set() - for binary in binary_strings: - data.append({ - "digits": len(binary), - "units": binary.count('1'), - "zeros": binary.count('0') - }) + while True: + line = input().split() + if not line: + break + for index, word in enumerate(line): + if word == 'зайка': + if index == 0: + nearby_objects.add(line[index + 1]) + elif index == len(line) - 1: + nearby_objects.add(line[index - 1]) + else: + nearby_objects.add(line[index - 1]) + nearby_objects.add(line[index + 1]) - print(data) + for item in nearby_objects: + print(item)