From 9f865c522d957115d6257e1facafd8eeb3c0b021 Mon Sep 17 00:00:00 2001 From: Zver Date: Tue, 16 Dec 2025 11:34:13 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=2016=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20(=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson.16.py | 77 ++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 42 deletions(-) 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)