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
ノンプログラマのための ~アルゴリズムパズル プログラマのための数学パズル入門~
Search
ねも
November 21, 2023
0
85
ノンプログラマのための ~アルゴリズムパズル プログラマのための数学パズル入門~
ねも
November 21, 2023
Tweet
Share
More Decks by ねも
See All by ねも
Compose Multiplatform for iOS開発でぶつかった壁
kohei_inoue
0
1.7k
ノンデザイナーズ・デザインブックを読んだので名刺作ってみた
kohei_inoue
0
94
Compose Multiplatform for iOSで音声再生しようぜ!!
kohei_inoue
0
340
夏 × Jetpack Compose
kohei_inoue
0
87
Compose for iOS for ZOZOTOWN
kohei_inoue
0
1.7k
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
400
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
We Have a Design System, Now What?
morganepeng
54
8k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
53
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
440
Faster Mobile Websites
deanohume
310
31k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Context Engineering - Making Every Token Count
addyosmani
9
670
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
Transcript
ノンプログラマに向けた アルゴリズムパズル プログラマのための数学パズル入門 X: https://twitter.com/nemo_855 GitHub: https://github.com/nemo-855 Qiita: https://qiita.com/nemo-855 Android
エンジニア Ҫ্ ߊฏ Ͷ
井上晃平 #times-nemo @nemo_855 Xでフォローお願いします🙏 • ねも • 株式会社ZOZO • Androidアプリエンジニア
• 友達の影響でめちゃくちゃ海外旅行に行きたい
None
第2章 第43問より n個の異なる整数と、間に不等号が挿入され一列に並んだn個の箱が与え られている。それらの不等号を満たすように数を配置するには?
第2章 第43問より n個の異なる整数と、間に不等号が挿入され一列に並んだn個の箱が与え られている。それらの不等号を満たすように数を配置するには? 🧐
😀 どゆこと?? 例えばn = 4 で 5, 3, 7, 4と◻<◻>◻<◻が与えられたとすると、、、
3 < 4 > 4 < 5, 4 < 7 > 3 < 5, 3 < 5 > 4 < 7, 4 < 5 > 3 < 7, は全て答えである
😀 もう少し実験してみる n = 4 で 5, 3, 7, 4と◻<◻<◻>◻が与えられたとすると、、、
3 < 4 < 7 > 5, 4 < 3 < 7 > 5, が答え n = 5 で 5, 3, 7, 4, 2と◻<◻<◻<◻>◻が与えられたとすると、、、 2 < 3 < 4 < 7 > 5, 2 < 4 < 3 < 7 > 5, が答え
😀 もう少し実験してみる n = 4 で 5, 3, 7, 4と◻<◻<◻>◻が与えられたとすると、、、
3 < 4 < 7 > 5, 4 < 3 < 7 > 5, が答え n = 5 で 5, 3, 7, 4, 2と◻<◻<◻<◻>◻が与えられたとすると、、、 2 < 3 < 4 < 7 > 5, 2 < 4 < 3 < 7 > 5, が答え
😀 なぜこうなるのか パターンA: n = 4 で 5, 3, 7,
4と◻<◻<◻>◻が与えられたとすると、、、 パターンB: n = 5 で 5, 3, 7, 4, 2と◻<◻<◻<◻>◻が与えられたとすると、、、 パターンBの点線部分を隠すと2つは同じ問題!!
😀 この結果からわかること この問題は、 一番左の不等号が < であるときは左端の◻ < と与整数の最小値、 一番左の不等号が >
であるときは左端の◻ > と与整数の最大値、 を取り除いた部分問題と同一視して考えることができる
😀 答え 左端から順に、 ◻ < ならば現時点の最小値を入れる、 ◻ > ならば現時点の最大値を入れる、 という操作をn-1回繰り返せば必ず答えを一つ見つけ出せる
💻 紹介されているアルゴリズム 大きいものを小さくする ◦ 縮小統治法 ◦ 分割統治法 小さなものを大きくしていく ◦ 貪欲アプローチ
部分問題の解を再利用する ◦ 動的計画法 全部探す ◦ 全数探索 ◦ バックトラック あたりをつけてから考える ◦ 逐次改善法 言い換える ◦ 変換統治法
💻 紹介されているアルゴリズム 大きいものを小さくする ◦ 縮小統治法 ◦ 分割統治法 小さなものを大きくしていく ◦ 貪欲アプローチ
部分問題の解を再利用する ◦ 動的計画法 全部探す ◦ 全数探索 ◦ バックトラック あたりをつけてから考える ◦ 逐次改善法 言い換える ◦ 変換統治法
😀 この本の読み方 1章: チュートリアル(30ページほど) 2章: クイズ集(初級50問、中級60問、上級40問) 3章: ヒント 4章: 解答解説
のようになっている。サクッとチュートリアルを 読んだ後は、 暇な時にクイズを解く! 考えてもわからなかったらヒントを見る! それでもわからなかったら解説を読む! → 面白い!!
プログラミングはできなくとも、 アルゴリズムを使ってクイズを解いていくことができる 🎊 エンジニアでない人にこそ読んで見て欲しい!
📕 参考文献 O'Reilly Japan - アルゴリズムパズル (oreilly.co.jp)
終わり!