和我一起打高尔夫


30

许多PPCG用户在聊天和Sandbox中都帮助创建了这一挑战,特别是Martin EnderAdmBorkBorkEmignauser202729

我们的社区发现有必要创建一组专门为高尔夫设计的语言,即我们所说的“高尔夫语言”。这样的语言已经从曾经辉煌的现在笨拙的GolfScript演变为光滑的简洁语言,例如JellyHusk。正如我们所看到的,对于一系列任务,这些语言正越来越短。因此,作为围绕高尔夫语言的显而易见的专家,我们应该一起设计一种语言,以击败其他敢于竞争的语言。介绍号角!

喇叭:从缩写BuGoL: ILT lfing 大号 anguage。

这项挑战将如何运作

如果您在介绍中没有得到我所提到的内容,那么这个挑战就是挑战,我们每个人都为一种新型高尔夫语言的口译员提供一些帮助,从而提高了每个答案在PPCG上的竞争能力。

我将发布第一个答案,该答案由语言规范/解释器的基础组成,所有其他答案将继续。新提交的内容将提供以下内容:

  • 语言规范的变更
  • 最新的口译员,准确满足变更中的要求
  • 语言的更新分数(稍后会详细介绍)

您可以通过以下三种方式之一更改规格:

  • 您可以添加一个命令
  • 您可以添加两个新命令
  • 您可以编辑一个现有命令的行为

关于新解释器,您必须使用以Python编写的最新版本。它不必打高尔夫球。每个先前添加的命令必须可以使用最新的解释器以及最新的命令(您添加的命令)进行测试。更新解释器时,您也不得在任何时候使用冒犯性语言,例如注释或字符串文字等。

添加的命令可以执行您希望执行的任何操作。唯一的要求是:

  • 它不会产生令人反感的结果
  • 与另一个命令不同
  • 它不会阻止示例挑战之一的完成

除了这些,它可以根据您的需要特定或通用。也可以是您想要的任何字符。如果不确定添加的内容是否构成“新命令”,请随时在评论中提问。

语言的分数

您可能已经注意到,必须在所有新提交的内容中包括该语言的分数。它的分数是阻止该挑战永远持续的原因,其定义如下:

当前分数是语言完成以下20个任务所需的字节数之和

对于每个任务,标准I / O规则都适用标准漏洞也是如此

20个任务:

  1. “你好,世界!” –输出字符串Hello, World!
  2. 1,2,Fizz,4,Buzz –在单独的行上输出1到100(含)之间的每个整数,其中3的倍数被替换Fizz,5的倍数被替换Buzz,两者的倍数被替换FizzBuzz
  3. 在源代码中没有任何数字的情况下生成数字2014 –在不使用源代码中任何字符的情况下输出数字20140123456789,而无需访问外部变量或随机种子
  4. 混淆后的Hello World -输出字符串Hello, World!,而无需使用任何在至少以下两个组的字符:hlwdeor0127(不区分大小写)
  5. 用您喜欢的编程语言唱生日快乐 –用您选择的语言输出以下内容:

    Happy Birthday to You
    Happy Birthday to You
    Happy Birthday Dear [the name of your favourite programming language]
    Happy Birthday to You
    
  6. 我们对编码高尔夫并不陌生,您知道规则,我也是如此 –输出“ Never Gonna Give You Up”的完整歌词

  7. 输出符号 –给定数字,如果为负数则打印-1,如果为0则打印为0,如果为正数则打印为1。
  8. Collat​​z猜想(OEIS A006577) –从整数开始,如果是偶数,则将其除以2;如果是奇数,则将其乘以3,然后将其乘以1,然后重复该过程,直到达到1。输出应为其迭代次数带您达到1。
  9. 挑战数组#1:交替数组 –给定整数数组,请检查所有偶数索引项是否相等,所有奇数索引项是否相等,并相应地输出真值或假值
  10. 我是微不足道的阵列吗?–给定整数数组,请检查连续元素之间的绝对差是否均小于或等于1,并相应地输出真实值或虚假值
  11. 这个数字是素数吗?–给定正整数,编写一个完整的程序以检查其是否为质数,并相应地输出真值或伪值
  12. 我是回文集。你是?–给定一个字符串,检查它是否是回文,而程序/函数也是回文,并相应地输出两个不同且一致的值
  13. 将标准输入中的数字求和 -从STDIN中获取一系列数字,然后输出其总和。
  14. 查找阶乘 -给定整数n,输出介于1和之间的所有整数的乘积n
  15. 产生无限输出的最短代码 -在没有任何输入的情况下,产生无限输出,从理论上讲,这将永远不会停止输出。
  16. 烤一片Pi-输出以下确切文本:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|
  1. 查找不除N的最小数字 -给定正整数N,输出不除N的最小正整数。
  2. 这是偶数还是奇数?-给定整数N,将其奇偶校验输出为真/假值。
  3. 与代码长度相同的输出 -编写最短的代码,其输出与代码的长度相同,但输出与代码的长度不同。
  4. 给您锦上添花!- 用您的语言写出最短的

为了有效,新提交的内容必须包含针对至少2个问题的高尔夫球提交内容,每个问题至少应包含1个字节。您可以增加其他提交内容的长度,但是每个答案的总分数必须至少降低2。另外,请考虑包含指向更新程序的链接。当使用解释器的早期版本运行时,更新的解决方案不能使用。

如何获得饼干

我列出了5个挑战,这些挑战不是必须尝试的,与您的成绩无关,但仅仅是测试Bugle是否足够能力的其他挑战。随意在您的答案中包含针对任何数量的解决方案:

  1. 创建自解释器
  2. 创建具有有效载荷的奎因
  3. Covfefify一个字符串
  4. 超编程:N + N,N×N,N ^ N合而为一
  5. “不知道”还是“不知道”?

不包括描述,因为并不是每个人都可以参加挑战赛。

如何取胜

一旦达到最低分数(我们相信是16,尽管任何尝试击倒高尔夫的尝试都受到欢迎),很明显,连锁经营已经结束,因为解决方案无法获得更好的分数。一旦达到16,挑战将持续1个月,使任何人都有机会再打高尔夫球。本月过去之后,挑战已经结束。

挑战结束后,我将把解释器迁移到GitHub存储库上,并按照通常的方法发布稳定的语言。您也可以使用上述语言,此时开始在PPCG上发布针对挑战的解决方案,但请尽量不要在首页上充斥答案。而是将它们散布一段时间。

格式化

为了使信息更容易在您的答案中找到,请按以下格式设置:

# [N]. [Score]

[New command + description]

[Interpreter/link to interpreter]

[Link to programs]

[N]您的答案号码在哪里(第一个为1,第二个为2,依此类推)

规则

  • 您必须在发布答案之间等待3个小时
  • 除非连续10天(恰好是240小时)都没有发布答案,否则您不能连续发布两次
  • 您不能删除以前的命令。
  • 您的解释器不必打高尔夫球,此处的字节数完全无关。
  • 如果您的答案是最新的,而有人建议您对程序进行打高尔夫球,则必须编辑打高尔夫球并更新得分。
    • 只要您的分数不低于任何以后的答案,您也可以在答案处于中间位置时执行此操作。
  • 请避免使用此语言回答任何现有的PPCG挑战,至少直到挑战结束为止
  • 解释器是用Python 3编写的,并且应该在整个链中以这种方式继续。禁止更改语言。
  • 同样,为了有效,新提交的文件必须包含针对至少两个问题的高尔夫球提交文件,每个问题至少要占用1个字节。

让我们开始吧!



1
可能还会问:有人喜欢解释下降投票吗?我很重视您想提供的所有反馈。
Caird coinheringaahing

2
@Kaldo我们不太确定。最少要有两个字节,但是如果空程序输出Hello, World!,则为19个字节。但是,如果空程序的行为发生变化(取决于输入),则可以将其减少
caird coinheringaahing

1
@WeijunZhou“请避免使用该语言回答任何现有的PPCG挑战,至少要等到挑战结束为止”
caird coinheringaahing

1
@LyricLy语法构造(例如for循环)是允许的,并且鼓励添加语法构造
Caird coinheringaahing

Answers:


3

3.得分:2938 2583 2532(-51)

新的口译员在这里

主要是为了打高尔夫球,使输出更容易,我添加了复制堆栈/双端队列的功能,并以呈现的文本形式而不是整数形式输出整个模型。

解决方案

1. “你好,世界!” -17个字节(-3)

#"Hello, World!"a

5. 用您喜欢的编程语言唱生日快乐 -95字节(-3)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"a

6. 我们对打高尔夫球并不陌生,您知道规则,我也是如此 -1884字节(-3)

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"a

16. 烘烤一片Pi -149字节(-3)

#"()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|"a

20.打个好高尔夫球!-23字节(-39)

$"R34RdR36Ra"R34RdR36Ra

新增语言功能

  • a

    • 全部:将整个模型打印为文本,例如#"Hello, World!"a打印Hello, World!
  • d

    • 堆栈/双端队列:将堆栈推入其自身上方。

8

2.得分:2938 2583

修改后的解释器在TIO上

字符串文字是该语言中最明显的补充,主要用于应对挑战。

解决方案

1. “你好,世界!” -20个字节(-28)

#"Hello, World!"[o>]

使用输出给定字符串直到到达字符串之后的0 的结构,可以完成任何挑战#"<string>"[o>]

2. 1,2,Fizz,4,Buzz - 419 64字节(-1332)

$1[1+1s:3s%{}"zziF"oooos;0s]:5s%{}"zzuB"oooos;0s]s{:O}]10o:100-]

感谢@ user202729在这方面的出色高尔夫活动。

3. 产生数字2014,且源代码中没有任何数字 -9个字节(-4)

#"ĒĎ"[O>]

在Bugle代码点中使用两个字符20和14。

4. 模糊的Hello World -19字节(-153)

#"Ifmmp!Xpsme"[-o>]

符合规则#1(否HLWDhlwd)和#3(否27)。

5. 用您喜欢的编程语言唱生日快乐 -98字节(-230)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"[o>]

6. 我们对打高尔夫球并不陌生,您知道规则,我也是如此 -1887字节(-5006)

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"[o>]

16. 烘烤一片Pi -149字节(-290)

#"()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|"[o>]

20.打个好高尔夫球!-62字节(-12)

#"[>]<o-o+[<]>[o>]<-o;<[<]>[o>]#"[>]<o-o+[<]>[o>]<-o;<[<]>[o>]

新增语言功能

  • "...": 字符串字面量。
    • 堆栈/双端队列:将每个字符的Bugle代码点推到堆栈/双端队列的顶部/前面。
    • 磁带/网格:从当前单元格开始,将每个字符的Bugle代码点写到右侧的磁带/网格上。不移动光标。
    • \n 就像其他字符一样处理。
    • 目前没有转义字符,因此无法"使用此命令将(34)写入内存。至少到目前为止,这不是一个太大的问题,因为此处列出的所有挑战都未包含"在输出中。

总是欢迎任何进一步的打高尔夫球,特别是对于“永不放弃”和奎因。具体来说,以上是我做过的第一个平凡的奎因,所以我坚信有人可以提出一个较短的奎因。


我希望其他所有人都可以添加各种功能,而不仅仅是为特定挑战添加内置功能。+1
caird coinheringaahing'Apr 14'18

@ user202729可能是我引入了该错误;感谢您修复它和FizzBu​​zz解决方案。
Bubbler

3

1.得分:9638

该基地的解释可以发现这里和意见在这里。它相当长,因此我将其包含在GitHub中,而不是占用大部分帖子。

解决方案

所有这些解决方案都是使用-u命令行标志运行的Unicode程序,但是分数的计数就像使用Bugle的代码页进行编码一样。

1. “你好,世界!” -48字节

$72o101o108o108o111o44o32o87o111o114o108o100o33o

只需按一下,然后输出字符串中每个字符的字符代码。

2. 1,2,Fizz,4,Buzz -1396字节

$49o10o50o10o70o105o122o122o10o52o10o66o117o122o122o10o70o105o122o122o10o55o10o56o10o70o105o122o122o10o66o117o122o122o10o49o49o10o70o105o122o122o10o49o51o10o49o52o10o70o105o122o122o66o117o122o122o10o49o54o10o49o55o10o70o105o122o122o10o49o57o10o66o117o122o122o10o70o105o122o122o10o50o50o10o50o51o10o70o105o122o122o10o66o117o122o122o10o50o54o10o70o105o122o122o10o50o56o10o50o57o10o70o105o122o122o66o117o122o122o10o51o49o10o51o50o10o70o105o122o122o10o51o52o10o66o117o122o122o10o70o105o122o122o10o51o55o10o51o56o10o70o105o122o122o10o66o117o122o122o10o52o49o10o70o105o122o122o10o52o51o10o52o52o10o70o105o122o122o66o117o122o122o10o52o54o10o52o55o10o70o105o122o122o10o52o57o10o66o117o122o122o10o70o105o122o122o10o53o50o10o53o51o10o70o105o122o122o10o66o117o122o122o10o53o54o10o70o105o122o122o10o53o56o10o53o57o10o70o105o122o122o66o117o122o122o10o54o49o10o54o50o10o70o105o122o122o10o54o52o10o66o117o122o122o10o70o105o122o122o10o54o55o10o54o56o10o70o105o122o122o10o66o117o122o122o10o55o49o10o70o105o122o122o10o55o51o10o55o52o10o70o105o122o122o66o117o122o122o10o55o54o10o55o55o10o70o105o122o122o10o55o57o10o66o117o122o122o10o70o105o122o122o10o56o50o10o56o51o10o70o105o122o122o10o66o117o122o122o10o56o54o10o70o105o122o122o10o56o56o10o56o57o10o70o105o122o122o66o117o122o122o10o57o49o10o57o50o10o70o105o122o122o10o57o52o10o66o117o122o122o10o70o105o122o122o10o57o55o10o57o56o10o70o105o122o122o10o66o117o122o122o

与“ Hello,World”相同的技术!例

3. 在您的源代码中生成没有任何数字的数字 2014-13个字节

#++O--O+O+++O

#使用磁带,+增加单元格,O输出为整数并-减少

4. 模糊的Hello World -172字节

#+++++++++[>++++++++<-]>o<++++[>+++++++<-]>+o+++++++oo+++o>++++[>+++++++++++<-]>o------------o[-]++++++++[>+++++++++++<-]>-o<<<o+++o------o--------o[-]+++[>+++++++++++<-]>o

利用其固有的相似性来做脑残。符合规则#1和#3

5. 用您喜欢的编程语言唱生日快乐 -328字节

$72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o68o101o97o114o32o66o117o103o108o101o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o

目前,所有的挑战都具有这种结构。

6. 我们对打高尔夫球并不陌生,您知道规则,我也是如此 -6893字节

$87o101o39o114o101o32o110o111o32o115o116o114o97o110o103o101o114o115o32o116o111o32o108o111o118o101o10o89o111o117o32o107o110o111o119o32o116o104o101o32o114o117o108o101o115o32o97o110o100o32o115o111o32o100o111o32o73o10o65o32o102o117o108o108o32o99o111o109o109o105o116o109o101o110o116o39o115o32o119o104o97o116o32o73o39o109o32o116o104o105o110o107o105o110o103o32o111o102o10o89o111o117o32o119o111o117o108o100o110o39o116o32o103o101o116o32o116o104o105o115o32o102o114o111o109o32o97o110o121o32o111o116o104o101o114o32o103o117o121o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o87o101o39o118o101o32o107o110o111o119o110o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o65o110o100o32o105o102o32o121o111o117o32o97o115o107o32o109o101o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o68o111o110o39o116o32o116o101o108o108o32o109o101o32o121o111o117o39o114o101o32o116o111o111o32o98o108o105o110o100o32o116o111o32o115o101o101o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o32o10o87o101o39o118o101o32o107o110o111o119o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o32o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o

7. 输出符号 -18字节

$?:Zs0=0s-s:1s-++O

在取总和之前,检查输入是否大于零,小于零(更改为yield -1而不是1)并且等于零。

8. Collat​​z猜想(OEIS A006577) -36个字节

#$?:1-[:2s%{3×1+}2s÷]:1s-₀+₁]₀O

这将在堆栈上执行循环,但是切换到磁带以在每次迭代时增加计数。

9. 挑战数组#1:交替数组 -35个字节

#?>?>+>?[[<+<<->>>-]+<[-<<]>[>]?]<O

这是Mitch Schwartz对现有挑战的回答的略微修改,请赞成!

10. 我的数组微不足道吗?-46字节

$1 0-?…1[s:sr-:Z1s-2×1+×1s-Z1-L2s-×]1+Z1-O

一切归功于Emigna使

11. 这个数字是素数吗?-31个字节

$?:1s-:[:1s-:];L1s[×L2s-]:×%O

使用威尔逊定理进行计算 (n-1)!² % n

12. 我是回文症。你是?-13个字节

$?:R=:O:=R:?$

该程序,直至上半年O,设置堆栈起来作为[x, x]其中x或者是TrueFalseO弹出并输出最高值。该程序的其余部分仅确保没有错误产生。幸运的是,当?遇到文件末尾时,它只是推送''(空字符串)。

13. 将标准数字加起来为 -19个字节

$?:[?:];L0s[+L1s-]O

这可以分为两部分:?:[?:];L0s[+L1s-]。第一部分将所有输入收集到堆栈。第二部分将顶部的两个元素之和推入,而长度大于1。

14. 查找阶乘 -25个字节

$?:[:1s-:];L1s-Z[×L1s-]O

这具有与求和程序类似的结构,但是不是将多个输入推入,而是[:1s-:];将范围从推入1 .. n到堆栈,然后[×L1s-]乘积。

15. 产生无限输出的最短代码 -5个字节

#+[O]

使用while循环,将其1连续放在指针下方。1永远输出。

16. 烤一片Pi -439字节

$40o41o40o41o40o41o40o41o40o41o40o41o10o124o92o51o46o49o52o49o53o57o50o54o124o10o124o58o92o53o51o53o56o57o55o57o51o124o10o92o58o58o92o50o51o56o52o54o50o54o124o10o32o92o58o58o92o52o51o51o56o51o50o124o10o32o32o92o58o58o92o55o57o53o48o50o124o10o32o32o32o92o58o58o92o56o56o52o49o124o10o32o32o32o32o92o58o58o92o57o55o49o124o10o32o32o32o32o32o92o58o58o92o54o57o124o10o32o32o32o32o32o32o92o58o58o92o51o124o10o32o32o32o32o32o32o32o92o95o95o92o124o

17. 找到不除N的最小数

$?:1:[:rs%0=s1+srr:Rs]1s-O

这使用试除法,在取模结果不等于时终止0

18. 这是偶数还是奇数?-5个字节

$2?%O

2的简单模

19. 输出与代码相同的长度 -16个字节

$16:[32+:o33s-:]

反向输出前16个可打印ASCII字符: 0/.-,+*)('&%$#"!

20.打个好高尔夫球!

$1[93, 76, 111, 91, 49, 59, 104, 48, 79, 49, 111, 54, 51, 0]
36o1O0h;1[oL]

幸得user202729使这一


语言规格

呼唤

bugle.py当前带有一系列标志,然后是要执行的文件名/代码。到目前为止,它具有4个命令行标志:

  • -f/ --file指定要从文件中读取代码
  • -c/ --cmd/ --cmdline指定对码通过命令行供给。

    -c-f不能在同一个调用中使用

  • -u/ --unicode告诉解释器以Unicode编码读取代码。默认是在下面使用Bugle的编码

  • -l/ --length执行后将文件长度(以字节为单位)输出到STDERR

以下通话用于测试以上提交的内容

$ python bugle.py -f -u [file]

代码页

Bugle在其代码页中使用512个字符。0xFF字符不用于命令,因为它用于指示下一个十六进制值将索引到代码页的后半部分。使用的字符是:

ÀÁÂÄÆÃÅĀĄ\t\nĆČÇĎÐ
ÈÉÊËĒĖĚĘÌÍÎÏĪĮĹĽ
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~¶
ŁŃŇÑŊÒÓÔÖŒÕØŌŔŘŚ
ŠŤŦÙÚÛÜŮŪŴÝŶŸŹŽŻ
àáâäæãåāąćčçďðèé
êëēėěęìíîïīįĺľłń
ňñŋòóôöœøōõŕřßśš
ťŧùúûüůūŵýŷÿźžż◊
ΑΆΒΓΔΕΈΖΗΉΘΙΊΚΛΜ
ΝΞΟΌΠΡΣΤΥΎΦΧΨΩΏ
αάβγδεέζηήθιίΐκλ
μνξοόπσςτυύΰφχψω
ώǴḰḾṔẂǵḱḿṕẃḂḞĠḢṀ
ȮṖṠṪẊḃḟġḣṁȯṗṡṫẋ§
ĂĞĬŎŬĴăğĭŏŭĵªº‹›
ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒ
ɠɦƙɱɲƥʠɼʂƭʋȥ©®ıȷ
ЉЊЕРТЗУИОПШАСДФГ
ХЈКЛЧЋЅЏЦВБНМЂЖљ
њертзуиопшасдфгх
јклчћѕџцвбнмђжÞþ
†∂∆≈≠√∈∉∌∋∩∪¬∧∨⊕
¤₽¥£¢€₩‰¿¡⁇⁈‼⁉‽⸘
…°•”“„’‘≤«·»≥ᴇ∞¦
×⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾
÷₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎

或以表格格式查看。请注意,\t\n分别代表制表符和换行符。另请注意,第16行以不可打印的字符结尾:,并且可能不会在所有浏览器上显示。

记忆

解释器当前内置有5种内存模型。每个内存模型都需要一个字符来告诉解释器开始使用该模型:

  • 堆栈($):标准堆栈,支持推送,弹出等值。
  • 无限磁带(#):脑筋的磁带,最初只是0 s。
  • 无限网格(G):在两个方向都无限的二维网格,仅包含0s
  • 双端队列D):由模块实现的双端队列collections
  • 寄存器(S):单个值,可用于存储一个值。

网格在其指针中还保存有一个可以写入或写入单元格的值。

此外,可以使用不同的invoke命令来修改磁带和网格的大小以及包装行为。这些不同的命令将从当前内存模型中获取给定数量的值作为自定义参数:

  • 胶带(À):采用两个值-尺寸(int)和包装纸(bool
  • 磁带(Á):取一个值-大小(int)。胶带末端包裹
  • 磁带(Â):取一个值-大小(int)。末尾不换行
  • 网格(Ǵ):取4个值-x大小(int),y大小(int),x环绕(bool)和y环绕(bool

可以在程序中通过使用来更改正在使用的内存类型₀₁₂₃₄₅₆₇₈₉,该可以访问第0个索引已n使用的内存类型(第一个,第二个,等等),但是当前,值不能在不同的内存类型之间交换。

分枝

到目前为止,Bugle有两个分支命令,都以一个]字符结尾:

  • 虽然([):混蛋式的while循环。如果正在使用,它们将从堆栈/双端队列中弹出一个值,或者访问磁带/网格中指针下方的单元格。

    示例:#?[-O]从输入向下计数到0

  • 如果/否则({})。一次执行while循环。如果弹出的值为false,则跳过if子句,转到else子句,以分隔}。它们的行为与关于内存访问的while循环相同。

    示例:{0}1]是逻辑非门

内置功能

数字运算被解释为整数,并按原样被推入/写入当前的内存模型。

显然,我为Bugle配备了一些基本的内置功能,以使我尽可能少地使用它们,以允许其他人随着链的进展而增加更多功能。基本命令如下:

  • +

    • 堆栈/双端队列:将前两个值相加
    • 磁带/网格:增加当前单元格
  • -

    • 叠加/双端队列:减去前两个值
    • 磁带/网格:减少当前单元格
  • %

    • 堆叠/双端队列:取模前两个值
  • :

    • 堆叠/双端队列:复制最高价值
  • ;

    • 堆叠/双端队列:弹出最高值
    • 磁带/网格:将当前单元格清零
  • <

    • 磁带/网格:向左移动一个单元格
  • =

    • 堆栈:前两个值相等吗?
    • 网格:向下移动一个单元格
  • >

    • 胶带/网格:向右移动一个单元格
  • ?

    • 堆栈/双端队列:评估一行输入
    • 胶带/网格:输入字符
  • L

    • 堆栈/双端队列:按堆栈/双端队列的长度
  • O

    • 全部:输出当前值
  • R

    • 堆栈:如果可能,反转顶部元素,否则反转堆栈
  • Z

    • Stack:最上面的元素是正数?
  • ^

    • 网格:向上移动一个单元格
  • h

    • 全部:打印完整的内存模型
  • o

    • 全部:将当前值打印为字符
  • r

    • 堆栈:旋转前3个值
    • 双端队列:旋转双端队列n次数,n最高值在哪里
  • s

    • 堆叠/双端队列:交换前两个值
    • 堆叠:最高价值
  • ×

    • 堆栈:将前两个值相乘
    • 网格:将指针值写入当前单元格
  • ÷

    • 堆栈:将前两个值相除
    • 网格:将当前单元格写入指针值
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.