Logo estaremos nos formando em um site completo, e só resta uma coisa a fazer antes da formatura: faça uma brincadeira sênior! Acho que devemos fazer uma variação do clássico "encher um corredor com copos de água".
Desafio
Seu programa lerá o texto e o produzirá, coberto de xícaras de água de cabeça para baixo. Um copo de água de cabeça para baixo se parece com o seguinte: /~\
Esses copos só podem ser colocados no espaço em branco da entrada e apenas para que os três caracteres do copo fiquem diretamente acima de um caractere que não seja do espaço em branco (caso contrário, a água derramaria Fora!). Os copos não podem ser empilhados sobre outros copos. Copos devem ser colocados em todas as aberturas disponíveis, e supõe-se que cada entrada seja cercada por um campo infinito de espaço em branco.
Você pode assumir que a entrada está preenchida em um retângulo com espaços.
Precisamos fazer a brincadeira rapidamente e sem que ninguém perceba, o menor número de bytes em cada idioma vence.
Casos de teste
Entrada:
____________________________________________
/ ___ / ___ / ______/ ________/
/ /__/ / /__/ / / / /_______
/ _______/ _______/ / / //__ /
/ / / / / /_____/ /___/ /
/___/ /___/ /_________/___________/
Resultado:
/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\
____________________________________________
/ ___ / ___ / ______/ ________/
/ /__//~\/ /__//~\/ / / /_______
/ _______/ _______/ //~\ / //__ /
//~\/ //~\/ //~\/_____//~\/___//~\/
/___/ /___/ /_________/___________/
Entrada:
L
LOL ROFL:ROFL:LOL:ROFL:ROFL
L\\ ____I____
======== | |[\
\___O==___)
___I_I__/
Resultado:
L /~\/~\/~\/~\/~\/~\/~\
LOL ROFL:ROFL:LOL:ROFL:ROFL
L\\/~\/~\ ____I____
========/~\ | |[\
\___O==___)
___I_I__/
Respostas:
Retina , 41 bytes
A contagem de bytes assume a codificação ISO 8859-1.
Observe que a primeira linha possui três espaços à direita.
Requer que a entrada seja preenchida em um retângulo.
Experimente online!
Explicação
Essa é uma correspondência vertical bastante padrão:
Isso conta os caracteres que precedem a partida capturando muitos caracteres no grupo
1
.Isso verifica se há três caracteres não espaciais na mesma posição na próxima linha. Isso é feito pulando do grupo
1
até ficar vazio(?<-1>.)*
e impedindo o retorno com o grupo atômico(?>...)
.Finalmente, combinamos os espaços reais. Esses são simplesmente substituídos pela string literal
/~\
. Convenientemente, as correspondências são encontradas da esquerda para a direita e não podem se sobrepor.fonte
JavaScript (ES6), 163 bytes
Solução rapidamente cortada em conjunto, pode definitivamente ser jogada para baixo. Adiciona uma linha em branco acima, localiza espaços triplos e substitui por um copo se a próxima linha não contiver espaços. Faz a suposição permitida de que a entrada será retangular. Quaisquer backspaces na entrada precisam ser escapados (como seria de esperar com JS).
fonte
a test
.JavaScript (ES6), 109 bytes
Além de exigir entrada retangular, também pressupõe que a primeira linha termine com uma nova linha, mesmo que seja a única linha de entrada. Usa uma cabeça de impressão gerada dinamicamente para garantir que encontre três espaços "acima" de três não espaços, para não ficar confuso com os buracos.
fonte