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
0
340
逆ポーランド記法入門してみた@Kyoto.LT_21
geckour
August 03, 2018
Tweet
Share
More Decks by geckour
See All by geckour
Apollo on Android 悪戦苦闘話
geckour
0
170
ベクターお絵かきのススメ@Kyoto.LT#22
geckour
0
360
Other Decks in Technology
See All in Technology
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
240
Claude Skillsの テスト業務での活用事例
moritamasami
1
120
202512_AIoT.pdf
iotcomjpadmin
0
160
AI との良い付き合い方を僕らは誰も知らない
asei
1
300
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
2
660
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
1
120
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
190
Keynoteから見るAWSの頭の中
nrinetcom
PRO
1
110
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
250
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
2.1k
Claude Codeを使った情報整理術
knishioka
15
11k
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
160
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
720
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
98
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.2k
Context Engineering - Making Every Token Count
addyosmani
9
560
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
84
Crafting Experiences
bethany
0
24
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.