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
衛星運用をソフトウェアエンジニアに依頼したときにできあがるもの
sankichi92
1
230
Lakebaseを使ったAIエージェントを実装してみる
kameitomohiro
0
180
[ JAWS-UG千葉支部 x 彩の国埼玉支部 ]ムダ遣い卒業!FinOpsで始めるAWSコスト最適化の第一歩
sh_fk2
2
150
オフィスビルを監視しよう:フィジカル×デジタルにまたがるSLI/SLO設計と運用の難しさ / Monitoring Office Buildings: The Challenge of Physical-Digital SLI/SLO Design & Operation
bitkey
1
350
ソフトウェアテストのAI活用_ver1.25
fumisuke
1
570
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
190
TLSから見るSREの未来
atpons
2
250
スタックチャン家庭用アシスタントへの道
kanekoh
0
110
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.8k
第64回コンピュータビジョン勉強会「The PanAf-FGBG Dataset: Understanding the Impact of Backgrounds in Wildlife Behaviour Recognition」
x_ttyszk
0
190
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
360
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
290
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Building Applications with DynamoDB
mza
95
6.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Why Our Code Smells
bkeepers
PRO
336
57k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
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/
ありがとうございました!