O desafio
Dada uma lista de palavras, ["Programming", "Puzzles", "Code", "Golf"]
imprima as palavras estilo cruzado:
Programar você z z G l Código ls f
O Algoritmo
- Você precisa processar a lista na ordem especificada.
- As palavras são impressas em orientações alternadas, iniciando na horizontal .
As duas palavras se cruzam na primeira letra da primeira palavra, que também está presente na segunda palavra. Se esta carta ocorrer várias vezes na segunda palavra, pegue a primeira.
Exemplo :
["no", "on"]
torna-se:o n o
e não
n o n
Notas Adicionais
- Palavras adjacentes na lista terão pelo menos uma letra comum.
["Hi", "there"]
não é uma entrada válida. - Palavras nunca colidem. Sempre haverá espaço suficiente para imprimir a palavra no primeiro cruzamento possível.
["Hello", "there", "end", "hello"]
não é uma entrada válida - A correspondência diferencia maiúsculas de minúsculas.
- As palavras podem se expandir para a esquerda e para o topo.
- As letras das palavras horizontais devem ser separadas por um espaço.
- A lista de entrada conterá pelo menos duas palavras.
- Todas as palavras corresponderão ao regex:
[A-Za-z]+
- Você pode imprimir quantos espaços em branco à direita ou novas linhas quiser, contanto que as palavras sejam encadeadas corretamente.
- Por outro lado, você não pode adicionar espaços em branco à esquerda adicionais. A palavra que mais flutua para a esquerda tem zero espaços à esquerda, as outras linhas têm tantos espaços à esquerda que tudo se alinha corretamente.
- Seu programa precisa ser capaz de lidar com uma quantidade arbitrária de palavras
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempate é uma submissão anterior.
Casos de teste
Lista de entrada na primeira linha, a saída começa na segunda linha.
["Pilha", "Troca"] E x c h Aderência S n g e
["Este", "site", "graduado", "finalmente"] f é n graduado le eu y
Feliz codificação!
site
egraduated
ét
Respostas:
JavaScript (ES6) 253
Como uma função anônima com um parâmetro de matriz
fonte
ANSI C, 385
390caracteresChame assim:
./crossword This site graduated finally
Versão não destruída:
Obrigado tucuxi pelas dicas!
fonte
a++)N+=strlen(v[a])
=>)N+=strlen(v[a++])
char F[W][H],*p
=>char*p,F[W][H]
for
, substituak++)putchar(F[k][l]
por)putchar[k++][l]