概要 編集

Brainfuckは、 Urban Müllerによって1993年に開発された難解プログラミング言語です。

P"やFALSEに影響を受けました。また、膨大な数の難解プログラミング言語に影響を与えた言語です。

拡張子は、「.b」もしくは「.bf」です。

fuckが卑語であるため、様々な別名があります。それを以下に示します:

  • bf
  • Brainf**k
  • Brainf*ck

このように、様々な別名のせいで、情報を探すことが困難になっていたりします。

仕様 編集

要素 編集

Brainfuckは以下のもので成ります:

  • 現在のメモリを指し示す命令ポインタ。初期値はメモリの左端を指す。
  • 少なくとも30000個の要素があるメモリ。初期値は0。
  • 入出力のストリーム。

命令 編集

Brainfuckは、8つの命令を持ちます。命令は以下の通りです:

Brainfuckの命令セット
命令 動作
+ 現在のメモリをインクリメントする。
- 現在のメモリをデクリメントする。
> 命令ポインタを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) 編集

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


このページ「Brainfuck」は、まだ書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークページへどうぞ。