Общеизвестно, что человек, находящийся на сетке под воздействием алкоголя, имеет равные шансы на движение в любых доступных направлениях. Тем не менее, это утверждение здравого смысла не распространяется на очень маленьких пьяниц, чье поведение очень похоже на то, как если бы они выбирали все доступные пути одновременно, и возможные пути, которые они выбирают, могут мешать друг другу. Ваша задача - отобразить возможные позиции такого квантового пьяницы после n
шагов.
Спецификация
Рассматриваемый пьяница занимает квадратную сетку и может рассматриваться как клеточный автомат с 3 состояниями, использующий окрестность фон Неймана (в форме плюса), которая следует этим простым правилам:
Empty
идет к тому,Awake
если он находится рядом с ровно однимAwake
, а в противном случае идет кEmpty
Awake
идет кSleeping
Sleeping
идет кSleeping
Начальное состояние доски - это одно Awake
окружение, окруженное бесконечным полем Empty
s.
Вызов
Учитывая неотрицательное целое число n
, создайте представление ASCII пьяницы после n
шагов. Каждое состояние должно быть представлено другим символом, и в решениях должно быть указано, какой символ означает какое состояние. Если вы используете пробелы для Empty
, вам не нужно включать их в конце строки.
Это код-гольф , поэтому выигрывает самый короткий ответ. Применяются стандартные лазейки , разрешены пробелы в начале и в конце, разрешен вывод строкового массива / двумерного массива и т. Д.
Примеры
Эти примеры используют для
Empty
, @
для Awake
и #
для Sleeping
.
n=0
@
n = 1
@
@#@
@
n = 2
@
#
@###@
#
@
n = 3
@
@#@
@ # @
@#####@
@ # @
@#@
@
n=6
@
#
@###@
@#@
@ ### @
#@# # #@#
@###########@
#@# # #@#
@ ### @
@#@
@###@
#
@
n=10
@
#
@###@
@#@
###
# # #
#######
# ### #
@ ## ### ## @
#@# ### # ### #@#
@###################@
#@# ### # ### #@#
@ ## ### ## @
# ### #
#######
# # #
###
@#@
@###@
#
@
Интересная заметка
Посмотрев последовательность числа занятых клеток в OEIS, я обнаружил, что квантовый пьяница изоморфен гораздо лучше изученной последовательности зубочисток . Если вы сможете использовать эти знания в лучшем гольфе, я буду приятно удивлен.
n=10
правильно? Я попробовал несколько подходов, и все они получают один и тот же (неправильный) ответ, поэтому я просто хочу убедиться. Это выглядит немного странно, но я не знаю.