Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
逆ポーランド記法入門してみた@Kyoto.LT_21
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
geckour
August 03, 2018
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
逆ポーランド記法入門してみた@Kyoto.LT_21
geckour
August 03, 2018
More Decks by geckour
See All by geckour
Apollo on Android 悪戦苦闘話
geckour
0
190
ベクターお絵かきのススメ@Kyoto.LT#22
geckour
0
380
Other Decks in Technology
See All in Technology
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
190
CloudWatch Logsのコスト最適化:どこまでAIに任せてどこから人間が承認すべきか
yama3133
0
170
freeeにおける AI を用いた ブラウザ動作確認の自動化の取り組み
freee
PRO
0
160
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
190
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
150
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
450
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
200
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
140
Browser Spec: Testing Hotwire with Ruby
takahashim
1
160
QAエンジニアがSoutherを使ってみたの〜10分でわかるSouther〜
mhlyc
0
110
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
460
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
230
Featured
See All Featured
Mind Mapping
helmedeiros
1
400
Optimizing for Happiness
mojombo
378
71k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
450
Ethics towards AI in product and experience design
skipperchong
2
440
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Between Models and Reality
mayunak
4
500
Building AI with AI
inesmontani
PRO
1
1.3k
Why Our Code Smells
bkeepers
PRO
340
58k
New Earth Scene 8
popppiees
4
2.7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
750
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
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.