Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Brainf*ckしよう
Search
Atnanasi
February 18, 2017
Technology
0
350
Brainf*ckしよう
私は詳しい事は知りません
Atnanasi
February 18, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
960
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
130
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
670
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
20260204_Midosuji_Tech
takuyay0ne
1
160
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
110
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
810
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
170
Featured
See All Featured
The browser strikes back
jonoalderson
0
390
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
For a Future-Friendly Web
brad_frost
182
10k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Bash Introduction
62gerente
615
210k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
100
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
140
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
Writing Fast Ruby
sferik
630
62k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Transcript
Brainf*ckしよう 私は詳しい事は知りません
自己紹介 Atnanasi﴾あっとななし﴿ もうすぐ17歳 仙台在住の高専生 とても学校やめたい LT初めてです
Brainf*ckって知ってますか?
Brainf*ckとは Brainfuck(ブレインファック)は難解プログラミング言語の ひとつ[要出典]。なお名称に卑語>が含まれるため、Brainf*ck などと表記されることがある。 開発者Urban Müllerがコンパイラがなるべく小さくなる言語 として考案した。 実際、Müllerが>開発したコンパイラのサ イズはわずか123バイト、インタプリタは98バイトであっ た。
Wikipediaより
Hello,world! +++++++++[>++++++++>+++++++++++>+++++<<<‐]>.>++.+++++++..+ ++.>‐.‐‐‐‐‐‐‐‐‐‐‐‐.<++++++++.‐‐‐‐‐‐‐‐.+++.‐‐‐‐‐‐.‐‐‐‐‐‐‐‐.>+.
やばい﴾やばい﴿
命令 > ポインタをインクリメントする < ポインタをデクリメントする + ポインタが指す値をインクリメントする ‐ ポインタが指す値をデクリメントする .
ポインタが指す値を出力に書き出す , 入力から1バイト読み込んで、ポインタが指す先に代入する [ ポインタが指す値が0なら対応する ] の直後にジャンプする ] ポインタが指す値が0でないなら対応する [ にジャンプする
ニコニコ大百科より 1. 最初のポインタの位置で値を9回インクリメントする。 2. 最初のループで最初のポインタに入っている値をループカウ ンタとし、2番目のポインタの値を8×9=72、3番目のポイン タの値を11×9=99、4番目のポインタの値を5×9=45にする。 3. 2番目のポインタに入っている値は72で、これを文字コードで 出力すると"H"になる。
4. ポインタをインクリメントし、3番目のポインタの値を2回イ ンクリメントして101にして出力すると、"e"になる。 5. それをさらに7回インクリメントすると"l"になり、2回出力す る。さらに3回インクリメントして"o"にする。 6. ポインタをインクリメントし、4番目のポインタの値を1回デ クリメントして44にして出力すると","になる。 7. それをさらに12回デクリメントすると" ﴾半角スペース﴿"にな る。
ようするに 出力はメモリの値をASCIIコードとして解釈する AのASCIIコードは65 単純にインクリメントをするのは効率が悪い →ループを使いまとめてインクリメント 足りない分や少ない分を調整すればあらふしぎ!
拡張もあるよ BrainCrash ‐ ビット演算命令を追加﴾&|^~﴿ Braincunt ‐ メモリ空間を3次元に拡張し ポインタの進行方向を指すベクトル回転命令を追加 BFX ‐
値のコピーやビットシフトを追加 BF‐x ‐ メタプログラミング機能を追加﴾予定﴿
みんなも作ろう 命令が少ないのですぐ実装できる 仕様が簡単 拡張もできる
実装例 学校の課題でScratchでなんか作れって言われたので https://scratch.mit.edu/projects/141720182/
ありがとうございました!