プチコン3号&BIGまとめWiki

Brainfuck Terminal OSP

パンくずリスト

2017年12月2日投稿 / 投稿者 : Ryou Tanpo / タグ : 投稿プログラム ツール Brainfuck

概要

Brainfuck Terminal とは

Brainfuck プログラムを、TXT ファイル、またはコマンドラインから実行できるターミナルのようなものです。

そもそも Brainfuck とは

Brainfuck は C や SmileBASIC のようなひとつのプログラミング言語ですが、命令として8文字の記号(+ - < > [ ] , .)しか使わない特徴があります。
可読性は低く、文字列を表示するだけで何十文字ものプログラムになりますが、世の中には Brainfuck で書かれた、Brainfuck を実行するインタプリタもあるもので、与えられたたった8文字の命令で、どこまでのことが実現できるか試している人もいる...のかな。

基本的な考え方としては、いくつかの要素数 *1 の配列と、配列のある要素を指すポインタ *2 があり、ポインタを増やしたり、減らしたりすることで配列の要素を選択して、要素を操作する、ということです。また、データを画面に表示するときもポインタで選択された要素が表示されます。

例えば、SmileBASIC に A[256] という配列変数と P という変数があったとして、 P をポインタとします。すると、P が 0 であるときは、「画面に文字を表示してくれー」といったときに A[0] が表示されることになります。つまり、同様に P が 3 だったときは、 A[3] が表示されます。
これは、画面に文字を表示する場合に限らず、実際に要素の値を操作するとき、また SmileBASIC でいう WHILE に相当する命令などでも同じです。

SmileBASIC と違って、実際に要素の値を増やすとか、画面を表示する際に「何を」操作するとか、「何を」表示するとかを指定しない代わりに、ポインタを動かして要素を選んで、「じゃあ表示して」といわれたときは、そのポインタが指している要素を表示すると言った感じです。

まあ、実際にリファレンスやサンプルプログラムを見ればわかると思います。

使い方

実行するとプロンプトが出てくるので、専用のコマンドか、直接 Brainfuck プログラムを入力します。

  • "," による入力待ちでは、L ボタンを押しながら Enter キーを押すと、文字コード 0 を入力したことになります。つまり、入力した文字コードをループの継続条件にしている場合 *3 は、この操作を行うことでループを終了させることができます。
  • X ボタンでプログラムを停止します。(ver1.0.1 のみ)
  • Brainfuck プログラムでは、Brainfuck の各命令 以外は無視されます。

実行例

  1. BRAINFUCK> ,[.,]
  2. ABC
  3. BRAINFUCK> L ECHO
  4. L:ファイル’ECHO’がみつかりません
  5. BRAINFUCK> S ECHO ,[.,]
  6. BRAINFUCK> L ECHO
  7. ABC
  8. BRAINFUCK>

プロンプトでのコマンド

  • 実行するとプロンプトが出現して入力待ちになります。
  • Brainfuck プログラムを直接入力できるほか、ファイルからの実行のために以下のコマンドが用意されています。
    • コマンドと各引数はスペースで区切ってください。
F
FILES と同様のファイル一覧を表示します。
L ファイル名
指定されたファイルから Brainfuck プログラムを実行します。
S ファイル名 プログラム
指定されたファイルに Brainfuck プログラムを保存します。プログラムにスペースを含むことはできません。

Brainfuck リファレンス

>
ポインタを 1 進めます。
INC P
<
ポインタを 1 戻します。
DEC P
+
ポインタの指す要素を 1 増やします。
INC A[P]
-
ポインタの指す要素を 1 減らします。
DEC A[P]
[
ポインタの指す要素が 0 であるとき、対応する ] にジャンプします。
WHILE A[P]
[
ポインタの指す要素が 1 であるとき、対応する [ にジャンプします。
WEND
,
ポインタの指す要素に 1 文字入力します。値は入力された文字コードとなります。
REPEAT K$=INKEY$():UNTIL K$!=:A[P]=ASC(K$)
.
ポインタの指す要素を文字コードと解釈して表示します。
PRINT CHR$(A[P]);

サンプル

echo

  1. ,[.,]
  • 入力された文字を表示します。
  • L ボタン + Enter キーで終了できます。

プログラムリスト

ver1.0.0

IMG_3869.PNG
修正
  • @2 の後の INC M[P]DEC M[P]

ver1.0.1

IMG_3876.JPG

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)


メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 2 人がこのサイトを見ています
  • このページはこれまでに 1766 回、本日は 1 回、昨日は 1 回閲覧されました

ページの先頭に戻る

*1 この Brainfuck インタプリタでは 256 個
*2 配列の添字と考えた方がいい
*3 例えば ,[.,]

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.039 秒 | このページの最終更新 : 2017/12/03 (日) 14:30:07 (1637d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30