A tarefa é muito simples, quando recebida uma entrada, gera uma das seguintes espirais:
Input = 1
dá uma espiral com a letra A
começando no canto superior esquerdo:
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
dá uma espiral com a letra A
começando no canto superior direito:
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
dá uma espiral com a letra A
começando no canto inferior direito:
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
dá uma espiral com a letra A
começando no canto inferior esquerdo:
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
Como você pode ver, a espiral sempre roda no sentido horário e se move de fora para dentro .
As regras são simples:
- Você precisa fornecer um programa completo usando STDIN e STDOUT, ou o equivalente mais próximo, se não for possível.
- Dada uma entrada (
1, 2, 3, 4
), produza a espiral relacionada. - Espaços em branco à direita são permitidos
- Os espaços em branco à esquerda são permitidos quando usados de forma consistente
- Você precisa usar letras maiúsculas para a saída, letras minúsculas não são permitidas.
- Isso é código-golfe , então o programa com a menor quantidade de bytes vence!
Respostas:
CJam,
454342 bytesTeste aqui.
Explicação
fonte
Japt , 53 bytes
58 59 60Economizou 5 bytes graças a @ETHproductions
Isso usa o comando rotate que eu nunca pensei que seria tão útil
Explicação && Ungolfed
Experimente online
fonte
"FGHIJK EXYZ0L DW781M CV692N BU543O ATSRQP"¸zU ®¬¸} ·
Mathematica 156 bytes
Converte a sequência inicial de letras,,
"ABCDEFTUVWXGS567YHR498ZIQ3210JPONMLK"
em uma matriz.Nest
aplicaf
- se a essesn-1
tempos de matriz , em que n é o número de entrada.f
funcionaTranspose
-ing na matriz seguida porReverse
aplicada a cada linha.g
converte a matriz final em uma string.Exemplo
Se a saída pudesse ser fornecida como uma matriz, a função
g
seria desnecessária.fonte
MATLAB,
6189 bytesVou ver se consigo diminuir um pouco. Não tenho certeza.
Isso cria uma matriz de todas as letras de A a Z seguidas de 0 a 9, depois pega uma espiral e a usa para organizar os dados na ordem correta. A matriz é girada pela quantidade especificada pelo usuário e impressa.
A saída usa consistentemente os espaços iniciais, conforme permitido pela pergunta (na verdade, sem custo adicional de bytes, ele poderia criar espaços finais). Aqui está um exemplo:
Como vi que são necessários espaços, esse código original (para 61) não é válido porque não adiciona um espaço entre cada caractere. Mas vou adicioná-lo aqui para referência.
e produz:
fonte
JavaScript ES6, 165
172Rotação simples, iniciando a partir de uma string codificada
Nota: 1 byte salvo thx @ user81655
Snippet de teste:
fonte
`<newline>`
um byte menor que`\n`
.Pitão - 60 bytes
Codifica a string e usa operações de matriz para obter todas as opções.
Conjunto de Teste .
fonte
+<G6"
em vez de"ABCDEF
salva 2 bytes.Ruby, 173 bytes
Ungolfed:
Uso:
fonte
Python, 152 bytes
fonte