Язык программирования

3 082 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.
Выведите информацию о всех листьях дерева: их id и предсказываемый класс.

Формат входных данных
JSON с деревом решений.

Формат выходных данных
Для каждого листа (в порядке возрастания id): <id>пробел<class> Каждый лист на отдельной строке.

 
Найдите индекс признака, который чаще всего используется для разбиения во внутренних узлах дерева.
Если несколько признаков используются одинаково часто, выведите минимальный индекс.

Формат входных данных
JSON с деревом решений.

Формат выходных данных
Одно число — индекс самого используемого признака.
Дано дерево решений и набор объектов. Для каждого листа подсчитайте, сколько объектов в него попадает.

Формат входных данных
Первая строка: JSON с деревом. Вторая строка: N — количество объектов. Следующие N строк: признаки каждого объекта через пробел.

Формат выходных данных
Для каждого листа (в порядке возрастания id): <id_листа>:<количество_объектов> Каждый лист на отдельной строке. Листья с 0 объектов тоже выводить.

Дано дерево решений в формате JSON. Подсчитайте количество внутренних узлов (type = "decision") и листьев (type = "leaf").

Формат входных данных
JSON с полем "nodes" — список узлов.


Формат выходных данных
Два числа через пробел: количество внутренних узлов и количество листьев.

Структура папок и файлов компьютера представлена в формате JSON. Это рекурсивная структура: папка может содержать другие папки.
Найди и выведи имена всех файлов (элементов с `"type": "file"`), в каком бы вложенном уровне они ни находились.

Формат входных данных
JSON-объект, представляющий корневую папку:
- `"name"` — имя элемента
- `"type"` — тип: `"folder"` (папка) или `"file"` (файл)
- `"children"` — массив вложенных элементов (только для папок)

Формат выходных данных
Имена всех файлов, каждое на отдельной строке, в порядке обхода (сначала файлы текущей папки, потом рекурсивно вложенные папки).
 
Кафе хранит данные о заказах за день в формате JSON. Каждый заказ содержит список позиций с ценами.
Вычисли общую выручку кафе за день (сумму всех цен всех позиций всех заказов).

Формат входных данных
JSON-объект с полем `"orders"` — массив заказов. Каждый заказ имеет:
- `"order_id"` — номер заказа
- `"items"` — массив позиций, каждая позиция имеет `"name"` и `"price"`

Формат выходных данных
Одно число — общая выручка. Если число дробное, выведи с точностью до 2 знаков после запятой.
Библиотека хранит данные о книгах по жанрам в формате JSON. Структура вложенная: внутри объекта есть жанры, внутри жанров — списки книг.
Найди общее количество книг во всей библиотеке.

Формат входных данных
JSON-объект с полем `"genres"` — массив жанров. Каждый жанр имеет:
- `"name"` — название жанра
- `"books"` — массив книг (каждая книга — объект с полями title и author)

Формат выходных данных
Одно целое число — общее количество книг.
В школьной системе хранятся данные об учениках в формате JSON.
Найди и выведи имена всех отличников — учеников, у которых средний балл (average_score) больше или равен 90.

Формат входных данных
JSON-объект с полем `"students"` — массив учеников. Каждый ученик имеет поля:
- `"name"` — имя ученика
- `"class"` — класс
- `"average_score"` — средний балл (число от 0 до 100)

Формат выходных данных
Имена отличников, каждое на отдельной строке, в том порядке, в котором они встречаются во входных данных.
Если отличников нет — выведи Нет отличников.
 
Интернет-магазин хранит данные о корзине покупателя в формате JSON.
Дан JSON с информацией о корзине. Нужно вывести общее количество товаров в корзине (сумму всех `quantity`).

Формат входных данных
JSON-объект с полем items — массив товаров. Каждый товар имеет поля:
  • name — название товара
  • price — цена
  • quantity — количество
Формат выходных данных
Одно целое число — общее количество товаров.

Часть 1: Функция «Здание»

Напиши функцию building(width, height, floors, color), которая рисует здание с окнами.

Параметры функции:

  • width — ширина здания
  • height — высота здания
  • floors — количество этажей (рядов окон)
  • color — цвет здания

Как выглядит здание

    ┌────────────┐
    │  ■■    ■■  │  ← этаж 3
    │  ■■    ■■  │  ← этаж 2
    │  ■■    ■■  │  ← этаж 1
    └────────────┘
    ↑
    черепашка начинает тут (левый нижний угол)

Шаг 1: Запоминаем начальную позицию

Перед рисованием сохрани координаты черепашки:

base_x = xcor()
base_y = ycor()

Шаг 2: Рисуем здание

Закрашенный прямоугольник размером width × height цвета color.


Шаг 3: Вычисляем размер окон
window_width = width / 5
window_height = height / (floors * 2)

Шаг 4: Рисуем окна

На каждом этаже по 2 окна.  Используйте данный фрагмент для рисования окон, добавив нужные строки

# floor — номер этажа (0, 1, 2...), window — номер окна на этаже (0 или 1).
# Рисуем окна по этажам
for floor in range(floors):   # проходим по этажам
    for window in range(2):   # проходим по окошкам на этаже
        # Определяем позицию окна
        x = base_x + width / 6 + window * (width / 2)
        y = base_y + window_height / 2 + floor * (height / floors)
        
        # Переходим к окну (в точку (x, y))
        # Этот код напишите сами! 
        # не забудьте поднять перо перед переходом в точку и после перехода опустить

        # Рисуем жёлтое окно
        fillcolor("yellow")
        begin_fill()
        # напишите код рисования квадрата со стороной window_width
        
        end_fill()


В конце функции поднимите перо черепашки! Протестируйте функцию на одном здании! Затем приступайте к части 2.


### Схема расположения окон
    ┌─────────────────────────┐
    │                         │
    │   ■■            ■■      │  floor = 1
    │                         │
    │   ■■            ■■      │  floor = 0
    │   │             │       │
    └───│─────────────│───────┘
    ↑   │             │
 base_x │             └── base_x + width/6 + width/2
        │
        └── base_x + width/6

 


Часть 2: Рисуем улицу

После функции напиши основную программу, которая рисует улицу с  четырьмя зданиями в ряд.

Создай четыре списки по таблице ниже и используй их при рисовании улицы.

i widths[i] heights[i] floors_list[i] colors[i]
0 60 120 4 "gray"
1 100 80 2 "beige"
2 50 150 5 "lightblue"
3 80 100 3 "pink"


Первое здание начните рисовать с точки (-300, -200) 
После рисования одного здания изменяйте положение Черепашки по оси x:
x = x + widths[i] + 10
 Дерево решений состоит из узлов двух типов:

1. Внутренний узел — содержит номер признака (feature_index) для разделения.
   Если значение признака = 0, идём в левое поддерево.
   Если значение признака = 1, идём в правое поддерево.

2. Лист — содержит предсказание (prediction), которое возвращается как ответ.
Пример дерева:
                    [feature_index 0]
                     /       \
                значение=0   значение=1
                   /           \
              [feature_index 1]    лист(1)
               /      \
           лист(0)  лист(1)
Для примера [0, 1, 0]:
- Корень: feature_index=0, значение признака 0 равно 0 → идём налево
- Узел: feature_index=1, значение признака 1 равно 1 → идём направо
- Лист: prediction=1 → ответ 1

Реализуй класс TreeNode с тремя методами:

1. __init__(self, feature_index=None, left=None, right=None, prediction=None)
   Сохраняет все параметры как атрибуты объекта.

2. is_leaf(self)
   Возвращает True, если узел является листом (у него есть prediction).
   Возвращает False, если узел внутренний.

3. predict_one(self, sample)
   Делает предсказание для одного примера.
   - Если узел — лист, возвращает prediction
   - Иначе смотрит на sample[feature_index]:
     - если 0 → рекурсивно вызывает predict_one у левого поддерева
     - если 1 → рекурсивно вызывает predict_one у правого поддерева

 
 

Примеры использования:

Пример 1
# Создание листа
leaf = TreeNode(prediction=1)
leaf.is_leaf()              # True
leaf.predict_one([0, 1, 0]) # 1

Пример 2
# Создание дерева глубины 1
tree = TreeNode(
    feature_index=0,
    left=TreeNode(prediction=0),
    right=TreeNode(prediction=1)
)
tree.is_leaf()              # False
tree.predict_one([0, 1, 0]) # 0 (sample[0]=0 → налево)
tree.predict_one([1, 0, 0]) # 1 (sample[0]=1 → направо)

На крыше дома в Простоквашино висит N сосулек. Каждую минуту все сосульки одновременно капают: каждая сосулька уменьшается на 1 сантиметр. Когда длина сосульки становится 0 или меньше, она падает и исчезает.

Дядя Фёдор хочет узнать, через сколько минут упадёт последняя сосулька.

Входные данные: В первой строке число N (1 ≤ N ≤ 1000). Во второй строке N целых чисел от 1 до 10000 — начальные длины сосулек.

Выходные данные: Через сколько минут упадёт последняя сосулька.

Матроскин украшает окно к Новому году. Окно представляет собой сетку N×M клеток. Он хочет нарисовать рамку по периметру окна (все крайние клетки) специальной краской. Сколько клеток нужно закрасить?

Входные данные: Два целых числа N и M (1 ≤ N, M ≤ 1000) — размеры окна. Каждое число записано в отдельной строке.

Выходные данные: Количество клеток в рамке.

Почтальон Печкин принёс в Простоквашино ёлку высотой H сантиметров. Каждый день ёлка осыпается и становится ниже на D сантиметров, но не может стать ниже нуля. Новый год наступит через N дней.

Какой высоты будет ёлка в новогоднюю ночь (после N дней осыпания)?

Входные данные: Три целых числа H, D, N (1 ≤ H ≤ 1000, 1 ≤ D ≤ 100, 1 ≤ N ≤ 100). Каждое число записано в отдельной строке.

Выходные данные: Высота ёлки в новогоднюю ночь.

Галчонок выучил N не обязательно разных слов и говорит их по очереди, повторяя циклически. Матроскин хочет узнать, сколько раз за день Галчонок скажет слово «kto-tam», если всего за день он произносит K слов.

Входные данные: В первой строке число N, во второй число K (1 ≤ N ≤ 100, 1 ≤ K ≤ 109) — количество слов, которые повторяет Галчонок и общее количество произнесённых слов. В следующих N строках записаны слова Галчонка в том порядке, как он их повторяет (строки состоят из маленьких латинских букв и дефисов, длиной до 20 символов).

Выходные данные: Сколько раз Галчонок скажет «kto-tam».

Утром Дядя Фёдор вышел на улицу и увидел цепочку следов на снегу. Он записал глубину каждого следа в сантиметрах. Дядя Фёдор хочет найти самый глубокий след, чтобы понять, кто из жителей деревни проходил мимо (чем тяжелее, тем глубже след).

Входные данные: В первой строке число N (1 ≤ N ≤ 1000) — количество следов. Во второй строке N целых чисел от 1 до 100 — глубина каждого следа.

Выходные данные: Два числа через пробел: максимальная глубина и номер следа с такой глубиной (если таких несколько, выведите номер первого). Следы нумеруются с единицы.

Матроскин готовит бутерброды для новогоднего стола. У него есть N кусков хлеба и M кусков колбасы. На каждый бутерброд нужен один кусок хлеба и два куска колбасы. Сколько бутербродов сможет приготовить Матроскин?

Входные данные: Два целых числа N и M (0 ≤ N, M ≤ 1000) — количество кусков хлеба и колбасы.  Каждое число записано в отдельной строке.

Выходные данные: Одно число — максимальное количество бутербродов.

Печка в Простоквашино работает интересно: каждый час она повышает температуру в доме на A градусов, но из-за щелей в стенах за тот же час уходит B градусов тепла. Сейчас в доме T градусов.

Матроскин считает, что комфортная температура — не меньше C градусов. Определите, будет ли в доме когда-нибудь комфортно, и если да — через сколько полных часов.

Входные данные: Четыре целых числа T, A, B, C (−50 ≤ T ≤ 50, 1 ≤ A ≤ 10, 1 ≤ B ≤ 10, 1 ≤ C ≤ 50) — начальная температура, прирост от печки, потери тепла и желаемая температура. Каждое число вводится в отдельной строке.

Выходные данные: Число часов до достижения комфортной температуры, или «Никогда», если температура не достигнет нужной.

Мама прислала Дяде Фёдору посылку с конфетами. Дядя Фёдор хочет разделить конфеты поровну между собой, Матроскиным и Шариком. Если конфеты не делятся на троих поровну, остаток достанется Галчонку.

Сколько конфет получит каждый из троих друзей, и сколько останется Галчонку?

Входные данные: Одно целое число N (1 ≤ N ≤ 10000) — количество конфет в посылке.

Выходные данные: Два числа через пробел: сколько конфет получит каждый из друзей и сколько достанется Галчонку.

Кот Матроскин заготавливает дрова на зиму. Печка Галчонка потребляет ровно K поленьев в день. Матроскин заготовил N поленьев и хочет узнать, на сколько полных дней хватит дров.

Входные данные: Вводятся два целых числа N и K (1 ≤ N ≤ 10000, 1 ≤ K ≤ 100) — количество заготовленных поленьев и дневной расход. Каждое число записано в отдельной строке.

Выходные данные: Одно число — количество полных дней, на которые хватит дров.

Поделиться
Класснуть