Dada uma série de o
s representando pontos, conecte-os na vertical ou na horizontal
Exemplos
Entrada:
o o
o
Resultado:
o---o
|
|
o
Entrada:
o o o
o
Resultado:
o---o----o
|
o
Spec
Se você deseja que a entrada seja preenchida com espaços para formar um retângulo, especifique isso na sua resposta
Só haverá
o
espaços e novas linhas na entrada- Sempre haverá um par de pontos para conectar
- Nenhum dois
o
s será diretamente adjacente - Os pontos devem ser conectados com
|
e-
, para conexões verticais e horizontais, respectivamente - Nenhuma conexão de ponto se sobrepõe
Respostas:
Japonês,
3329 bytesTeste online!
Como funciona
fonte
Ruby,
137133 bytesIsso é absolutamente horrível. Ainda tentando jogar golfe.
Insira como um retângulo acolchoado, por favor.
Nova linha para "legibilidade":
fonte
\b
vez de(?=o)
?Retina , 80 bytes
A entrada precisa ser preenchida.
Experimente online!
Explicação
O primeiro estágio é bem simples, apenas transforma todos os espaços em hífens, que são encontrados entre dois
o
s na mesma linha.O segundo estágio abrange os
|
s. Isso é um pouco mais complicado e requer grupos de equilíbrio . O olhar para trásverifica se há um
o
anterior na mesma coluna. Lembre-se de que os lookbehinds devem ser lidos da direita para a esquerda.(.)*
armazena a posição horizontal da correspondência,\D*¶
verifica pulos para qualquer caractere nas linhas anteriores,o
corresponde literalmente. Em seguida,(?(1)!)^(?<-1>.)*
garante que a posição horizontal dissoo
seja a mesma.The lookahead
Faz exatamente a mesma coisa na direção oposta.
fonte