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


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@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

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


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.
Пост Рок Гарф Хантер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.