Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
210
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
260
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
420
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
440
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
1
160
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
710
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
140
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
430
直接メモリアクセス
koba789
0
280
21st ACRi Webinar - Univ of Tokyo Presentation Slide (Shinya Takamaeda)
nao_sumikawa
0
120
“決まらない”NSM設計への処方箋 〜ビットキーにおける現実的な指標デザイン事例〜 / A Prescription for "Stuck" NSM Design: Bitkey’s Practical Case Study
bitkey
PRO
1
580
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
92
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Making Projects Easy
brettharned
120
6.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
700
Fireside Chat
paigeccino
41
3.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
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/
ありがとうございました!