Напишите программу или функцию, которая принимает положительное целое число N (через стандартную строку / командную строку / функцию arg) и печатает или возвращает строковое представление двумерного случайного блуждания длиной N шагов, извлеченного из косых черт: /
\
(плюс пробелы и новые строки для пробелов).
Двумерное случайное блуждание начинается в начале бесконечной целочисленной решетки . Затем N раз многократно, случайное направление (вверх, вниз, влево, вправо) выбирается случайным образом равномерно, и ходок перемещается на одну единицу в этом направлении. Полученный путь - случайная прогулка.
Вот случайное блуждание для N = 6. Обратите внимание, что оно движется обратно на себя, когда достигает (-1, 3).
Чтобы нарисовать это косыми чертами, нам нужно повернуть все это на 45 ° по часовой стрелке. Оси, начальная и конечная точки не отображаются в версии с косой чертой.
/
\
\
/\
Более сложная прогулка, как это (N = 20, хотя нет никакого способа сказать):
Стало бы это:
/
/\/ /\
\/\/
/\/
\/
Ваша программа должна генерировать слэшированные версии случайных прогулок. Вы должны случайным образом выбирать каждое новое направление, по которому идет прогулка, поэтому каждый запуск программы для определенного N почти наверняка приведет к другой прогулке. (Псевдослучайность в порядке.)
Никогда не должно быть никаких пустых строк выше или ниже самой нижней и самой верхней косой черты (за исключением одной необязательной завершающей строки), и никогда не должно быть пустых столбцов с пробелами до или после крайней левой и правой косой черты.
Таким образом, для N = 1 вывод всегда /
или \
, но никогда не похож на:
/
Задние пробелы допускаются, если они не проходят мимо столбца самой правой косой черты.
Представление с наименьшим количеством байтов выигрывает. Вот удобный счетчик байтов.