El famoso C64 basic one liner
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
imprime un laberinto de barras y barras invertidas.
\\/\\\//\/\////\\/\/
\/\///\\///////\//\/
/\\\//\//\////\\//\\
\////\//\//\/\\\\\\/
/\/\\///\\\\/\\\\/\\
\/\//\\\\\\//\/\////
/\//\\///\/\///\////
\/\\\//\\/\\\//\\/\/
//////\\/\\/\/\/\///
\\/\/\\////\/\/\\/\/
Lea en dicho laberinto hecho de paredes diagonales de stdin e imprima el mismo laberinto con paredes horizontales y verticales que consisten en el carácter de pared "#"
Por ejemplo el pequeño laberinto
/\\
\\/
///
se traduce en
#####
# #
# # # #
# # # #
##### # # #
# #
#########
#####
Para ser precisos, cada segmento de muro aislado tiene la longitud de cinco caracteres, los segmentos de muro adyacentes comparten una esquina. Mover un carácter hacia la derecha / izquierda / arriba / abajo en la matriz de barras y barras invertidas corresponde a una traducción diagonal de 2 caracteres en vertical y 2 caracteres en dirección horizontal en la matriz #.
Respuestas:
Python 3,
226224 bytesMi primer golf de Python, probablemente muy subóptimo. Produce una gran cantidad de espacios en blanco al final, pero no hay líneas nuevas anteriores, y como máximo dos espacios anteriores. La entrada debe darse a mano desde la línea de comandos (tal vez alguien conozca una forma más corta de obtener entradas multilínea en Python ...).
La idea es inicializar una gran variedad de espacios
r
, luego iterar a través de la entrada y reemplazar los espacios#
según sea necesario, y finalmente imprimir toda la matriz. Un truco que utilicé es comparar caracteres enz = '0'
lugar de probar la igualdad con'/'
o'\'
, lo que ahorra un montón de bytes.fuente
Julia, 258 bytes
Una solución funcional ...
En orden de aparición:
f
cubre '/' y '\' por sus patrones de 5 * 5 bits,h
pliega cada quinta línea y la siguiente en una sola línea (recuerde que "los segmentos de pared adyacentes comparten una esquina") yg
hace lo mismo para las columnas. Finalmente,i-j,i+j
gira la imagen.fuente
JavaScript (ES6), 258
Una función con el laberinto como parámetro, que devuelve la salida.
No estoy seguro si es válido, debido a las reglas de entrada / salida (fue divertido de todos modos)
fuente