Пушечное ядро запускается таким образом, что в первом звене его полета он поднимается по N
верхушкам деревьев, во время второго звена в виде N-1
верхушек деревьев и т. Д., Пока не достигнет самой высокой точки своей траектории. Затем он начинает падать на 1, 2 и т.д. на верхушку глаза, пока не упадет на землю. В то же время пушечное ядро движется в горизонтальном направлении с постоянной скоростью 1 верхушка дерева / глазная связь.
Ваша задача - нарисовать траекторию последовательными буквами из английского алфавита. Если у вас закончились буквы, начните снова с 'A'
. Написать функцию или программу. Входные данные являются целыми числами N
( 1≤N≤15
). Выходными данными может быть символьная матрица в любой разумной форме, например строка, разделенная новой строкой, или список строк. Буквы могут быть как строчными, так и прописными. Допускаются дополнительные начальные и конечные пробелы. Стандартные лазейки запрещены. Чем короче код, тем лучше.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
иP
, галочка идет 1 вправо, но 0 вверх или вниз.Ответы:
05AB1E ,
33322928 байтПопробуйте онлайн!
объяснение
источник
Nú»
или что-то подобное можно использовать для печати по ходу дела, а не])~.c
Stax ,
2924 байтаЗапустите и отладьте его онлайн
Соответствующее представление ascii той же программы таково.
источник
R
169163161153150110109 байтЭтот подход заполняет матрицу и затем печатает матрицу.
Golfed
Спасибо @Giuseppe за 153.
Спасибо @JDL за 150.
См. Комментарий @ Giuseppe для 112, и некоторые правки для 110 теперь 109. Rip оригинальный код.
Если выводится правильный вывод, то 73 байта
источник
Map
вместоmapply
?lapply
вместоmapply
. Спасибо за 150row,column
парами напрямую,[
а не проходить черезmapply
(илиMap
), поэтому я нашел способ сделать это. Я также вспомнил , чтоwrite
существует и может заменитьcat
на 112 байт !Python 2 ,
140135133 байтаПопробуйте онлайн!
источник
MATL , 29 байт
Попробуйте онлайн!
Как это работает
источник
Java (OpenJDK 8) , 121 байт
Попробуйте онлайн!
объяснение
источник
C 184 байта
Попробуйте онлайн!
раскатали:
источник
main
для компиляции. На TIO этоmain
находится в разделе нижнего колонтитула.Clojure,
417319 байтВ какой-то момент я запутался в
reverse
звонках и разочаровался в идее сделать это как можно короче. Я просто хотел иметь рабочее решение. Ну вот...Вроде негольфя
Обновить
По мотивам комментария Оливье мне удалось сократить количество
reverse
звонков и применить некоторые общие трюки в игре в гольф, чтобы вырезать персонажей. Также я создал псевдонимыreverse
,map-indexed
,concat
,repeat
иstr
потому что я использовал их несколько раз каждый.Ungolfed
Создает функцию,
c
которая принимает значение n и возвращает список строк.источник
Древесный уголь ,
3331 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: Сохранено 2 байта благодаря @ ASCII-only. Объяснение:
Инициализируйте текущую букву как индекс в верхнем регистре алфавита к 0.
Сделайте цикл от отрицания входа до входа включительно.
Обычно каждый столбец находится справа от предыдущего. Тем не менее, нет столбца для нуля. Вместо этого требуется коррекция, чтобы обеспечить выравнивание левой и правой сторон.
Цикл для каждой буквы в столбце.
Распечатать текущее письмо.
Увеличить буквенный индекс.
Двигайтесь вверх или вниз в зависимости от того, на какой стороне траектории мы находимся.
источник
Perl 5 , -n
112929088 байтНа этот раз ужасно долго,
printf
кажется, победит.Попробуйте онлайн!
источник
(A..Z)x9
до работы, но это было слишком мало! Было это только для 91. :)Python3 + NumPy,
124115Это создает массив соответствующего размера, находит индексы для траектории и назначает им соответствующий символ.
Самая сложная часть - это генерирование символов AZ, которое основано на очень хакерском приведении чисел к строковому типу.Возвращаемый объект является массивом Unicode.Редактировать : Сохранено 9 байтов, заменяя код, который генерировал символы AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
)map
, как предложено здесь .источник
Python 3 ,
139136 байтПопробуйте онлайн!
Создает каждый слой рекурсивно, учитывая размер и смещение.
-3 байта благодаря Джо Кингу
источник
~
операторе!n and ... or''
чтобыn*' 'and ...
для следующего байтаJ ,
7875 байтПопробуйте онлайн!
-3 благодаря ngn
источник
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 байта
Попробуйте онлайн!
Возвращает список списков символов. Примитивная проверка здесь
источник
Желе , 35 байт
Попробуйте онлайн!
источник
Ябасич , 125 байт
Основное решение , которое использует графический режим для печати символов в правильном столбце и строке экрана.
Поскольку это решение использует графический режим, его нельзя выполнить на TIO.
Выход
Ниже вывод для ввода
7
источник
Рубин ,
106103 байтаПопробуйте онлайн!
источник
QBasic 1.1 , 124 байта
Берет вход и стреляет из пушки. Из-за ограничений по размеру экрана,N должно быть ≤ 6 ,
источник
Python 3 , 190 байт
Попробуйте онлайн!
Я старался как мог. Дайте мне знать, если возможны какие-либо оптимизации.
источник
k4,
7671 байтнекоторые перестановки + назначения для сохранения 5 байтов
получасовые усилия с некоторыми усилиями, чтобы сбрить несколько байтов, но, вероятно, здесь можно сделать гораздо больше. вернусь к этому. веселый вызов!
источник