【愚公系列】2022年04月 编码解码-BrainFuck
【摘要】 一、BrainFuck 1.BrainFuckBrainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainfck或brainf**,甚至被简称为BF。BrainFuck, (An Eight-Instruction Turing-Complete Programming Language), 这个语...
一、BrainFuck
1.BrainFuck
Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainfck或brainf**,甚至被简称为BF。
BrainFuck, (An Eight-Instruction Turing-Complete Programming Language), 这个语言本身的语言模型很简单, 有一个byte指针, 有一个初始化为0长度为30000 bytes的数组, byte指针可以在数组内任意移动, 支持下面的八种操作, 指针初始化指向数组的开始. 这个语言只是作者为了写一个很简单的编译器, 才设计的一门语言, 语言和名字一样, 很难读懂, 简单的一些操作用BrainFuck来写都很复杂难读.
八种操作符定义如下:
字符 | 含义 |
---|---|
> |
指针加一 |
< |
指针减一 |
+ | 指针指向的字节的值加一 |
- | 指针指向的字节的值减一 |
. | 输出指针指向的单元内容(ASCII码) |
, | 输入内容到指针指向的单元(ASCII码) |
[ | 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 |
] | 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 |
Brainfuck程序可以用下面的替换方法翻译成C语言(假设ptr是char*类型):
Brainfuck | C |
---|---|
> |
++ptr; |
< | –ptr; |
+ | ++*ptr; |
- | –*ptr; |
. | putchar(*ptr); |
, | *ptr =getchar(); |
[ | while (*ptr) { |
] | } |
官方网站: http://www.muppetlabs.com/~breadbox/bf/
2.BrainFuck优缺点
当然 Brainfuck还是有一些好处和坏处的
- 读入:快速读入(普通读入int读不进,double超难写)
- 输出:快速输出(输出全是字符)
- 码长:1000 1000多行~有兴趣的可以去玩玩
- 省略:省略所有除关键字外的字符,所以你可以把它藏在一篇文章中
- 出题:给那些不懂的人玩玩
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)