#はじめに
この記事は、僕が2018年の夏から秋にかけてBrainf*ck言語にハマっていた頃に書いたソースコードを載せたものです。
大したものは、作っていないですが何かの役に立てれば幸いです。
#自己紹介
++++[>++++<-]>[<++++>-]++++[<++++>-]<--.-----.------.++.>++++[>++++<-]>[<++>-]<.>>++++[<<<---->>>-]<<<---.>.>++++[<<++++++++>>-]
<<-----.>>++[<<---->>-]<<.>.>>++++[<<<---->>>-]<<<---.>.<+++>>++++[>++++<-]>[<<<++>>>-]<<<.>+..[-]<[-]
これは、僕のTwitterのトプ画にあるソースコードです。
実行すると、「NICE 2 ME 2 U!!」と出力されます。
#フィボナッチ数列
++++[>++<-]>[>++++++>++++++>++++++<<<-]>>
.
>+
.
[
[<+>>+<-]
<<
[<+>>-<-]
>.
[>+<-]
>>
[<<+>>-]
<<<<
[>+<-]
>>>
]
フィボナッチ数列を出力するプログラムです。
(ですが、桁上がりが対応できてないので、8が最大でその後は…)
#足し算(1桁+1桁)
++++[>++<-]>[>++++++<-]>>
>,
>,
<<+>>[<<+>>-]<<-
>
[-<+>]<<
[>-<-]
>.
足し算をするプログラムです。
こちらも、桁上がりには対応出来ていませんが…
#引き算(1桁-1桁)
++++[>++<-]>[>++++++<-]>>
>>,
<,
<+>>[<<+>>-]<<-
>
[-<->]<<
[>+<-]
>.
引き算をするプログラムです。
ただ、符号対応が出来てなかったりします。
#掛け算(1桁×1桁)
++++[>++<-]>[>++++++>>>>>++++++<<<<<<-]>>
>,
>>,
>
[<-<<->>>-]
<
[
<<
[<+>>+<-]
>
[<+>-]
>-
]
<<<<
[>+<-]
>.
掛け算をするプログラムです。
これも、桁上がりには対応してないです。
#割り算(1桁÷1桁)
++++[>++<-]>[>++++++>>>>>++++++<<<<<<-]>>
>,
>>,
>
[<-<<->>>-]
<<<
[
<+
>>>
[<<->+>-]
<
[>+<-]
<
]
<<
[>+<-]
>.
割り算をするプログラムです。
ただ、小数に対応してないです。
#論理演算OR
++++[>++<-]>[>++++++<-]
>>
,[>+<-]
<[>+>-<<-]
,[>>+<<-]
>[>->+<<-]
>[<+>[-]]
>[<<+>>-]
<<.
論理演算のORのプログラムです。
入力2つに対して、どちらも0だった場合のみ0を出力します。
#論理演算AND
++++[>++<-]>[>++++++<-]
>>,
<[>->+<<-]
>
[,
>[<-<+>>-]
<[<+>[-]]
<[>>+<<-]
>
]
>[<<+>>-]
<<.
論理演算のANDのプログラムです。
入力2つに対して、どちらも同じ入力だった場合に1を出力します。
#論理演算NOT
>>++[>++++<-]>[<++++++<++++++<++++++>>>-]
<<+<->>
>>,
<<[>+>-<<-]
>>[<<+>>[-]]
<<
[<<[>>+<<-]>>.>[-]<[-]]
>[+[<+>-]<.>]
論理演算のNOTのプログラムです。
入力1つに対し、0だった場合に1を、それ以外は0を出力します。
#LOOP(qが入力されるまで)
>>>+++++[<++++++>-]<[<++++<++++>>-]+++++++[<-<->>-]
<
[
>,
[<->>+<-]
<[>+<-]>
[
[<+>-]
>[<+>-]
<<[>>+<<-]
>[-]
<<[>+>+<<-]
>>[<<+>>-]
]
>[-]
<<
]
ループのプログラムです。
入力がqでなかった場合、ループします。