O famoso forro básico básico C64
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
imprime um labirinto de barras e barras invertidas.
\\/\\\//\/\////\\/\/
\/\///\\///////\//\/
/\\\//\//\////\\//\\
\////\//\//\/\\\\\\/
/\/\\///\\\\/\\\\/\\
\/\//\\\\\\//\/\////
/\//\\///\/\///\////
\/\\\//\\/\\\//\\/\/
//////\\/\\/\/\/\///
\\/\/\\////\/\/\\/\/
Leia nesse labirinto feito de paredes diagonais de stdin e imprima o mesmo labirinto com paredes horizontais e verticais que consistem no caractere "#" da parede
Por exemplo, o pequeno labirinto
/\\
\\/
///
traduz para
#####
# #
# # # #
# # # #
##### # # #
# #
#########
#####
Para ser mais preciso, cada segmento de parede isolado tem o comprimento de cinco caracteres, segmentos de parede adjacentes compartilham um canto. Mover um caractere para a direita / esquerda / cima / baixo na matriz de barras e barras invertidas corresponde a uma tradução diagonal de 2 caracteres na vertical e 2 caracteres na direção horizontal na matriz #.
Respostas:
Python 3,
226224 bytesMeu primeiro golfe em Python, provavelmente muito abaixo do ideal. Ele produz um monte de espaços em branco à direita, mas não há novas linhas anteriores e, no máximo, dois espaços anteriores. A entrada precisa ser fornecida manualmente a partir da linha de comando (talvez alguém conheça uma maneira mais curta de obter entrada multilinha no Python ...).
A idéia é inicializar uma enorme variedade de espaços
r
, percorrer a entrada e substituir os espaços por#
conforme necessário e, finalmente, imprimir a matriz inteira. Um truque que usei é comparar caracteres emz = '0'
vez de testar a igualdade para'/'
ou'\'
, o que economiza um monte de bytes.fonte
Julia, 258 bytes
Uma solução funcional ...
Em ordem de aparência:
f
cobre '/' e '\' pelos seus padrões de 5 * 5 bits,h
dobra a cada quinto e linha seguinte em uma única linha (lembre-se "segmentos de parede adjacentes compartilham um canto") eg
faz o mesmo para as colunas. Por fim,i-j,i+j
gira a imagem.fonte
JavaScript (ES6), 258
Uma função com o labirinto como parâmetro, retornando a saída.
Não tenho certeza se é válido, devido às regras de entrada / saída (foi divertido de qualquer maneira)
fonte