Если задано положительное целое число <100 (от 1 до 99, включая 1 и 99), выведите столько локеров.
Шкафчик определяется следующим образом:
+----+
| |
| |
| |
| nn |
+----+
где nn
- номер шкафчика, в базе 10. Если есть 1-значный номер, он обозначается 0 перед ним. Например, шкафчик № 2 отображает номер 02
.
Шкафчики могут быть сложены, но только до 2 высот:
+----+
| |
| |
| |
| on |
+----+
| |
| |
| |
| en |
+----+
on
обозначает нечетное число, en
четное число. Шкафчики также можно поставить рядом друг с другом.
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+----+
| | | |
| | | |
| | | |
| 02 | 04 | 05 |
+----+----+----+
Обратите внимание, что шкафчик номер 5 - это шкафчик с нечетным номером, который находится внизу. Это связано с тем, что при вводе с нечетным номером последний шкафчик должен быть размещен на полу (потому что шкафчик с зависанием стоит слишком дорого). Таким образом, приведенный выше пример является ожидаемым выходным значением для n = 5. n = 0 не должен возвращать ничего.
Правила: Стандартные методы ввода / вывода. Ввод в любом удобном формате, вывод в виде строки. Применяются стандартные лазейки.
Тестовые случаи:
Input
Output
---------------------
1
+----+
| |
| |
| |
| 01 |
+----+
--------------------- (newlines optional in case 1)
4
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+
| | |
| | |
| | |
| 02 | 04 |
+----+----+
---------------------
5
+----+----+
| | |
| | |
| | |
| 01 | 03 |
+----+----+----+
| | | |
| | | |
| | | |
| 02 | 04 | 05 |
+----+----+----+
---------------------
16
+----+----+----+----+----+----+----+----+
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| 01 | 03 | 05 | 07 | 09 | 11 | 13 | 15 |
+----+----+----+----+----+----+----+----+
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| 02 | 04 | 06 | 08 | 10 | 12 | 14 | 16 |
+----+----+----+----+----+----+----+----+
Это код-гольф , поэтому выигрывает самый короткий код!
1
быть выведены предшествующие переводы строки ?Ответы:
Pyth , 66 байт
Тестирование.
источник
Python 2,
201191185175171166164163 байтаПопробуйте онлайн!
источник
PHP, 191 байт
Попробуйте онлайн!
PHP, 235 байт
Случай 1 с необязательными символами новой строки
Попробуйте онлайн!
расширенный
PHP, 300 байт
заменить
["","",""]
на,["\n","\n","\n"]
если вы хотите, чтобы новые строки для дела1
Попробуйте онлайн!
источник
Рубин,
256239201191183 байтаЭто ужасно долго. Я буду больше заниматься гольфом.
источник
C (gcc) ,
426335300294282252249246244237 байтЭто действительно должно быть в гольфе
Попробуйте онлайн!
источник
-~n/2
вместоn/2+n%2
Пакетный, 305 байтов
+----+
и| |
оба схожи с+ +
тем, что они могут быть сгенерированы с помощью одной подстановки, и это оказывается немного короче, чем сгенерировать их отдельно (дополнительная кавычка, необходимая для|
s, не помогает).источник
Pyth -
9774868075 байтПопробуй здесь
источник
JavaScript ES6, 224 байта
Использовал некоторые идеи из ответа Python по математике
Тестовый фрагмент
Очищен
источник
Древесный уголь , 37 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Введите количество шкафчиков в
q
.Зациклиться на шкафчиках от
1
доq
включительно.Рассчитайте направление к следующему шкафчику и повторите это 5 раз (по гольфу, чем при использовании прыжковых движений).
Нарисуйте шкафчик, начиная с нижнего левого угла. (Нижний правый угол также занимает 4 байта, в то время как верхний правый угол занимает 5. Верхний левый угол занимает всего 3 байта, но тогда номер ячейки будет занимать больше времени.)
Нарисуйте ведущий ноль номера шкафчика, если это необходимо.
Нарисуйте номер шкафчика перевернутым и справа налево, фактически вправо, оправдывая его.
Вернитесь в левый нижний угол, чтобы рассчитать направление к следующему шкафчику.
Изменить: Более поздние версии Charcoal поддерживают это 32-байтовое решение:
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Возьмите числа от
1
входного номера включительно попарно. (Если входное число нечетное, последний массив будет иметь только один элемент.)Зациклите каждую пару в обратном порядке.
Нарисуйте ведущий ноль номера шкафчика, если это необходимо.
Нарисуйте номер шкафчика перевернутым и справа налево, фактически вправо, оправдывая его.
Переместитесь в верхний левый шкафчик и нарисуйте его. Это также нижний левый угол следующего шкафчика, поэтому мы готовы нарисовать второй шкафчик пары, если это применимо.
Перейти к следующей паре шкафчиков. (Это должно быть перед внутренним циклом для сохранения 1 байта, но Charcoal генерирует неправильный вывод для ввода 1 по какой-то причине.)
источник