Questions tagged «brainfuck»

这个挑战与BF语言有关。请注意,通常不建议要求答案使用特定语言的挑战。

30
解释脑力***
用您最喜欢的语言编写最短的程序,以解释一个脑力激荡的程序。该程序是从文件中读取的。输入和输出是标准输入和标准输出。 信元大小:8位无符号。溢出是不确定的。 数组大小:30000字节(未圈出) 错误的命令不是输入的一部分 注释以#开头并扩展到行尾注释不是所有内容+-.,[]<> 没有EOF符号 在这里可以找到一个很好的测试。它读取一个数字,然后打印质数直到该数字。为防止链接腐烂,下面是代码的副本: compute prime numbers to use type the max number then push Alt 1 0 =================================================================== ======================== OUTPUT STRING ============================ =================================================================== >++++++++[<++++++++>-]<++++++++++++++++.[-] >++++++++++[<++++++++++>-]<++++++++++++++.[-] >++++++++++[<++++++++++>-]<+++++.[-] >++++++++++[<++++++++++>-]<+++++++++.[-] >++++++++++[<++++++++++>-]<+.[-] >++++++++++[<++++++++++>-]<+++++++++++++++.[-] >+++++[<+++++>-]<+++++++.[-] >++++++++++[<++++++++++>-]<+++++++++++++++++.[-] >++++++++++[<++++++++++>-]<++++++++++++.[-] >+++++[<+++++>-]<+++++++.[-] >++++++++++[<++++++++++>-]<++++++++++++++++.[-] >++++++++++[<++++++++++>-]<+++++++++++.[-] >+++++++[<+++++++>-]<+++++++++.[-] >+++++[<+++++>-]<+++++++.[-] =================================================================== ======================== INPUT NUMBER ============================ =================================================================== + cont=1 [ ...

30
BrainF *** edBotsForBattling-Brainf ***锦标赛
战场上的所有机器人都突然被搞砸了,没人能解释原因。但是,只要他们仍然能够战斗,谁就会在乎-尽管Brainfuck是他们现在唯一能理解的语言。 自上次提交以来已经有一段时间了,所以我终于宣布BrainFuckedBotsForBattling的赢家:祝贺LymiaAluysia在NyurokiMagicalFantasy上获胜! 计分板 | Owner | Bot Score | |--------------------|-------------------------------| | LymiaAluysia | NyurokiMagicalFantasy - 600 | | Sylwester | LethalLokeV2.1 - 585 | | weston | MickeyV4 - 584 | | Sp3000 | YandereBot - 538 | | Comintern | CounterPunch - 512 | | Sylwester | BurlyBalderV3 - ...

30
从较小的“ H”创建一个“ H”
挑战 创建一个函数或程序,当给定整数时size,该函数或程序将执行以下操作: 如果size等于1,则输出 H H HHH H H 如果size大于1,则输出 X X XXX X X X程序/功能的输出在哪里size - 1 (只要您愿意,0只要您在答案中指定,就可以使基本情况与相对应) 可以使用以下任何一种输出格式,以您更方便的方式: 所需结构的字符串,其中任意两个不同的字符分别对应于H和space 具有所需结构的二维数组,其中任意两个不同的值分别对应于H和space 字符串的数组/列表,每个字符串中有一行输出,并且与H和对应的任意两个不同的值space 只要每行上有恒定数量的前导空格,就可以使用前导空格。两个不同的输出字符可以取决于您选择的任何内容,只要它们不同即可。 指定代码返回的输出格式。 测试用例 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH ...
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

26
翻译oOo代码
给定以oOo CODE编写的程序的输入,输出它表示的BF代码。 这是oOo CODE的工作方式的简短描述: 首先,所有非字母字符都将被删除(所有不在此范围内的字符 A-Za-z)。 例如,使用该程序PROgRam reVERsES giVeN iNPut sEqUENcE(esolangs Wiki页面上给出的示例完全可以实现您的期望)。第一步之后,我们现在有了 PROgRamreVERsESgiVeNiNPutsEqUENcE。 接下来,将所有剩余字符分成3组。现在有了 PRO,gRa,mre,VER,sES,giV,eNi,NPu,tsE,qUE,NcE。如果尾部有1个或2个字符,则将其丢弃。 根据下表将每组3个字母转换为BF命令: ooo > ooO < oOo [ oOO ] Ooo - OoO + OOo . OOO , 也就是说,如果组中的第一个字母是小写字母,第二个字母是大写字母,第三个字母是小写字母,它将转换为command [。 在我们的示例中,该程序最终成为BF程序,[>,]<[.<]+,该程序的确撤消了其输入。 因为这是code-golf,所以以字节为单位的最短代码将获胜。 测试用例: <empty string> -> <empty string> A -> <empty string> Ab -> <empty string> ...

30
这个数字是-2的整数次幂吗?
有很多聪明的方法来确定数字是否为2的幂。这不再是一个有趣的问题,因此让我们确定给定的整数是否为-2的整数次幂。例如: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² 规则 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您的输入是一个整数,如果该整数是-2的整数次幂,则输出必须是一个真实值,否则,则必须是一个虚假值。不允许其他输出(例如警告消息)。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下,所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持大整数,这不会使解决方案无效。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 获奖条件 这是一场代码高尔夫球比赛:字节数最少(在您选择的编码中)的答案是获胜者。

4
枚举有效的Brainf ** k程序
Golunar / 一元是编码的所有有效的方式Brainfuck程序,但它不是一个枚举,因为最自然的号码不对应于一个有效的程序。 出于此挑战的目的,假设使用了无限的双倍磁带且没有任何注释,即Brainfuck程序在且仅当其仅由字符组成<>+-.,[]并且所有左括号和右括号都匹配时才有效。 例如,空的程序,,[+][-].,[>+<[--].]并且+[+[+][+[+]+]+]+.是有效的Brainfuck方案,同时][,并a[]没有。 任务 写接受的有效Brainfuck程序作为输入并返回的自然数(程序或函数1,2,3,...),有以下限制: 对于所有有效的Brainfuck程序,生成的输出必须不同。 对于每个自然数n,必须有一个有效的Brainfuck程序,当该程序作为输入提供时,会生成输出n。 附加规则 对于100个字节或更少字节的Brainfuck程序,您的程序或函数必须在一分钟内完成。 这意味着在匹配输入之前,您不能迭代所有有效的Brainfuck程序。 适用标准代码高尔夫球规则。

15
生成数字1–255的Brainfuck
编写一个程序,对于从1到255的数字,将打印出BF代码,该代码将在数组的某个字节中生成给定的数字,并加上换行符。 例如,输出的前四行可能(并且很可能会)是: + ++ +++ ++++ 获胜者将最小:(source code + output以字节为单位)。 澄清与修订: BF程序使用包装单元。 输出BF程序必须以唯一的非零单元格为包含数字的单元格终止。 程序必须以升序输出。 输出为0的程序是可选的。 不允许使用负数据指针。<在第一个指针将什么都不做。(如果更合适,请发表评论)

14
圆形胶带令人兴奋吗?
Brainfuck衍生物 让我们定义一种类似于Brainfuck的简单编程语言。它有一个双向的单元格带,每个单元格容纳一位。所有位的起始位置均为0。磁带上的移动头起始位置为0。程序是一个在字符上的字符串<>01!,从左到右执行,具有以下语义: < 将头部向左移动一步。 > 将头部向右移动一步。 0 在当前单元格中放入0。 1 在当前单元格中放入1。 ! 翻转当前单元格。 没有循环,因此n个字符的程序将在n个步骤之后终止。如果在执行结束时所有单元格都包含0,则程序很无聊,如果至少有1,则令人兴奋。请注意,未指定磁带的大小,因此,根据实现的不同,它可能是双向无限的或圆。 一个示例程序 考虑该程序1>>>!<<<<0>!>>>!。在无限磁带上,执行如下: v 00000000000000 Put 1 v 00000100000000 Move by >>> v 00000100000000 Flip v 00000100100000 Move by <<<< v 00000100100000 Put 0 v 00000100100000 Move by > v 00000100100000 Flip v 00000000100000 Move by >>> v ...

2
在BrainF ***中实现QuickSort [关闭]
正如在堆栈溢出休息室中所讨论的: 如果您无法以您最不了解的任何语言来实现en.wikipedia.org/wiki/Quicksort给出的Quicksort算法,则可能需要考虑其他职业。@sbi 但SBI还指出,也许BrainF ***是个例外。 因此,这是一个难题/挑战:在BrainF ***中实现QuickSort。实施必须 被此和/或此处的解释器解释(对于大型脚本) 实施Wikipedia上描述的算法-如果可能的话,就地进行排序 排序以下整数列表:[0,4,6,4,2,3,9,2,3,6,5,3]并打印结果

10
Brainf ***高尔夫球手
用编程语言编写的最简单的代码之一是程序打印字符序列(例如,“ Hello,world!”)。然而,S ^ ō 米é é 小号Ø 牛逼é [R 我ç编程语言,如Brainfuck,连这个简单的代码是很烦人的写入。 您的任务是编写一个程序(不必使用Brainfuck编写),该程序将打印(最小长度)Brainfuck程序,并打印给定的文本。 输入值 字符序列(介于1和之间255)由任何格式(变量,参数,stdin,文件等)给出。 输出量 输出是有效的(无不匹配[和])脑力激荡的代码(假设无符号的8位换行单元和左右两侧单元的数量不受限制)打印作为输入给出的确切字符串。 例如,输入的一种可能的输出A是++++++++[<++++++++>-]<+.。 您的程序不必花很长时间(>2m)即可运行。 BF程序不必花很长时间(>10s)即可运行。 计分 (注意:当前的评分方法可能会更改,因为它不容易计算...) 程序的长度(生成BF代码)本身并不重要。但是,在程序代码中对BF代码进行硬编码是不正确的。唯一可接受的范围(例如一个BF码打印的单个字符。0x01:+.)的BF码可能是硬编码的。 分数是打印这些字符串的BF代码的长度总和。 Hello, world!附加了一个0x0A(\n)的字符串(即“ Hello,world!”程序) 单个字符0x01〜0xFF 这255个BF代码的长度总和乘以1/16,四舍五入后加到得分上。 前16个字符串的列表,该列表是通过删除所有零长度字符串来拆分11-11-11生成的字节的随机序列而生成的0x00。 Lenna.png,删除所有0x00s。 这首歌的歌词是99瓶啤酒,开头是99 bottles~,换行符是0x0A,段落之间用两个0x0As 分隔,结尾没有换行符。 您可能提供的其他字符串。 您的程序可能包括计算自身的分数。 当然,得分最低的代码将是赢家。

3
彩虹尽头的细胞
我们都知道,或者至少听说过“ fuckfuck”,这是最著名和最有影响力的神秘语言之一。如今,尽管大多数实现都使用无限磁带,但是UrbanMüller的原始编译器具有30000个单元的磁带。一个鲜为人知的事实*是,磁带的末尾实际上有一个特殊的值,在典型的Brainfuck程序中几乎从未与之交互。 尽管可以使用29999 >s和a 来打印此值,但是Brainfuck .以其简短的解决方案而闻名,因此您的目标是使用最少的字符数打印此值。 *小说 规则: 复习说明: +/ -:递增/递减当前单元格,当255递增时从255缠绕到0,反之亦然 </ >:在磁带上左右移动指针 .:打印当前单元格的值。 [:]如果单元格的值为0,则跳转到相应的 ]:[如果单元格的值不为0,则跳转到相应的 在这种情况下,,(获取输入)不执行任何操作,因为原始编译器在EOF上保留单元不变,并且该程序不应接收任何输入。 磁带最初以全0填充,但单元30000除外,其中包含未知值 指针从单元格1开始,并应在打印后结束于单元格30000。 细胞对1和30000右左有不确定的行为,所以解决方案应该不能访问这些细胞。 请注意,30000 处的值可能是0,因此简单地循环直到您击中非零单元格都将无效。 您应该只打印单元格30000处的值 最短的解决方案获胜! 决胜局是更高效的程序(以最少的步骤执行),其次是最快的提交时间。 提示: Esolanging Fruit建议使用https://copy.sh/brainfuck来测试您的代码。规范如本挑战中所述,您可以选择该abort选项,以便程序在越界时暂停。

2
将Brainf中的任意大单元归零***
您的任务是编写一段代码,将Brainfuck变体中的当前单元格清零,每个单元格可以包含任意大数值的有符号整数,而不是正常的0到255。 您可以假设当前单元格的左边有l个单元格,而右边的r个单元格最初为零。您的程序只能访问这些l + r +1个单元。代码结束后,应将l + r个额外的单元格保留为零,并将指向当前单元格的指针保留在原始位置。 您不得使用任何输入/输出。 l + r最小的代码获胜。如果有平局,则以最短的代码为准。建议还声明程序的时间复杂度以供参考,其中n是当前单元格中原始整数的绝对值。 有用的工具 您可以使用mbomb007在TIO上使用此解释器来测试此版本中的Brainfuck程序。 您还可以通过廷比在此答案中使用解释器(其他Python答案也可能有效,但我没有测试)。

2
将Brainfuck转换为MarioLANG
MarioLANG是一种二维编程语言,其源代码类似于超级Mario Bros.级别。此外,其指令集与Brainfuck的指令集非常相似。这意味着MarioLANG本质上是2D Brainfuck,指令指针像Mario一样移动。因此,当我为编程语言测验编写我的MarioLANG提交内容时,我首先将Brainfuck转换为“ Hello,World!”。程序到MarioLANG。我注意到,通过非常系统的过程可以做到这一点,因此让我们编写一个Brainfuck-to-MarioLANG编译器! 注意: MarioLANG规范并不是完全明确的,因此我假设是Ruby实现的解释。 我将通过以下Brainfuck程序来解释该过程: ++[>+++++[>+++++++>++++++++++>+++>+<<<<-]<-]>>++.>+.+++++++..+++.>+++.>. 它打印Hello!并在尾随换行符。 分别将<和转换>为(和): ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). 添加地板让Mario继续前进: ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). ======================================================================== 现在的问题是MarioLANG没有像[和这样的循环]。取而代之的是,我们必须使用电梯和指示性指令使Mario真正走成一圈。首先,我们将替换[为>并将地板更改为"。我们还替换]为[!并将地板更改为=#: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ 该"和#可以形成电梯(从开始#,在结束"),所以现在我们需要的是辅助地板马里奥走回来的。开始于!和结束于<: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ ! < #===============================" ! < #==========================================" 请注意,所有管线的长度必须至少与最大封闭回路的长度相同,因为解释器无法跨较短的管线连接电梯末端。因此,我们用空格填充中间线。 就是这样。我们有一个功能齐全的等效MarioLANG程序。 挑战 给定有效的Brainfuck程序,请执行上述过程以将其编译为MarioLANG程序。 您可以假设输入中仅包含命令字符,即除之外没有其他字符,.+-<>[]。 所有辅助地板必须尽可能靠近主程序地板。您可以选择尽可能少地填充中间楼层的行(最大封闭循环的宽度),也可以填充到主程序的末尾。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。如果您不将结果打印到STDOUT,则它仍然应该是一个用换行符分隔的字符串。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 测试用例的格式如下:第一行是Brainfuck程序(您的输入),然后有一个空行,直到下一个空行的所有内容都是MarioLANG中的预期输出。这些示例使用最少的填充空间。或者,您可以在每行之间填充空格,使其与输出的第一行的宽度相等。 >,++-.< ),++-.( ======= ,[.,] ,>.,[! ="===# ! < #===" >>[-]<<[->>+<<] ))>-[!((>-))+(([! =="==#=="=======# ! < ...

7
生成Brainf *** NOP
有时,在编写脑力激荡的代码时,您会感到需要使其长度超过鼓励调试的时间。您可以通过><在其中放一个来做到这一点,但是那有什么乐趣呢?您将需要更长或更短的NOPey,以使任何人都无法阅读您的代码。 快速入门Brainfuck Brainfuck是UrbanMüller于1993年创建的一种深奥的编程语言,以其极简主义而著称。(维基百科) Brainfuck是一种基于八种命令的语言:+-><,.[]。该代码在图灵机之类的东西上运行:可以在上面更改值的无限磁带。在此挑战中,我们将重点关注前四个: + increment the value at the pointer - decrement the value at the pointer > move the pointer right < move the pointer left 脑干NOP 脑干NOP是一系列脑干角色,当从任何状态执行时,脑筋都不会改变状态。它们由上述四个字符组成。 挑战 面临的挑战是编写一个程序或函数,当执行该程序或函数时,将生成给定长度的随机性NOP。 输入项 您将收到一个非负偶数整数作为输入n。(NOP不可能是奇数n。) 输出量 您将输出一个长度为的随机性NOP n。 规则 NOP的定义:在将程序的输出插入到Brainfuck程序的任何位置时,该程序的行为不得以任何方式改变。换句话说,它不得更改解释器的状态。 请注意,例如+>-<,这是不正确的,因为它更改了两个单元格的值而没有将它们改回来。发布前,请先测试您的解决方案。 另请注意,这+>-<->+<是一个NOP,仅通过删除就不能将其减少为零>< <> +- -+。因此,您不能使用仅将它们彼此插入的算法。 长度的每个有效NOP n必须有非零的机会出现在输出中。但是,分布不必一定是统一的。 讨论中的“脑干”解释器具有无限精确的任意精确细胞带。也就是说,您可以无限地向两个方向移动,并无限地增加/减少每个单元格。 该程序必须在1分钟内在n我的计算机上完成= 100,因此不能生成所有可能的NOP并选择一个。 如果输入的内容无效(非整数,负数,奇数等),则可以执行任何您想做的事情,包括崩溃。 ...

5
打高尔夫球的技巧
您有什么关于打高尔夫球的一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某些方面是专门针对脑力劳动的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。

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.