MISC基础篇-Brainfuck

今天我们来学习一下Brainfuck语言以及Ook!语言,它们是MISC中的基础知识,一般会出在签到题。

BrainFuck

介绍

Brainfuck是最小的,图灵完备的语言。

图灵完备可以简单理解为任何可用算法解决的问题,都可用这个编程语言去解决。

结构: Brainfuck是由一个指针和一个数组组成,如下

1
2
指针:    ↓
数组:0 0 0 0 0 0 0 0 0

组成: 它只由8种字符组成

  • >: 指针向右移动一格。
  • <: 指针向左移动一格。
  • +: 使指针当前格的字节数加1。
  • -: 使指针当前格的字节数减1.
  • .: 把当前格数按ASCII表输出到终端。
  • ,: 接收一个字节的输入,将其值存储在数据指针的字节中。
  • [: 当前值为0时,程序跳转至与之对应的]之后;否则程序正常执行。
  • ]: 程序跳转回与之对应的[处。

编程实现

1.表示字母’A’

已知A的ASCII对应值为65,想必你一定会想到下面的表示方法:

1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.

虽然有点蠢,但不失为一种方法。下面我们来学习改进后的方法。

1
2
3
4
5
6
+++++
[
>+++++++++++++
<-
]
>.

我们来分析这段代码,假设指针最开始指向数组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
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main()
{
int a[2];
a[0]=5;
a[1]=0;
for(;a[0]>0;a[0]--)
{
a[1]+=13;
}
//这里输出ASCII的值,没有输出对应字符,实际应该输出字符。
print(a[1]);
}

实现输出’Hello MISC’

首先,我们要找到对应的ASCII值:

  • H: 72
  • e: 101
  • l: 108
  • o: 111
  • 空格 : 32
  • M: 77
  • I: 73
  • S: 83
  • C: 67
    脚本实现如下:
1
2
++++++++++[>+++++++>++++++++++>+++>+++++++>+++++++<<<<<-]
>++.>+.+++++++..+++.>++.>+++++++.----.++++++++++.>---.

至此,你已经掌握了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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.
Ook? Ook! Ook. Ook? Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook. Ook? Ook.

另一种表示short Ook!

1
. . . . . . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . . . . . . . ? . ? ! . ? . . . . . . . . . . . . . . . . ! . ? . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . ? . ? ! . ? . . . . . . . . ! . . . . . . . . . . . . . . . ! . ! . . . . . . . ! . ? . . . . . . . . . . . . . . . . . ! ? ! ! . ? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ? . ? ! . ? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! . ? . . . . . . . . . . . . . ! ? ! ! . ? . . . . . . . . . . . . ? . ? ! . ? . . . . . . . . . . . . . . . . . . ! . ! ! ! ! ! ! ! ! ! . ? . . . . . . . ! ? ! ! . ? . . . . . . ? . ? ! . ? . . ! . ? . . . . . . . . . ! ? ! ! . ? ! ! ! ! ! ! ! ! ? . ? ! . ? ! . ? .

运行环境

https://www.splitbrain.org/services/ook


MISC基础篇-Brainfuck
http://ramoor.github.io/2025/04/05/MISC基础篇-Brainfuck&Ook!/
作者
Ramoor
发布于
2025年4月5日
许可协议