Долгое время скрывался здесь впервые.
Напишите программу, которая принимает 3 входа: X, Y и Z.
- X = поперек (столбцы)
- Y = вниз (строки)
- Z = Маркер местоположения
Затем программа должна распечатать визуальную сетку X поперек и Y вниз. Эта сетка может быть сделана из любого символа, кроме "+". Каждому «местоположению» присваивается порядковый номер, начиная с 1 в точке с координатами 1, 1 поперек и затем до конца.
X и Y всегда будут по крайней мере 3, а Z никогда не будет больше, чем X * Y
.
Z будет представлять местоположение, которое печатается в виде «+», на месте, а также 1 символ влево, вправо, вверх и вниз. Например:
+
+++
+
Наконец, если символы + будут пересекать края (самый верхний, самый левый, самый правый и / или самый нижний край), то + должен отскочить назад по той же оси и переполнить другую сторону.
Примеры: Input = 5, 5, 13
-----
--+--
-+++-
--+--
-----
Вход = 10, 10, 10
-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------
Вход = 10, 10, 21
----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------
Изменить: не квадратный пример 16,3,32
---------------+
-------------+++
---------------+
Я думаю, что я охватил все. Не должно быть никаких ограничений на ввод, но если ваша программа требует, ограничьте его на 64 * 64.
Бонус (могу ли я это сделать?): Вход Z не должен быть> X * Y, но если он больше, чем Y * Z, выведите центр + в середину сетки.
РЕДАКТИРОВАТЬ: Вход Z не может быть больше, чем X * Y
Редактировать 2 :. Внесены некоторые изменения в X и Y, чтобы быть понятнее
Это код гольф, самый короткий код выигрывает.
Ответы:
Python 2,
172171 байтРедактировать: 1 байт сохранен путем преобразования в функцию.
Предыдущий (более читаемый):
источник
JavaScript (ES6), 165 байт
источник
Befunge, 175 байт
Попробуйте онлайн!
Первая строка (и короткое продолжение на вторую строку) - это место, где считываются параметры и рассчитывается несколько констант - координаты местоположения ( lx , ly ), а также скорректированные координаты, которые учитывают отскок от края:
Вторая и третья строки содержат основные циклы по высоте и ширине сетки, причем путь выполнения сначала идет справа налево, а затем поворачивается на третью строку слева направо. Для каждой координаты в сетке ( gx , gy ) вычисляем следующее условие:
Если это условие истинно, мы помещаем a
"+"
в стек, если ложно, мы помещаем a"-"
. Чтобы избежать разветвления, мы действительно просто нажимаем43 + 2 * !condition
(43 - значение ASCII плюс, а 45 - минус).Как только циклы завершены, последний бит кода - это просто стандартная процедура вывода, которая распечатывает все в стеке.
источник
JavaScript (ES6), 170
По-прежнему гольф
Меньше гольфа
Тестовое задание
источник