Uma bala de canhão é disparada, de modo que, no primeiro olho do seu vôo, ele sobe pelas N
copas das árvores, durante o segundo olho pelas N-1
copas das árvores, etc. até atingir o ponto mais alto de sua trajetória. Então começa a cair 1, 2, etc. copas das árvores por olho, até atingir o chão. Ao mesmo tempo, a bala de canhão está se movendo horizontalmente com uma velocidade constante de 1 copa das árvores / eyeblink.
Sua tarefa é desenhar a trajetória com letras consecutivas do alfabeto inglês. Se você ficar sem cartas, comece novamente a partir de 'A'
. Escreva uma função ou um programa. A entrada é um número inteiro N
( 1≤N≤15
). A saída pode ser uma matriz de caracteres de qualquer forma razoável, por exemplo, uma cadeia separada por nova linha ou uma lista de cadeias. As letras podem ser todas minúsculas ou todas maiúsculas. Espaços extras à esquerda e à direita são permitidos. As brechas padrão são proibidas. Código mais curto é melhor.
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
eP
, o tique vai 1 para a direita, mas 0 para cima ou para baixo.Respostas:
05AB1E ,
33322928 bytesExperimente online!
Explicação
fonte
Nú»
ou algo assim poderia ser usado para imprimir à medida que você vai em vez de])~.c
Stax ,
2924 bytesExecute e depure on-line
A representação ascii correspondente do mesmo programa é essa.
fonte
R,
169163161153150110109 bytesEssa abordagem preenche uma matriz e depois imprime a matriz.
Golfe
Obrigado @ Giuseppe por 153.
Obrigado @JDL por 150.
Veja o comentário de @ Giuseppe para 112 e algumas edições para 110 agora 109. Rasgue o código original.
Se estiver plotando uma saída válida, 73 bytes
fonte
Map
vez demapply
?lapply
vez demapply
. Obrigado por 150row,column
pares diretamente, em[
vez de ter que passar pormapply
(ouMap
), então encontrei uma maneira de fazer isso. Lembrei-me também de quewrite
existe e pode substituircat
por 112 bytes !Python 2 ,
140135133 bytesExperimente online!
fonte
MATL , 29 bytes
Experimente online!
Como funciona
fonte
Java (OpenJDK 8) , 121 bytes
Experimente online!
Explicação
fonte
C, 184 bytes
Experimente online!
Desenrolado:
fonte
main
para compilá-lo. No TIO,main
está na seção rodapé.Clojure,
417319 bytesEm algum momento, me envolvi em
reverse
ligações e desisti da ideia de torná-la a mais curta possível. Eu só queria ter uma solução funcional. Aqui está...Mais ou menos
Atualizar
Motivado pelo comentário de Olivier, consegui cortar várias
reverse
chamadas e aplicar alguns truques gerais de golfe para cortar caracteres. Também criei aliases parareverse
,map-indexed
,concat
,repeat
estr
porque eu usei-los várias vezes cada.Ungolfed
Cria a função
c
que aceita o valor n e retorna uma lista de linhas.fonte
Carvão ,
3331 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 2 bytes graças a @ ASCII-only. Explicação:
Inicialize a letra atual como um índice no alfabeto maiúsculo para 0.
Faça um loop da negação da entrada para a entrada inclusive.
Normalmente, cada coluna está à direita da anterior. No entanto, não há coluna para zero. Em vez disso, é necessária uma correção para garantir que os lados esquerdo e direito estejam alinhados.
Loop para cada letra na coluna.
Imprima a letra atual.
Incremente o índice de letras.
Mover para cima ou para baixo, dependendo do lado da trajetória em que estamos.
fonte
Perl 5 , -n
112929088 bytesPela primeira vez o terrivelmente longo
printf
parece ganhar.Experimente online!
fonte
(A..Z)x9
trabalhar, mas estava muito abaixo do limite! Teve isso por apenas 91. :)Python3 + numpy,
124115Isso cria uma matriz de tamanho apropriado, localiza os índices da trajetória e atribui o caractere apropriado a eles.
A parte mais complexa é gerar os caracteres AZ, que dependem de um elenco muito hackish de números para um tipo de string.O objeto retornado é uma matriz unicode.Editar : salvou 9 bytes substituindo o código numpy que gerou os caracteres AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
) commap
, conforme sugerido aqui .fonte
Python 3 ,
139136 bytesExperimente online!
Gera cada camada recursivamente, considerando o tamanho e o deslocamento.
-3 bytes graças a Jo King
fonte
~
operador!n and ... or''
an*' 'and ...
para outro byteJ ,
7875 bytesExperimente online!
-3 graças a ngn
fonte
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 bytes
Experimente online!
Retorna a lista de listas de caracteres. Verificação primitiva aqui
fonte
Geléia , 35 bytes
Experimente online!
fonte
Yabasic , 125 bytes
Uma solução básica que usa o modo gráfico para imprimir os caracteres na coluna e linha corretas da tela.
Como esta solução usa o modo gráfico, não pode ser executada no TIO.
Saída
Abaixo está a saída para entrada
7
fonte
Ruby ,
106103 bytesExperimente online!
fonte
QBasic 1.1 , 124 bytes
Toma entrada e dispara um canhão. Devido a limitações de tamanho da tela,n devemos ser ≤ 6 .
fonte
Python 3 , 190 bytes
Experimente online!
Eu tentei o meu melhor. Deixe-me saber se são possíveis otimizações.
fonte
k4,
7671 bytesalgumas reorganizações + atribuições para economizar 5 bytes
esforço de meia hora com algum esforço para eliminar alguns bytes, mas provavelmente há muito mais que pode ser feito aqui. voltará a ele. desafio divertido!
fonte