百科问答小站 logo
百科问答小站 font logo



哪里有 brainfuck 编程语言的相关学习资料与下载? 第1页

  

user avatar   Metaphox 网友的相关建议: 
      

五分钟包您学会 brainfuck(健)脑操语言

(非句首请勿首字母大写 brainfuck 谢谢)

包学包会,学不会免费再学。

将八个操作符 < > + - [ ] . , 分别转写为:

  • > 右
  • < 左
  • + 上
  • - 下
  • [ 始
  • ] 终
  • . 写
  • , 读

然后找一张方格纸,对就是小学作文本那种,一支铅笔(不,钢笔不行,Lamy 的也不行),一块橡皮,一张从你的旧 C 语言书上撕下来的 ASCII 码表。

现在来看 +++[>+<-] 这行程序。按照我们的转写,它变成:上上上始右上左下终。

接下来在你的方格纸上的第一个格子里写下 0 。

[0]

很好。现在我们一边读转写好的程序,一边按照以下规则行事:

  • 遇到什么都没写的格子就当里面写了 0
  • 右:向右移动一个格子。嗯你盯着它看就行了,什么都不用做
  • 左:向左移动一个格子
  • 上:给格子里的数字加上 1,擦掉原来的数字再写回去。现在你知道为什么要用铅笔了吧,少年!
  • 下:给格子里的数字减去 1
  • 始:开始重复「始……终」之间的指令,直到你读到「始」之前盯着的那个格子里的数字变成 0 为止。(什么?那个格子里已经是负数了?……不要这么没有下限好不好)
  • 终:如果当前格子里的数字为 0,就跳过,否则回头到「始」那里
  • 写:查当前格子里的数字在 ASCII 表上对应的字母,把它写下来(不,别写在格子里,就写在你买来一直立志想用但是没有用的日记本上吧)
  • 读:随便想一个英文字母,查表找到它对应的数字,写到当前格子里

我们开始吧。方括号代表当前你盯着看的格子。首先是上,上,上:

[3]

接下来,始:

[3]

嗯,你要重复做它到「终」之间的事情。首先是「右」:

3[0]

上:

3[1]

左:

[3]1

下:

[2]1

终:

<del>大明湖畔</del>碰到「始」之前你盯着的那个格子,你还记得吗?碰巧就是当前这个。目前里面是 2 ,不是 0,所以我们回去「始」。

右:

2[1]

上:

2[2]

左:

[2]2

下:

[1]2

终:

回去「始」

右:

1[2]

上:

1[3]

左:

[1]3

下:

[0]3

终:

格子里是 0 了,你可以跳过「终」读下去了。 这段程序就此完结,但如果你读懂了这些,其实就已经看懂了我那个程序最开始的部分:

++++++++++[>+++>++++>+++++++>++++++++++>+++++++++++<<<<<-]

无非就是,先把最左边的格子加到 10,然后向右移动,移动到第二个格子里加 3,第三个加 4,第四个加 7,第五个加 10,第六个加 11,然后向左移动五次,回到第一格,减 1。如此重复十次之后,最左边的格子变成 0,循环终止,而我有了如下格子:

[0] 30 40 70 100 110

接下来的部分,就是挪到某个格子,加上或者减去若干次 1,直到获得想要字母的 ASCII 代码,然后用 . 把它打印出来。比如紧接着的 >>>++. 就是右移三次,到写了 70 的格子上,加两次 1,得到 ASCII 72 ,大写字母 H,再用 . 把它显示出来。

很简单吧?学会了?恭喜你……

It is practically impossible to teach functional programming to students that have had a prior exposure to brainfuck: as potential programmers they are mentally mutilated beyond hope of regeneration.
–– Edsger W. Dijkstra (paraphrased)

(开玩笑的。新年快乐,上上下下左右左右 BA start!)




  

相关话题

  你碰到过的最难调试的 Bug 是什么样的? 
  用晶体管自制一个加法器,需要什么元件,该怎么做? 
  为什么编程语言对异步编程都是很晚近才开始支持的? 
  编程语言中类型前置和类型后置的优缺点各是什么? 
  是否无法写一段代码将这段代码自己打印出来? 
  编程那么难,为什么不弄一个大众一学就会的计算机语言呢? 
  宅总用的这是什么编辑器? 
  哪些软件应用值得用Rust重写? 
  为什么程序都要用英文写,中文不行吗? 
  如何理解 “c++缺少对象级别的消息发送机制” 这句话? 

前一个讨论
用汉语思维真的不如用英语思维逻辑清晰吗?
下一个讨论
欧洲的巫师为什么要骑扫帚?





© 2025-05-12 - tinynew.org. All Rights Reserved.
© 2025-05-12 - tinynew.org. 保留所有权利