Escreva um programa ou função que receba um número inteiro positivo N (via stdin / linha de comando / função arg) e imprima ou retorne uma representação de seqüência de caracteres de uma caminhada aleatória bidimensional com N passos de comprimento, desenhada a partir de barras: /
\
(mais espaços e novas linhas de espaçamento).
Uma caminhada aleatória 2D começa na origem de uma rede infinita de números inteiros . Então N vezes repetidamente, uma direção cardinal (para cima, para baixo, esquerda, direita) é escolhida uniformemente aleatoriamente e o caminhante move uma unidade nessa direção. O caminho resultante é a caminhada aleatória.
Aqui está um passeio aleatório para N = 6. Observe que ele volta para si quando atinge (-1, 3).
Para desenhar isso com barras, precisamos essencialmente girar a coisa toda 45 ° no sentido horário. Os eixos e os pontos inicial e final não são desenhados na versão barra.
/
\
\
/\
Uma caminhada mais complexa como esta (N = 20, embora não haja como saber):
Se tornaria este:
/
/\/ /\
\/\/
/\/
\/
Seu programa precisa gerar esse tipo de versões de barra de passeios aleatórios. Você deve escolher aleatoriamente cada nova direção que a caminhada tomar, para que cada execução do programa para um determinado N produza quase definitivamente uma caminhada diferente. (Pseudo-aleatório é bom.)
Nunca deve haver linhas vazias acima ou abaixo das barras mais baixas e mais altas (exceto uma nova linha opcional à direita) e nunca deve haver colunas vazias de espaços antes ou depois das barras mais à esquerda e mais à direita.
Portanto, para N = 1, a saída é sempre /
ou \
, mas nunca algo como:
/
Os espaços à direita são permitidos desde que não passem pela coluna da barra mais à direita.
O envio com o menor número de bytes vence. Aqui está um prático contador de bytes.