SlideShare a Scribd company logo
Submit Search
Upload
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Report
Taketo Sano
Follow
•
389 likes
•
29,367 views
1
of
42
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
•
389 likes
•
29,367 views
Download Now
Download to read offline
Report
Education
iOSDC 2017
Read more
Taketo Sano
Follow
Recommended
RFC 〜 ネットワーク勉強会
Ken SASAKI
3.6K views
•
36 slides
とある脆弱性の永い議論
Mtikutea
6.4K views
•
35 slides
Leaning random using Boost Random
Akira Takahashi
6.2K views
•
60 slides
競技プログラミングでの線型方程式系
tmaehara
6.5K views
•
11 slides
Cache-Oblivious データ構造入門 @DSIRNLP#5
Takuya Akiba
17.5K views
•
54 slides
Java8でRDBMS作ったよ
なおき きしだ
16.1K views
•
37 slides
More Related Content
What's hot
x86x64 SSE4.2 POPCNT
takesako
8.9K views
•
30 slides
明日使えないすごいビット演算
京大 マイコンクラブ
63.4K views
•
60 slides
エンジニアのキャリアパスを考える 篠宮
wakamonog
2.8K views
•
12 slides
基本に戻ってInnoDBの話をします
yoku0825
16.3K views
•
45 slides
PHP と SAPI と ZendEngine3 と
do_aki
16.1K views
•
95 slides
Visual C++で使えるC++11
nekko1119
36.8K views
•
96 slides
What's hot
(20)
x86x64 SSE4.2 POPCNT
takesako
•
8.9K views
明日使えないすごいビット演算
京大 マイコンクラブ
•
63.4K views
エンジニアのキャリアパスを考える 篠宮
wakamonog
•
2.8K views
基本に戻ってInnoDBの話をします
yoku0825
•
16.3K views
PHP と SAPI と ZendEngine3 と
do_aki
•
16.1K views
Visual C++で使えるC++11
nekko1119
•
36.8K views
関数型プログラミング入門 with OCaml
Haruka Oikawa
•
12.4K views
C言語ポインタ講座 (Lecture of Pointer in C)
kakira9618
•
1.9K views
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
masayoshi takahashi
•
9.5K views
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
MicroAd, Inc.(Engineer)
•
144 views
WikipediaからのSolr用類義語辞書の自動生成
Koji Sekiguchi
•
12.6K views
私とOSSの25年
MITSUNARI Shigeo
•
11.9K views
Im workflow説明資料(patch01対応)
NTTDATA intra-mart
•
4.9K views
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
•
6.2K views
正規表現と正規言語
Hideaki Miyake
•
401 views
これから Haskell を書くにあたって
Tsuyoshi Matsudate
•
5.8K views
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
K Kinzal
•
967 views
Q4.11: Using GCC Auto-Vectorizer
Linaro
•
13.5K views
文字列アルゴリズム
HCPC: 北海道大学競技プログラミングサークル
•
7.1K views
ベクトルで理解する相関係数
Satoshi MATSUURA
•
23K views
Similar to Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Cocoaheads Meetup / Alex Zimin / Swift magic
Badoo Development
6.7K views
•
55 slides
Александр Зимин (Alexander Zimin) — Магия Swift
CocoaHeads
652 views
•
55 slides
oop objects_classes
sidra tauseef
390 views
•
20 slides
Functional Programming In Java
Andrei Solntsev
3.5K views
•
39 slides
function in c
subam3
132 views
•
31 slides
functions
Makwana Bhavesh
243 views
•
28 slides
Similar to Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
(20)
Cocoaheads Meetup / Alex Zimin / Swift magic
Badoo Development
•
6.7K views
Александр Зимин (Alexander Zimin) — Магия Swift
CocoaHeads
•
652 views
oop objects_classes
sidra tauseef
•
390 views
Functional Programming In Java
Andrei Solntsev
•
3.5K views
function in c
subam3
•
132 views
functions
Makwana Bhavesh
•
243 views
Hive Functions Cheat Sheet
Hortonworks
•
9.3K views
Wien15 java8
Jaanus Pöial
•
282 views
Inheritance compiler support
Syed Zaid Irshad
•
74 views
All Aboard The Scala-to-PureScript Express!
John De Goes
•
1.8K views
Mastering Kotlin Standard Library
Nelson Glauber Leal
•
547 views
Un dsl pour ma base de données
Romain Lecomte
•
257 views
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
Akaks
•
5 views
Lego: A brick system build by scala
lunfu zhong
•
1.2K views
Oop objects_classes
sidra tauseef
•
903 views
Kotlin For Android - Functions (part 3 of 7)
Gesh Markov
•
140 views
Virtual function in C++ Pure Virtual Function
Kamlesh Makvana
•
3.6K views
Делаем пользовательское Api на базе Shapeless
Вадим Челышов
•
122 views
TI1220 Lecture 6: First-class Functions
Eelco Visser
•
1.1K views
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Ruslan Shevchenko
•
698 views
More from Taketo Sano
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Taketo Sano
1.1K views
•
52 slides
トポロジーと圏論の夜明け
Taketo Sano
3.4K views
•
81 slides
Swift で数学研究のススメ
Taketo Sano
1.4K views
•
33 slides
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
Taketo Sano
3.8K views
•
76 slides
特性類の気持ち
Taketo Sano
3.9K views
•
42 slides
山手線は丸いのか?プログラマのためのトポロジー入門
Taketo Sano
24K views
•
67 slides
More from Taketo Sano
(20)
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Taketo Sano
•
1.1K views
トポロジーと圏論の夜明け
Taketo Sano
•
3.4K views
Swift で数学研究のススメ
Taketo Sano
•
1.4K views
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
Taketo Sano
•
3.8K views
特性類の気持ち
Taketo Sano
•
3.9K views
山手線は丸いのか?プログラマのためのトポロジー入門
Taketo Sano
•
24K views
何もないところから数を作る
Taketo Sano
•
4.8K views
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
Taketo Sano
•
4.5K views
情報幾何学 #2.4
Taketo Sano
•
2K views
情報幾何学 #2 #infogeo16
Taketo Sano
•
2.2K views
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
•
7.6K views
何もないところから数を作る
Taketo Sano
•
9.5K views
objc2swift (続・自動変換の野望)
Taketo Sano
•
4.3K views
さらに上を目指すための iOS アプリ設計
Taketo Sano
•
30.9K views
基底変換、固有値・固有ベクトル、そしてその先
Taketo Sano
•
31.4K views
objc2swift (自動変換の野望)
Taketo Sano
•
6.6K views
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Taketo Sano
•
57.3K views
2015 02-18 xxx-literalconvertible
Taketo Sano
•
3.8K views
let UIWebView as WKWebView
Taketo Sano
•
29.5K views
プログラマのための線形代数再入門
Taketo Sano
•
53.9K views
Recently uploaded
Chemistry of sex hormones.pptx
RAJ K. MAURYA
97 views
•
38 slides
Narration ppt.pptx
Tariq KHAN
62 views
•
24 slides
Structure and Functions of Cell.pdf
Nithya Murugan
142 views
•
10 slides
CWP_23995_2013_17_11_2023_FINAL_ORDER.pdf
SukhwinderSingh895865
467 views
•
6 slides
Psychology KS4
WestHatch
52 views
•
4 slides
Plastic waste.pdf
alqaseedae
81 views
•
5 slides
Recently uploaded
(20)
Chemistry of sex hormones.pptx
RAJ K. MAURYA
•
97 views
Narration ppt.pptx
Tariq KHAN
•
62 views
Structure and Functions of Cell.pdf
Nithya Murugan
•
142 views
CWP_23995_2013_17_11_2023_FINAL_ORDER.pdf
SukhwinderSingh895865
•
467 views
Psychology KS4
WestHatch
•
52 views
Plastic waste.pdf
alqaseedae
•
81 views
Gopal Chakraborty Memorial Quiz 2.0 Prelims.pptx
Debapriya Chakraborty
•
221 views
ACTIVITY BOOK key water sports.pptx
Mar Caston Palacio
•
132 views
Class 10 English lesson plans
Tariq KHAN
•
172 views
Azure DevOps Pipeline setup for Mule APIs #36
MysoreMuleSoftMeetup
•
75 views
Education and Diversity.pptx
DrHafizKosar
•
56 views
Compare the flora and fauna of Kerala and Chhattisgarh ( Charttabulation)
AnshulDewangan3
•
95 views
GSoC 2024
DeveloperStudentClub10
•
49 views
ANATOMY AND PHYSIOLOGY UNIT 1 { PART-1}
DR .PALLAVI PATHANIA
•
156 views
Nico Baumbach IMR Media Component
InMediaRes1
•
186 views
NS3 Unit 2 Life processes of animals.pptx
manuelaromero2013
•
89 views
discussion post.pdf
jessemercerail
•
70 views
Community-led Open Access Publishing webinar.pptx
Jisc
•
49 views
Women from Hackney’s History: Stoke Newington by Sue Doe
History of Stoke Newington
•
103 views
Use of Probiotics in Aquaculture.pptx
AKSHAY MANDAL
•
69 views
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
17.
protocol AdditiveGroup {
// static var zero: Self { get } // static func + (a: Self, b: Self) -> Self // prefix static func - (x: Self) -> Self // } extension AdditiveGroup { static func -(a: Self, b: Self) -> Self { return (a + (-b)) // } }
18.
protocol AdditiveGroup {
// … } protocol Ring: AdditiveGroup { // static var identity: Self { get } // 1 static func * (a: Self, b: Self) -> Self // var inverse: Self? { get } // (optional) }
19.
protocol AdditiveGroup {
// … } protocol Ring: AdditiveGroup { // … } protocol Field: Ring {} // extension Field { static func / (a: Self, b: Self) -> Self { // return a * b.inverse! // 0 } }
20.
extension Int: Ring
{ // Int static var zero: Int { return 0 } static var identity: Int { return 1 } } // Int
21.
struct Rational: Field
{ // private let p, q: Int init(_ p: Int, _ q: Int) { (self.p, self.q) = (p, q) } static var zero: Int { return Rational(0, 1) } static var identity: Int { return Rational(1, 1) } var inverse: Rational? { // return (p != 0) ? Rational(q, p) : nil } …
22.
struct Rational: Field
{ … static func + (a: Rational, b: Rational) -> Rational { return Rational(a.p * b.q + a.q * b.p, a.q * b.q) } static prefix func - (a: Rational) -> Rational { return Rational(-a.p, a.q) } static func * (a: Rational, b: Rational) -> Rational { return Rational(a.p * b.p, a.q * b.q) } }
27.
protocol EuclideanRing: Ring
{ // static func eucDiv(_ a: Self, _ b: Self) -> (q: Self, r: Self) // } extension EuclideanRing { static func % (_ a: Self, b: Self) -> Self { // return Self.eucDiv(a, b).r } }
28.
extension Int: EuclideanRing
{ // Int EuclideanRing static func eucDiv(_ a: Int, _ b: Int) -> (q: Int, r: Int) { // let q = a / b return (q: q, r: a - q * b) } }
29.
struct Polynomial<K: Field>:
EuclideanRing { public let coeffs: [K] public init(_ coeffs: K...) { self.coeffs = coeffs } public static func + (f: Polynomial<K>, g: Polynomial<K>) -> Polynomial<K> { return Polynomial<K>(degree: max(f.degree, g.degree)) { f.coeff($0) + g.coeff($0) } } public static prefix func - (f: Polynomial<K>) -> Polynomial<K> { return f.map { -$0 } } public static func * (f: Polynomial<K>, g: Polynomial<K>) -> Polynomial<K> { … } …
30.
struct Polynomial<K: Field>:
EuclideanRing { … static func eucDiv<K: Field>(_ f: Polynomial<K>, _ g: Polynomial<K>) -> (q: Polynomial<K>, r: Polynomial<K>) { return (0 ... max(0, f.degree - g.degree)) .reversed() .reduce( (0, f) ) { (result: (Polynomial<K>, Polynomial<K>), degree: Int) in let (q, r) = result let m = eucDivMonomial(r, g) return (q + m.q, m.r) } } }
31.
public func gcd<R:
EuclideanRing>(_ a: R, _ b: R) -> R { switch b { case 0: return a default: return gcd(b, a % b) } }
34.
let a =
sqrt(2.0) // 1.41421356… a * a == 2.0 // false