Escriba un programa o función que tome un entero positivo N (a través de stdin / línea de comando / función arg) e imprima o devuelva una representación de cadena de una caminata aleatoria bidimensional que tiene N pasos de largo, extraída de barras: /
\
(más espacios y nuevas líneas para espaciado).
Una caminata aleatoria en 2D comienza en el origen de una red infinita de enteros . Luego, N veces repetidamente, se elige una dirección cardinal (arriba, abajo, izquierda, derecha) de manera uniforme al azar y el caminante mueve una unidad en esa dirección. La ruta resultante tomada es la caminata aleatoria.
Aquí hay una caminata aleatoria para N = 6. Observe que atraviesa sobre sí misma cuando alcanza (-1, 3).
Para dibujar esto con barras, esencialmente necesitamos rotar todo 45 ° en sentido horario. Los ejes y los puntos de inicio y finalización no se dibujan en la versión de barra diagonal.
/
\
\
/\
Una caminata más compleja como esta (N = 20, aunque no hay forma de saberlo):
Se convertiría en esto:
/
/\/ /\
\/\/
/\/
\/
Su programa necesita generar este tipo de versiones de barra de caminatas aleatorias. Usted debe elegir aleatoriamente cada nueva dirección del paseo dura, por lo que cada ejecución del programa durante un cierto N será casi definitivamente producir un paseo diferente. (La pseudoaleatoriedad está bien).
Nunca debe haber líneas vacías encima o debajo de las barras inclinadas más bajas y más altas (excepto una nueva línea final opcional), y nunca debe haber columnas de espacios vacías antes o después de las barras inclinadas más a la izquierda y a la derecha.
Entonces, para N = 1, la salida es siempre /
o \
, pero nunca algo como:
/
Los espacios finales están permitidos siempre que no pasen la columna de la barra diagonal derecha.
El envío con la menor cantidad de bytes gana. Aquí hay un práctico contador de bytes.