Возьмите числа 0, 1, 2, 3, 4, ...
и расположите их по часовой стрелке, начиная вниз, записывая каждую цифру в отдельный квадрат.
Затем, учитывая один из четырех различных и согласованных символов ASCII (по вашему выбору), представляющих ось, и входное целое число n
, выведите первые n
члены последовательности, описанной путем выбора квадратов вдоль соответствующей оси.
Например, ниже расположена расположенная спираль до середины 29
. Предположим, мы используем u / d / l / r
для наших четырех символов, представляющих up / down / left / right
. Затем, в u
качестве входных данных, мы выводим 0, 5, 1, 4 ...
(положительная ось Y) до n
th-го члена. Если бы мы вместо этого были заданы в l
качестве входных данных, то это было бы 0, 3, 1, 1 ...
до n
th срок.
2---3---2---4---2---5---2
| |
2 1---3---1---4---1 6
| | | |
2 2 4---5---6 5 2
| | | | | |
1 1 3 0 7 1 7
| | | | | | |
2 1 2---1 8 6 2
| | | | |
0 1---0---1---9 1 8
| | |
2---9---1---8---1---7 2
Это последовательности в OEIS:
- http://oeis.org/A033953 для положительной оси X
- http://oeis.org/A033988 для положительной оси Y
- http://oeis.org/A033989 для отрицательной оси X
- http://oeis.org/A033990 для отрицательной оси Y
Примеры
d 19
[0, 1, 1, 8, 3, 7, 6, 2, 1, 5, 1, 1, 6, 2, 2, 1, 3, 4, 0]
r 72
[0, 7, 1, 7, 4, 2, 8, 1, 1, 3, 1, 2, 0, 2, 3, 1, 3, 4, 6, 5, 5, 5, 7, 7, 8, 8, 9, 6, 8, 1, 1, 1, 2, 3, 1, 8, 0, 6, 1, 7, 0, 9, 2, 8, 4, 3, 2, 1, 1, 7, 2, 6, 2, 1, 3, 3, 5, 5, 3, 2, 2, 0, 4, 3, 2, 5, 4, 6, 5, 0, 5, 1]
u 1
[0]
правила
- Если применимо, вы можете предположить, что ввод / вывод будет соответствовать типу Integer вашего языка.
- Если вы используете целые числа для представления четырех осей, вы можете использовать отрицательные целые числа, не нарушая правил.
- Вход и выход могут быть заданы любым удобным способом .
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это Код-гольф поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
источник
Ответы:
Python 2 ,
94898483747270 байтЯ использовал WolframAlpha и определил, что верхней границы 5 n > 4n 2 + 3n кажется достаточно. Это может быть изменено на 9 н бесплатно. Для более крупных входов используйте
9*n*n
вместо того,5**n
чтобы избежать нехватки памяти.Попробуйте онлайн!
Входные данные для направлений:
Сохранено 14 байтов благодаря Роду.
Сохранено 2 байта благодаря Джонатану Аллану.
источник
MATL , 32 байта
Вход
n
,a
гдеa
представляет собой ось следующим образом :0
: оставил;1
: вверх;2
: правильно;3
: вниз.Выход - это строка.
Попробуйте онлайн! Или проверьте все тестовые случаи .
источник
Желе ,
1918 байтИспользует 5 n трюк из ответа Python от mbomb007
Двоичная ссылка, взятая
n
слеваd
и целое число из:[-3,-1,1,3]:[v,<,^,>]
Попробуйте онлайн!
20-байтная альтернатива, которая намного быстрее и не имеет сегрегации для такого маленького n:
Попробуйте онлайн!
Как?
источник
Значительно будет работать (вроде +1000)
JavaScript (Node.js) , 104 байта
Попробуйте онлайн!
объяснение
Четвёртая цифра константы Шамперноуна
________________________________________________________
Менее эффективный метод (не будет работать на 1000+)
JavaScript (Node.js) , 81 байт
Попробуйте онлайн!
источник
Stax , 13 байт
Запустите и отладьте его
Он принимает входные данные с указанием направления, а затем счет. Вправо, вверх, влево и вниз являются
1
,3
,5
, и7
соответственно. Выполнение трех предоставленных тестовых примеров занимает целую минуту.источник