丢掉RNG


17

迷失是一种二维编程语言,其中ip的起始位置和方向完全是随机的。

这使得制作确定性的丢失程序非常困难。但是,今天我们不是在编写确定性程序,而是在编写RNG。

编写一个不输入任何内容并输出一个数字(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")]

在线尝试!

这是因此答案将以字节计分,而字节数越少越好。


失落概述

迷失是一种包装式隐式IO 2D语言,它取材于克莱因的模范。这是丢失命令功能的快速摘要

  • \/|镜子的IP

  • <^>v点IP的方向

  • [反映ip是否向东移动;变成]如果ip在水平移动

  • ]反映ip是否向西移动;变成[如果ip在水平移动

  • ! 跳过下一个操作

  • ? 从堆栈顶部弹出,如果不为零,则跳转

  • : 复制堆栈的顶部

  • $ 交换堆栈的前两个项目

  • ( 从堆栈弹出并推送到示波器

  • ) 从示波器弹出并推入堆栈

  • 0- 9将n推入栈顶

  • "开始和结束字符串文字。在字符串期间,不运行文字命令,而是将其字符值压入堆栈。

  • + 将前两个数字相加

  • * 将前两个数字相乘

  • - 将顶部乘以-1

  • % 关闭安全

  • # 开启安全

  • @ 如果安全关闭(启动),则结束执行


如果您尝试从堆栈中交换两个值,但是只有一个值,或者尝试从空堆栈中弹出,会发生什么?
pppery

@ppperry堆栈用隐式零填充。
发布Rock Garf Hunter,

1
有关语言的信息太少。它包裹吗?什么是“安全”?Bracets的描述具有误导性?如何使用范围?
死者负鼠,

@DeadPossum我试图保持简洁。它确实包装。问题中已经说明了安全性。我不知道您对括号的意思。 []充当门,<>指向方向并()从示波器中存储和调用。范围用于存储值。
发布Rock Garf Hunter,

@WheatWizard那么安全性只是条件@还是其他用例?关于方括号,我不了解此部分:becomes ] if the ip is moving horizontally。向东移动也是水平的,不是吗?
死负鼠,

Answers:


12

81101字节

这可能会进一步打高尔夫球...

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

在线尝试!


1
有趣的方法!我没想到
《摇滚碎石猎人》发布

1
101个字节,用于修复双重打印。刚在安全装置关闭之前添加了一个堆栈弹出窗口,因此,如果您在开始时碰到数字,它可以弹出它,再次将其推入,然后死亡。我不知道这在技术上是否仍然是统一随机的……
Arnold Palmer

1
我确实在同一时间提出了相同的想法……
pppery

1
您的输出不一致。 0被打印的机率是7/101(其方块中的任何一个<^在其下,以及>%符号),1- 被打印的机率是10/101,并且被打印的8机率9是11/101。然后看起来它可能会永远持续下去。
阿诺德·帕尔默

1
它必须包装,否则它将在上升的第一行开始时终止。
ppppery

9

丢失,54个字节

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

在线尝试!

只是从pppery的答案中复制并做一些随机的事情。我对迷失语言一无所知。而且我什至不知道上面的代码会发生什么。这是工作吗?(我不知道)


您的代码产生的输出是ppperry的一半,我想这是因为它是如何-Q工作的?无论如何,输出似乎呈正态分布。对于问题中所链接的语言有完整的规范将是非常不错的。
亚伦

@Aaron我应该已经解释了如何-Q工作。由于语言是随机的,因此通过运行所有可能性来进行验证。 -Q这样做并打印所有结果。程序越短,可能性就越小,输出就越少-Q
发布Rock Garf Hunter,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.