np.where и np.clip в NumPy: задача без циклов

При вызове np.where(condition, x, y) для каждого элемента выбирается значение из x или y в зависимости от условия. np.clip решает другую задачу: удерживает значения в заданном диапазоне.

Для массива a = np.array([-3, 2, 9]) выражение np.where(a < 0, 0, a) заменит только отрицательные элементы. Выражение np.clip(a, 0, 5) дополнительно ограничит значения сверху. Операции применяются ко всему массиву без Python-цикла.

Ниже — упражнение, в котором эти операции сочетаются с арифметикой массива. Соблюдайте порядок действий из условия и сравните результат через гостевую проверку.

Пять строк вывода: степень, остаток, where, clip и арифметика

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая:

  1. Читает из stdin одну строку с целыми числами через пробел — элементы массива a (от 3 до 7 элементов, все положительные, не менее 2).
  2. Читает вторую строку с тремя целыми числами: p lo hi — показатель степени, нижняя и верхняя границы.
  3. Вычисляет и выводит ровно пять строк в следующем порядке:
  • Строка 1: элементы a ** p через пробел.
  • Строка 2: элементы a % p через пробел.
  • Строка 3: элементы результата np.where(a >= lo, "big", "small") через пробел.
  • Строка 4: элементы результата np.where(a % 2 == 0, 1, 0) через пробел.
  • Строка 5: элементы np.clip(a, lo, hi) через пробел.

Каждая строка — значения через пробел, без лишних пробелов в начале и в конце.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

  • Строка 1: целые числа через пробел — элементы массива a (от 3 до 7 элементов, все ≥ 2).
  • Строка 2: три целых числа через пробел: p lo hi (2 ≤ p ≤ 4, lo < hi, оба входят в диапазон значений a).

Формат вывода

Ровно пять строк: a**p, a%p, результат where со строками, результат where с 0/1, clip(a, lo, hi) — каждый через пробел.

Пример

Ввод
2 3 4 5 6
2 4 5
Вывод
4 9 16 25 36
0 1 0 1 0
small small big big big
1 0 1 0 1
4 4 4 5 5
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи