MISC基础篇-Brainfuck
今天我们来学习一下Brainfuck语言以及Ook!语言,它们是MISC中的基础知识,一般会出在签到题。
BrainFuck
介绍
Brainfuck是最小的,图灵完备的语言。
图灵完备可以简单理解为任何可用算法解决的问题,都可用这个编程语言去解决。
结构: Brainfuck是由一个指针和一个数组组成,如下
1 | 指针: ↓ |
组成: 它只由8种字符组成
>: 指针向右移动一格。<: 指针向左移动一格。+: 使指针当前格的字节数加1。-: 使指针当前格的字节数减1..: 把当前格数按ASCII表输出到终端。,: 接收一个字节的输入,将其值存储在数据指针的字节中。[: 当前值为0时,程序跳转至与之对应的]之后;否则程序正常执行。]: 程序跳转回与之对应的[处。
编程实现
1.表示字母’A’
已知A的ASCII对应值为65,想必你一定会想到下面的表示方法:
1 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. |
虽然有点蠢,但不失为一种方法。下面我们来学习改进后的方法。
1 | +++++ |
我们来分析这段代码,假设指针最开始指向数组a[0],
第一行,进行+++++说明,a[0]=5;
第二行,当前指针指向a[0],不等于0,因此进入循环;
第三行,>指针右移一位,指向a[1],接着13个+,即a[1]=a[1]+13;
第四行,<指针左移,再次指向a[0],接着-,即a[0]=a[0]-1; 第五行,返回[; 第六行,>右移指向a[1],.输出a[1]`;
可以转换为C语言脚本来理解
1 |
|
实现输出’Hello MISC’
首先,我们要找到对应的ASCII值:
H: 72e: 101l: 108o: 111空格: 32M: 77I: 73S: 83C: 67
脚本实现如下:
1 | ++++++++++[>+++++++>++++++++++>+++>+++++++>+++++++<<<<<-] |
至此,你已经掌握了Brainfuck的编程方法,准备开启你的签到之旅吧!
参考
一门能让你五分钟学会的语言-Brainfuck-腾讯云开发者社区-腾讯云 (tencent.com)
Ook!
介绍(一本正经)
Ook!是一种基于Brainfuck的变种,意在让类人猿能够理解和使用,成为高级程序猿(bushi
介绍(玩笑)
Ook!的语法能够与Brainfuck一一对应,因此上边的学会之后,下边也不成问题。
| Brainfuck | Ook! | Short Ook! |
|---|---|---|
| > | Ook. Ook? | . ? |
| < | Ook? Ook. | ? . |
| + | Ook. Ook. | . . |
| - | Ook! Ook! | ! ! |
| . | Ook! Ook. | ! . |
| , | Ook. Ook! | . ! |
| [ | Ook! Ook? | ! ? |
| ] | Ook? Ook! | ? ! |
上文中的Hello MISC,换成Ook!
1 | Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. |
另一种表示short Ook!
1 | . . . . . . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . . . . . . . ? . ? ! . ? . . . . . . . . . . . . . . . . ! . ? . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . ? . ? ! . ? . . . . . . . . ! . . . . . . . . . . . . . . . ! . ! . . . . . . . ! . ? . . . . . . . . . . . . . . . . . ! ? ! ! . ? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ? . ? ! . ? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! . ? . . . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . . . ? . ? ! . ? . . . . . . . . . . . . . . . . . . ! . ! ! ! ! ! ! ! ! ! . ? . . . . . . . ! ? ! ! . ? . . . . . . ? . ? ! . ? . . ! . ? . . . . . . . . . ! ? ! ! . ? ! ! ! ! ! ! ! ! ? . ? ! . ? ! . ? . |
运行环境
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Ramoor!
评论
ValineGitalk








