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
逆ポーランド記法入門してみた@Kyoto.LT_21
Search
geckour
August 03, 2018
Technology
350
0
Share
逆ポーランド記法入門してみた@Kyoto.LT_21
geckour
August 03, 2018
More Decks by geckour
See All by geckour
Apollo on Android 悪戦苦闘話
geckour
0
180
ベクターお絵かきのススメ@Kyoto.LT#22
geckour
0
370
Other Decks in Technology
See All in Technology
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
1
360
Gaussian Splattingの表現力を拡張する — 高周波再構成とインタラクションへのアプローチ —
gpuunite_official
0
130
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1.3k
セキュリティ対策、何からはじめる? CloudNative環境の脅威モデリングと リスク評価実践入門 #cloudnativekaigi
varu3
5
750
2026年春のAgentCoreアプデ 細かいやつ全部まとめ
minorun365
3
220
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
160
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
3
350
CyberAgent YJC Connect
shimaf4979
1
180
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
200
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.2k
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
220
The 7 pitfalls of AI
ufried
0
200
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
300
Agile that works and the tools we love
rasmusluckow
331
21k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
Building the Perfect Custom Keyboard
takai
2
750
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
180
The untapped power of vector embeddings
frankvandijk
2
1.7k
Transcript
逆ポーランド記法入門してみた 2018/08/03 Kyoto.LT#21 石田 智宏 / geckour (フリーター a.k.a. インターン)
自己紹介 • 石田 智宏 (ISHIDA Tomohiro) a.k.a. セロリン • モラトリアム終了間際
(Androidアプリインターン) • 数学とかアルゴリズムとか苦手
そうだ、電卓作ろう • ToDoアプリと並ぶ試作アプリ代表格、電卓 (ソースはない) • ちゃちゃっと簡単に作れそう
そうだ、電卓作ろう • ToDoアプリと並ぶ試作アプリ代表格、電卓 (ソースはない) • ちゃちゃっと簡単に作れそう • 油断するとすぐ複雑化するレイアウト • やっぱ数式入力して計算させたい
• 数式解析のためのアルゴリズムが登場
そうだ、電卓作ろう • 意外とめんどくさいのでは…? • 少しでも楽したい!
ところで RPNって知ってますか?
RPN (逆ポーランド記法) "逆ポーランド記法(ぎゃくポーランドきほう、英語: Reverse Polish Notation, RPN) は、数式やプログラムの記法の一種。演算子を被演算子の後にすることから、 後置記法 (Postfix
Notation) とも言う。" (Wikipedia)
RPN (逆ポーランド記法) "逆ポーランド記法(ぎゃくポーランドきほう、英語: Reverse Polish Notation, RPN) は、数式やプログラムの記法の一種。演算子を被演算子の後にすることから、 後置記法 (Postfix
Notation) とも言う。" (Wikipedia) • 訳:コンピュータで扱いやすい数式とかの記法だよ • 例:(2 + 5) * (13 * 4) → 2 5 + 13 4 + * • なんか良さそう!
やってみようRPN • まずはRPN変換器を作るよ ◦ 式を要素毎に分割してリストを作成 ▪ 例:5 + 2 *
3 → [5, +, 2, *, 3] ◦ 式の要素の重み (優先順位) を決める ▪ 例:数字 → 0 *, / → 1 +, - → 2
やってみようRPN • まずはRPN変換器を作るよ ◦ 重みに応じて並べ替え (スタックを利用する) ▪ 括弧は特別 • 右括弧が出てきたらスタックから左括弧を探す
• 見つかった左括弧から右括弧で挟まれる要素を全てスタックに追加 ▪ スタックのトップと今の要素の重みを比較 • スタックのトップの方が優先度高 → スタックからポップして結果リストに追加 • 今の要素の方が優先度高 → 今の要素をスタックに追加 ▪ 式リストの要素全てに繰り返す ▪ 最後にスタックの内容を逆順で全て結果リストに追加
やってみようRPN • まずはRPN変換器を作るよ ◦ あれ、結局めんどくさくね …?
やってみようRPN • 次にRPN解析器(計算機)を作るよ ◦ さっき作ったリストを順番に回していく ◦ スタックを利用する ▪ 数値 •
問答無用でスタックにプッシュ ▪ その他演算子 • 演算に必要な数値の数だけスタックからポップ • 演算実行 • 演算結果をスタックにプッシュ
やってみようRPN • 次にRPN解析器(計算機)を作るよ ◦ こっちは単純明快だった!
DEMO
まとめ • RPN、書いてしまえば計算簡単 • 書く (変換する) のは結構頭使う • シンプルな分拡張性は高い •
要素の構造化で複雑な計算にも対応可
Fin.