Задача очень проста, когда дан вход, выведите одну из следующих спиралей:
Input = 1
дает спираль с буквой, A
начинающейся в верхнем левом углу:
A B C D E F
T U V W X G
S 5 6 7 Y H
R 4 9 8 Z I
Q 3 2 1 0 J
P O N M L K
Input = 2
дает спираль с буквой, A
начинающейся в верхнем правом углу:
P Q R S T A
O 3 4 5 U B
N 2 9 6 V C
M 1 8 7 W D
L 0 Z Y X E
K J I H G F
Input = 3
дает спираль с буквой, A
начинающейся в нижнем правом углу:
K L M N O P
J 0 1 2 3 Q
I Z 8 9 4 R
H Y 7 6 5 S
G X W V U T
F E D C B A
Input = 4
дает спираль с буквой, A
начинающейся в нижнем левом углу:
F G H I J K
E X Y Z 0 L
D W 7 8 1 M
C V 6 9 2 N
B U 5 4 3 O
A T S R Q P
Как вы можете видеть, спираль всегда идет по часовой стрелке и движется от внешней стороны к внутренней .
Правила просты:
- Вам необходимо предоставить полную программу с использованием STDIN и STDOUT или ближайшего аналога, если это невозможно.
- Учитывая input (
1, 2, 3, 4
), выведите связанную спираль. - Конечные пробелы разрешены
- Ведущие пробелы допускаются при последовательном использовании
- Вам нужно использовать заглавные буквы для вывода, строчные буквы не допускаются.
- Это код-гольф , поэтому выигрывает программа с наименьшим количеством байтов!
Ответы:
CJam,
454342 байтаПроверьте это здесь.
объяснение
источник
Japt , 53 байта
58 59 60Сохранено 5 байтов благодаря @ETHproductions
Это использует команду поворота, которая я никогда не думал, что будет настолько полезным
Объяснение && Ungolfed
Попробуйте онлайн
источник
"FGHIJK EXYZ0L DW781M CV692N BU543O ATSRQP"¸zU ®¬¸} ·
Mathematica 156 байт
Преобразует исходную строку букв
"ABCDEFTUVWXGS567YHR498ZIQ3210JPONMLK"
в массив.Nest
применяетсяf
к этому массивуn-1
раз, где n - номер ввода.f
работает путемTranspose
-ing массива с последующимReverse
применением к каждой строке.g
преобразует окончательный массив в строку.пример
Если бы вывод мог быть представлен как массив, функция
g
была бы ненужной.источник
MATLAB,
6189 байтЯ посмотрю, смогу ли я получить это немного. Не уверен, хотя.
Это создает массив всех букв от A до Z, за которыми следуют от 0 до 9, затем берет спираль и использует ее для упорядочения данных в правильном порядке. Затем массив поворачивается на величину, указанную пользователем, и затем распечатывается.
Выходные данные последовательно используют начальные пробелы, как позволяет вопрос (на самом деле без дополнительных байтовых затрат, вместо этого могут использоваться конечные пробелы). Вот пример:
Как я видел, пробелы требуются, этот оригинальный код (для 61) недействителен, потому что он не добавляет пробел между каждым символом. Но я добавлю это здесь для справки.
и производит:
источник
JavaScript ES6, 165
172Простое вращение, начиная с жестко закодированной строки
Примечание 1 сохраненный байт thx @ user81655
Тестовый фрагмент:
источник
`<newline>`
один байт короче, чем`\n`
.Pyth - 60 байт
Жестко кодирует строку и использует матричные операции, чтобы получить все параметры.
Тестовый пакет .
источник
+<G6"
вместо"ABCDEF
сохранения 2 байта.Рубин, 173 байта
Ungolfed:
Использование:
источник
Python, 152 байта
источник