Dada uma sequência de entrada de comprimento 2
ou mais, consistindo apenas de caracteres alfabéticos [A-Z]
ou [a-z]
(sua escolha, se todas estiverem em maiúsculas ou minúsculas), imprima uma sequência contínua de caracteres formando um padrão de diamante duplo.
A sequência de entrada começa na linha central e se estende para baixo e para a direita na diagonal até o final da sequência de entrada. Então, o padrão continua na diagonal para cima e para a direita até que você esteja tão acima da linha central quanto o comprimento da string de entrada menos 1. Continue abaixo e à direita de volta à linha central e, em seguida, abaixo e esquerda, depois para cima e para a esquerda (indo "para trás" do personagem central) e, finalmente, para baixo e para a esquerda de volta para o personagem inicial.
Isso é um pouco prolixo e é melhor demonstrado por alguns exemplos:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Veja como YOU
começa na linha central e segue para baixo e para a direita, depois para cima e para a direita etc., até voltar ao início. Observe especialmente como a Y
parte superior e esquerda está "atrás" do O
e, portanto, não é mostrada.
Alguns exemplos adicionais:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- A entrada e a saída podem ser fornecidas por qualquer método conveniente .
- É garantido que a entrada tenha pelo menos duas letras (ou seja, você nunca receberá
""
como entrada). - Você pode imprimi-lo em STDOUT ou retorná-lo como resultado de uma função.
- Um programa completo ou uma função são aceitáveis.
- Qualquer quantidade de espaço em branco estranho é aceitável, desde que os caracteres sejam alinhados adequadamente (por exemplo, fique à vontade para preencher como um retângulo).
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Respostas:
Carvão , 17 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Desenhe ao longo de um caminho.
Desenhe nas direções ↘↗↗↘↙↖↖↙ (a
<
e>
são taquigrafia para esses dois pares, mas os outros pares não têm taquigrafia).Cada segmento de caminho tem o mesmo comprimento, incluindo as extremidades, do comprimento da entrada.
Use a entrada como o texto a ser escrito ao longo do caminho.
Imprima as duas primeiras partes do caminho novamente para que o caractere do meio esteja correto.
fonte
05AB1E , 12 bytes
Experimente online!
fonte
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157155154 bytesRetorna uma matriz de caracteres.
Experimente online!
Quão?
O índice baseado em 0 do caractere central que deve ser ignorado na forma de diamante é:
Comentado
fonte
JavaScript (ES6), 136 bytes
Retorna uma matriz bidimensional. Funciona desenhando a string na matriz, computando diretamente as coordenadas de destino, trabalhando de trás para frente, para que a célula central seja substituída automaticamente. Explicação:
String de entrada.
Distância entre "devoluções", também metade do índice da última linha e um a menos que o comprimento.
Índice da última coluna, também metade do comprimento do texto a ser desenhado.
Matriz de espaços.
Contagem regressiva da última célula para a primeira.
Chamada recursiva para processar as células restantes.
Calcule a linha desta célula.
Calcule a coluna desta célula e o caractere que pertence a ela.
Conclua retornando a matriz.
Comece no final do texto.
fonte
J ,
797775 bytesExperimente online!
fonte
C (tinido) ,
201196188 bytesExperimente online!
-13 sugestões @ceilingcat
fonte
Python 2 , 137 bytes
Experimente online!
Um programa completo que recebe uma string como entrada e imprime a versão em diamante.
fonte