Brainfuckテキストエンコーダ
「Hi」と入力すると、プラス記号と出力用のピリオドだけでできた107文字のBrainfuckプログラムが、すぐ実行できる形で得られます。逆にBrainfuckを実行して出力を表示し、対応しない括弧も知らせます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hi
- 計算モード
- Encode
- エンコード
- brainfuck
- 入力の長さ
- 2
- 出力の長さ
- 107
このBrainfuckテキストエンコーダは、プレーンテキストをその文字列を印刷する実行可能なBrainfuckプログラムへ変換し、逆方向ではBrainfuckソースを実行してプログラムが何を出力するかを確認できます。encodeモードは各Latin-1バイトを走査し、0–255のラップするリング上でより短いプラスまたはマイナス列で単一のテープセルを調整し、各文字のあとにピリオドを出してすぐ実行できるプログラムにします。decodeモードは有界テープ上の古典的な八命令インタプリタです。実行前に括弧の対応を検証し、従来のBrainfuckと同様に命令以外の文字を無視し、未対応の括弧・ステップ上限・ポインタ超過では明確に失敗します。esolangのデモ、CTFのフィクスチャ、八つのBrainfuck命令の授業には本ページを無料でご利用ください。
Brainfuckとは何か、このツールが返すもの
Brainfuckは、データポインタを動かし、現在セルを増減し、バイトを読み書きし、ゼロまたは非ゼロでループ跳躍する八命令だけの小さな難解言語です。冗談めいた名前でも計算モデルとしては完全であり、教師・パズル作者・esolang愛好家は今もテープ機械、ラップ算術、構文検証と実行時制限の違いを説明するのに使います。
本ページが扱うのは実際に検索される二つの実用的な仕事です。与えられた文字列を印刷するBrainfuckプログラムの生成と、印刷出力を取り出すためのBrainfuckソースの実行です。encodeモードは0から255までのLatin-1バイトを扱い、各文字を1回のセル書き込みと1回の印刷に対応させます。
decodeモードはコメント混じりのBrainfuck命令列を受け付けます。命令以外は慣例どおり無視しますが、角括弧が正しく入れ子になっていないプログラムは拒否します。壊れた括弧の黙った修復も無制限実行もなく、ステップ・テープ・出力の上限がWorkerを守りつつ、短い成功プログラムをブラウザで高速かつ無料に保ちます。
活用例
教室とesolangのデモ
短いBrainfuckプログラムを生成してライブ実行し、ローカルインタプリタを入れずにテープ機械が文字列を印刷する様子を示します。
CTFとパズルのフィクスチャ
決定的な手がかりを符号化し、プレイヤー提出のBrainfuckプログラムを自動チェッカーで期待印刷出力と照合します。
よくある質問
符号化できる文字は?
コードポイント0–255のLatin-1バイトです。空テキストは空プログラムになります。
無効なBrainfuckプログラムとは?
未対応の'['または']'、30,000セルテープの端を越えるポインタ、ステップや出力上限超過、非文字列のプログラム欄です。命令以外の文字は拒否せず無視します。
Brainfuckのプログラムが何を出力するか確かめるには?
デコードを選んでプログラムを貼り付けます。長さに上限のあるテープ上で実行され、出力が表示されます。命令以外の文字は無視されるので、コードの中にコメントがあっても問題ありません。
プログラムに入力を渡すことはできますか?
できます。カンマ命令が1バイトずつ読む入力を、任意で指定できます。入力を読み切ったあとのカンマは、現在のセルに0を書き込みます。
生成されるプログラムがプラス、マイナス、ピリオドだけなのはなぜですか?
文字ごとに1つのセルを、0から255までを一周する範囲でプラスかマイナスの短いほうを使って調整し、ピリオドで出力するためです。そのため、生成したプログラムはそのまま実行できます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/brainfuck-encode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi"}'const res = await fetch("https://api.kit.forhosting.com/enc/brainfuck-encode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hi"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/brainfuck-encode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hi"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/brainfuck-encode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hi"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hi"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/brainfuck-encode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hi"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.brainfuck_encode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
エンジンはネットワークを呼ばず、乱数も使わず、カレンダー時計にも依存しないため、同じテキストとモードはブラウザでもAPIでも常に同じ結果になります。典型的な確認は、Hiを短いプラスとドットのプログラムへ符号化し、そのプログラムを実行してHiに戻し、単独の開き括弧をinvalid_inputで拒否することです。CIやバックエンドで再現可能なencodeとrunの変換が必要な場合は、成功リクエストごとに$0.002のAPIをご利用ください。
Brainfuckとは何か、このツールが返すもの
それより大きいコードポイントは黙った文字化けではなく明確なinvalid_inputメッセージで拒否します。JSON応答には、生成プログラムまたは実行時出力のresult、encodeまたはdecodeを返すmode、brainfuck固定のencoding、サイズ検証用のinput_lengthとoutput_lengthが常に含まれます。任意のprogram_inputはdecode中のカンマ命令へバイトを供給し、stdinが尽きたらカンマは0を格納します。
textとmodeの読み方、結果が再現される仕組み
modeの既定はencodeで、decodeを明示できます。別名op・direction・actionは同じ切替に写像され、runやexecuteは実行とみなすスクリプト向けにdecodeとして扱われます。encodeは欠落テキスト、非文字列、文書化された文字上限を超える文字列、コードポイントが255を超える文字を拒否し、修正しやすいよう不正文字の索引を示します。decodeはソース欠落、過大プログラム、未対応の閉じ括弧と開き括弧、三万セルテープの両端を越えるポインタ移動、出力上限超過、ステップ予算超過を拒否し、無料ページを止める古典的な無限ループも捕捉します。推奨ペイロード欄はtextで、別名input・value・s・program・messageによりフォーム、クエリ文字列、SDKクライアントが列名を変えずに同じ契約を再利用できます。各分岐は純粋な文字列組み立てか固定インタプリタループなので、同じtext・mode・任意のprogram_inputを持つ二つのクライアントは、生成規則と上限が固定である限りWorker版間でバイト一致の結果を受け取ります。自動化パイプラインで同じ数学的結果が必要で、ご自身でBrainfuck生成器を再実装したくない場合は、本ページの無料ブラウザ実行と有料APIを組み合わせてください。無効入力はinvalid_inputを返し課金されません。
学習・パズル・テストでのBrainfuckエンコーダと実行器の位置づけ
学生は最小命令セットを扱う授業、esolangの集い、従来言語なしでHello Worldを印刷する課題などでBrainfuckに出会います。パズル設計者とCTF作者には、同じフラグや手がかりが常に同じプログラムになる決定的エンコーダと、別インタプリタを配布せず出力を検証できる実行器が必要です。ネットワーク呼び出しやモデルに依存してはならない教育・セキュリティ課題・運用スモークテスト向けの、無料で決定的な小さなテキスト符号化ユーティリティ群を組み立てるとき、他の符号化ヘルパーと組み合わせてください。本ページでは処理はすべてご利用のブラウザ内で行われ、APIでは成功照会ごとに$0.002、失敗した検証は課金されず、応答後に何も保存されません。無料の対話的探索と同一の有料APIという分割はKITのtier-Aカタログ全体と一致し、黒板デモから自動化パイプラインへ符号化結果を変えずに移れます。
連携の活用例
CIのgoldenペア
継続的インテグレーションでencodeとrunの結果を検証し、生成器や文書サンプルが黙ってずれないようにします。
技術的な質問
Brainfuckテキストエンコーダの料金は?
本ページではブラウザ内で無料です。APIでは成功リクエストが$0.002、無効入力は課金されません。
対応モードは何ですか?
mode=encode(既定)はプレーンテキストを印刷するBrainfuckプログラムにします。mode=decodeはBrainfuckソースを実行し印刷出力を返します。別名runとexecuteもdecodeです。
結果は決定的ですか?
はい。同じtext・mode・任意のprogram_inputは、ネットワーク・乱数・日付依存なしで常に同じ結果になります。