Сделайте потерянный ГСЧ

17

Lost - это двумерный язык программирования, где начальная позиция и направление ip полностью случайны.

Это делает очень трудным создание детерминированных потерянных программ. Однако сегодня мы не пишем детерминированную программу, мы пишем ГСЧ.

Напишите программу Lost, которая не требует ввода и выводит одну цифру (0,1,2,3,4,5,6,7,8 или 9), причем все цифры имеют одинаковую вероятность вывода. Поскольку начальное местоположение и направление Lost являются единственным источником случайности, единственный способ сделать это состоит в том, чтобы каждое местоположение в вашем источнике выводило различное число от 0 до 9 с одинаковым числом, выводящим каждую цифру.

Вы можете вычислить вероятность каждой цифры, используя -Qфлаг и вставляя его в этот скрипт Python.

import sys
a=sys.stdin.read().split()[:-1]
for x in range(10):print x,':',a.count(`x`)
print[x for x in a if x not in list("1234567890")]

Попробуйте онлайн!

Это поэтому ответы будут оцениваться в байтах, причем меньше байтов будет лучше.


Обзор Lost

Lost - это скрытый неявный IO 2D-язык, который берет многое из формы Кляйна. Вот краткий список того, что делают потерянные команды

  • \, /, |Зеркала IP -

  • <, ^, >, vПереводит внутрибрюшинно в направлении

  • [Отражает IP, если он движется на восток; становится ]если ip движется горизонтально

  • ]Отражает IP, если он движется на запад; становится [если ip движется горизонтально

  • ! Пропускает следующую операцию

  • ? Выскакивает с вершины стека и прыгает если не ноль

  • : Дублирует вершину стека

  • $ Меняет местами два верхних стека

  • ( Выскакивает из стека и толкает в прицел

  • ) Выскакивает из области и толкает в стек

  • 0- 9толкает n к вершине стека

  • "Начинает и заканчивает строковый литерал. Во время строки буквальные команды не запускаются и вместо них их символьные значения помещаются в стек.

  • + Добавляет два верхних числа

  • * Умножает два верхних числа

  • - Умножает вершину на -1

  • % Выключает безопасность

  • # Включает безопасность

  • @ Завершает выполнение, если безопасность выключена (запускается)

Пост Рок Гарф Хантер
источник
Что произойдет, если вы попытаетесь обменять два значения из стека, но есть только одно значение, или попытаться извлечь из пустого стека?
pppery
@ppperry Стек дополняется неявными нулями.
Пост Рок Гарф Хантер
1
Слишком мало информации о языке. Это обернуть? Что означает «безопасность»? Описание браслетов вводит в заблуждение? Как используется сфера?
Мертвый опоссум
@DeadPossum Я старался быть кратким. Это обернуть. Безопасность уже объяснена в вопросе. Я не знаю, что вы имеете в виду в скобках. []действовать как двери, <>указывать в направлениях и ()хранить и отзывать из области видимости. Область используется для хранения значений.
Пост Рок Гарф Хантер
@WheatWizard Итак, безопасность - это просто условие @или есть другие варианты использования? Насчет скобок, я не понимаю эту часть becomes ] if the ip is moving horizontally. Двигаться на восток тоже горизонтально, не так ли?
Мертвый Опоссум

Ответы:

12

81 101 байт

Это может быть в гольфе дальше ...

>%(0@>%(1@>%(2@>%(3@>%(4@>%(5@>%(6@>%(7@>%(8@>%(9@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

Попробуйте онлайн!

pppery
источник
1
Интересный подход! Я не думал об этом
Post Rock
1
101 байт , исправляющий двойную печать. Просто добавили стэк до того, как безопасность отключится, поэтому, если вы нажмете на число в начале, оно может выскочить, нажать его снова, а затем умереть. Я не знаю, технически ли это все еще случайная форма, хотя ...
Арнольд Палмер
1
Я буквально придумал ту же идею в то же время ...
pppery
1
Ваш вывод не одинаков. 0имеет 7/101 шанс быть распечатаны (любой из <или ^под его блока, плюс >и %символ), 1- 8есть 10/101 шанс, и 9есть 11/101 шанс. Тогда, похоже, может быть шанс, что это будет продолжаться вечно.
Арнольд Палмер
1
Он должен обернуться, иначе это закончится, когда он начнет подниматься вверх по верхней строке.
pppery
9

Потерян , 54 байта

>%(0@>%(1@
@>%(2@>%(3
5@>%(4@>%(
(7@>%(6@>%
%(9@>%(8@>

Попробуйте онлайн!

Просто скопируйте ответ pppery и сделайте что-нибудь случайное. Я ничего не знаю о потерянном языке. И я даже не знаю, что происходит для вышеуказанных кодов. Это работа? (Я не знаю)

ТТГ
источник
Ваш код производит вдвое меньше, чем ppperry, я думаю, это из-за того, как -Qработает? В любом случае вывод выглядит нормально распределенным. Было бы неплохо иметь полную спецификацию языка, содержащегося в вопросе.
Аарон
@ Аарон, я должен был объяснить, как -Qработает. Поскольку язык случайный, проверка выполняется путем запуска всех возможностей. -Qделает это и печатает все результаты. Чем короче программа, тем меньше возможностей и меньше результатов -Q.
Пост Рок Гарф Хантер