Você deve escrever um programa ou função que receba um bloco de caracteres representados como uma string e produza ou retorne uma string semelhante na qual as letras adjacentes no alfabeto estejam conectadas.
Um exemplo visual (na forma de input => output
):
b d b d
|\ /|
| \ / |
=> | X |
| / \ |
e |/ \e
c a c a
Detalhes
- A entrada será uma sequência contendo espaços, novas linhas e exatamente uma de cada uma das primeiras
N
letras minúsculas.1 <= N <= 26
- As linhas da entrada serão preenchidas com espaços, criando um bloco retangular completo.
- Cada par de letras adjacentes ao alfabeto estará na mesma linha, coluna ou linha diagonal e deve ser conectado com uma linha ASCII reta usando
\ / | or -
. (A linha pode ter um comprimento de 0.) Os seguintes tipos de sobreposições de duas linhas devem ser tratados:
/ and \ become X | and - become + / and / become / \ and \ become \ | and | become | - and - become - [letter] and [anything] become [letter]
Nenhum outro tipo de sobreposição de duas linhas ocorrerá.
- Se mais de duas linhas se sobrepuserem, qualquer par delas será garantido como uma das sobreposições válidas. (por exemplo,
[letter] / |
trigêmeo nunca ocorrerá) - Além de transformar espaços em
\ / | - X and +
entrada e saída, deve ser idêntico. - A nova linha à direita é opcional, mas deve ser a mesma para entrada e saída.
- Isso é código-golfe, portanto a entrada mais curta vence.
Exemplos
Entrada:
b d
h gi
e f
c a
Saída:
b d
|\ /|
| \ / |
| X h+--gi
| / \ | |
|/ \e--f
c a
Entrada:
dk j
b l
c fg
a m
i h
e
Saída:
dk----j
/|| /
b / |l /
|X | \/
c \ fg/\
\|/\ \
a \ m
/| \
i-+----h
e
Entrada:
eti sqjh k p u cfm vb owgzyx rnd la
Saída:
eti--sqjh-k--p--u--cfm-vb-owgzyx-rnd-la
Entrada:
a
Saída:
a
/
e-
são sobreposições inválidasX
e+
(/ \ - and |
) não podem ocorrer na mesma posição.Respostas:
Perl, 219
Algumas melhorias ainda podem ser possíveis.
Experimente- me .
fonte
JavaScript (ES6) 246
266 280 285 307Bastante volumoso ...
Uma função com string param e retornando a string modificada. Uma nova linha à direita é opcional, a menos que a entrada seja apenas 1 linha (preciso de uma nova linha para encontrar a linha)
Só para fazer alguém feliz
Mais legível
Teste no console Firefox / FireBug
Saída
fonte
341
caracteres.