Вдохновленный Показать цепь маленьких гор с нечетным числом на вершине! по @sygmei .
Зачем цепочка гор, если у вас может быть одна массивная?
Создайте программу, которая принимает входной номер и печатает гору с каждым нечетным числом вплоть до входного номера.
(Где «юго-запад» означает directly below and to the left
, а «юго-восток» означает directly below and to the right
)
У каждого числа будет /
юго-запад от него и \
юго-восток. Он начинается 1
сверху, а следующий номер пойдет на юго-запад от /
или на юго-восток от \
. Следующее число будет идти в строке, ближайшей к вершине и слева от максимально возможного.
Для многозначного номера, только 1-я цифра должна быть в правильном месте, а другие цифры должны быть сразу после, и только первая цифра должна иметь \
и /
выходить из нее.
Гора до 1 или 2 это просто:
1
/ \
Гора до 3 или 4 это просто:
1
/ \
3
/ \
Для 25 или 26:
1
/ \
3 5
/ \ / \
7 9 11
/ \ / \ / \
13 15 17 19
/ \ / \ / \ / \
21 23 25
/ \ / \ / \
Последние две строки, где ввод 121:
111 113 115 117 119 121
/ \ / \ / \ / \ / \ / \
И последние две строки, где ввод 1019:
993 995 997 999 1001100310051007100910111013101510171019
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
Вы можете предположить, что ввод будет больше 0 и меньше 10001 (исключая).
Конечные пробелы в порядке, а дополнительные начальные пробелы в порядке, если они одинаковы во всех строках.
Это код-гольф , поэтому выигрывает самая короткая программа в байтах.
Ответ на этот вопрос можно найти здесь (в Python на repl.it), если вам нужно больше тестов.
Ответы:
05AB1E ,
54524746 байтовПопробуйте онлайн!
объяснение
Я мог бы сэкономить 5 байт,
ÅɹL£D€g__ÏRv"/ \ "yg×N·©úˆy4jJðÛ®>úˆ}¯R»
если бы я только выдвинул это исправление для j, которое я написал несколько недель назад : /источник
Пакет, 335 байт
источник
cmd /Q /C file.bat
считает 3 дополнительных байта, но это все же лучше, чем@echo off
. Вы должны опубликовать это на вопрос о пакетных подсказках.Python 2,
160149143 байтаСпасибо TFeld за сохранение 11 байтов и Artyer за сохранение 6 байтов
источник
i=len(y)
иfor l in y:print' '*i+l;i-=1
вместоfor i,l in enumerate(y):print(len(y)-i-1)*' '+l
-10 байт\\
чтобы\
так это перед пространствомwhile y:print' '*-~len(y)+y.pop(0)
. Это экономит 3 байта.%-4d
оставить оправдание на 4.Perl, 134
133 байта + 1 для
-p
вариантаОтформатированная версия (оригинальная версия для игры в гольф использует настоящие «новые линии» вместо \ n)
источник
Баш, 425 байт
отформатирован:
источник