Brainfuck
ナビゲーションに移動
検索に移動
概要[編集]
Brainfuckは、 Urban Müllerによって1993年に開発された難解プログラミング言語です。
P"やFALSEに影響を受けました。また、膨大な数の難解プログラミング言語に影響を与えた言語です。
拡張子は、「.b」もしくは「.bf」です。
fuckが卑語であるため、様々な別名があります。それを以下に示します:
- bf
- Brainf**k
- Brainf*ck
このように、様々な別名のせいで、情報を探すことが困難になっていたりします。
仕様[編集]
要素[編集]
Brainfuckは以下のもので成ります:
- 現在のメモリを指し示す命令ポインタ。初期値はメモリの左端を指す。
- 少なくとも30000個の要素があるメモリ。初期値は0。
- 入出力のストリーム。
命令[編集]
Brainfuckは、8つの命令を持ちます。命令は以下の通りです:
命令 | 動作 |
---|---|
+ |
現在のメモリをインクリメントする。 |
- |
現在のメモリをデクリメントする。 |
> |
命令ポインタを1つ右に移動させる。 |
< |
命令ポインタを1つ左に移動させる。 |
. |
現在のメモリの値を文字コードとみなし出力する。 |
, |
入力を求め、入力された値を現在のメモリに代入する。 |
[ |
現在のメモリの値が0なら、対応する] にジャンプする。
|
] |
現在のメモリの値が0でないなら、対応する[ にジャンプする。
|
また、命令でない文字は無視されます。
Hello world[編集]
Brainfuckにおけるハローワールドプログラムを以下に示します。
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
実装[編集]
Brainfuckを利用するには、ソフトウェアをインストールするほかに、ブラウザで実行する方法があります。以下はその一例です。
Brainfuckの定数[編集]
英数字[編集]
0(48)[編集]
+++++++[>+++++++<-]>-
1(49)[編集]
+++++++[>+++++++<-]>
2(50)[編集]
+++++++[>+++++++<-]>+
3(51)[編集]
+++++[>++++++++++<-]>++
4(52)[編集]
++++[>++++++++++++<-]>
5(53)[編集]
++++[>+++++++++++++<-]>+
6(54)[編集]
+++++[>+++++++++++<-]>-
7(55)[編集]
+++++++[>++++++++<-]>-
8(56)[編集]
+++++++[>++++++++<-]>
9(57)[編集]
+++++++[>++++++++<-]>+
アルファベット・大文字[編集]
A(65)[編集]
>+[+[<]>>+<+]>
B(66)[編集]
--[++>+[<]>+]>
C(67)[編集]
+[->-[--<]>-]>
D(68)[編集]
+[->-[--<]>-]>+
E(69)[編集]
+[->-[--<]>-]>++
F(70)[編集]
-[+[>---<<]>+]>
G(71)[編集]
-[>+<-------]>--
H(72)[編集]
-[>+<-------]>-
I(73)[編集]
-[>+<-------]>
J(74)[編集]
-[>+<-------]>+
K(75)[編集]
-[>+<-------]>++
L(76)[編集]
>+[+<[-<]>>++]<
M(77)[編集]
>+++[[-<]>>--]<
N(78)[編集]
+[+[>>+<+<-]>]>
O(79)[編集]
-[+>++[++<]>]>-
P(80)[編集]
-[+>++[++<]>]>
Q(81)[編集]
-[>+<---]>----
R(82)[編集]
-[>+<---]>---
S(83)[編集]
-[>+<---]>--
T(84)[編集]
-[>+<---]>-
U(85)[編集]
-[>+<---]>
V(86)[編集]
-[>+<---]>+
W(87)[編集]
-[>+<---]>++
X(88)[編集]
-[+[+<]>>+]<
Y(89)[編集]
-[+[+<]>>+]<+
Z(90)[編集]
-[+[+<]>>+]<++