Как DP и CC изменяются в Piet?

Согласно спецификации,

Черные цветовые блоки и края программы ограничивают процесс выполнения программы. Если интерпретатор Piet пытается переместиться в черный блок или от края, он останавливается, и CC переключается. Интерпретатор затем пытается переместиться от его текущего блока снова. Если это перестало работать во второй раз, когда DP перемещен по часовой стрелке один шаг. Эти попытки повторяются с CC и DP, изменяемым между альтернативными попытками. Если после восьми попыток интерпретатор не может оставить свой блок текущего цвета, нет никакого выхода, и программа завершается.

Если я не читаю его неправильно, это противоречит поведению примера последовательности Fibonacci здесь: http://www.dangermouse.net/esoteric/piet/fibbig1.gif (от: http://www.dangermouse.net/esoteric/piet/samples.html)

А именно, почему DP поворачивает налево в (0,3) ((0,0) являющийся (вершина, оставленная)), когда это поражает левый край? На данном этапе и DP и CC ОСТАВЛЯЮТ, таким образом, моим чтением последовательность должна затем быть:

  1. Попытка (и сбой) для отъезда блока путем ухода края в (0,4),
  2. Переключите CC для ИСПРАВЛЕНИЯ,
  3. Попытка (и сбой) для отъезда блока путем ухода края в (0,2).
  4. Поверните DP к,
  5. Попытка (и успешно выполняются) оставить блок в (1,2) путем ввода белого блока в (1,1)

Поведение, обозначенное трассировкой, кажется, что DP повернут полностью, оставив CC в ЛЕВОМ.

Что я неправильно понял?

5
задан rightfold 1 December 2015 в 11:07
поделиться

1 ответ

Ваш анализ кажется правильным, но в примере есть ошибка. Белый блок в точке (1,1) должен быть черным. Вы можете проверить это, взяв образец изображения и выполнив его.

Обратите внимание, что по крайней мере три из интерпретаторов, ссылки на которые даны на странице DMM, имеют ошибки - интерпретатор Марка Майчера помечен как таковой, интерпретатор Сильвена Тинтилье обходит и выводит правильно, но меняет значение in и inn из спецификации (this - версия без ошибок), а PietDev неправильно обходит цветные блоки.

EDIT: другие белые блоки, вероятно, также должны быть черными, например, блок на (6,3).

6
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: