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
20161124-wajs-fizzbuzz
Search
chikoski
November 25, 2016
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20161124-wajs-fizzbuzz
FizzBuzz in JavaScript
chikoski
November 25, 2016
More Decks by chikoski
See All by chikoski
20210825_ossx
chikoski
0
360
festudy02-wasm
chikoski
1
1.1k
An overview of WebAssembly; how it is used, created, and applied?
chikoski
1
800
Functions in JavaScript
chikoski
1
1.3k
20171018-WASM
chikoski
2
1.5k
20171002-wejs
chikoski
1
630
20170924-html5conference-wasm
chikoski
5
10k
Equivalence_in_JS
chikoski
0
1.6k
いまさら振り返るPromise
chikoski
1
630
Other Decks in Technology
See All in Technology
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
710
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
420
Loop Engineering, beyond prompt, context, and harness engineering
glaforge
0
100
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
180
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
360
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
370
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
200
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
430
その Valkey 使いこなしていますか?
onk
PRO
3
300
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
120
DGX Spark でどこまでハッキングができるのか?
kash1064
1
1.2k
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
190
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Skip the Path - Find Your Career Trail
mkilby
1
250
Design in an AI World
tapps
1
350
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Making the Leap to Tech Lead
cromwellryan
135
10k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Building Applications with DynamoDB
mza
96
7.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Transcript
JavaScript を勉強するために最初にやったこと N. Shimizu (
[email protected]
) We are JavaScripters@1st (2016/11/24)
/4IJNJ[V!DIJLPTLJ ˖ 傈劤〷̔04̔فؚٗٓىؚٝ鎉铂 ˖ ⛆加㖩ח֮8FC⡲⠓爡ד⫴ְגְתׅ ˖ 'JSFGPY 'JSFGPYGPSJ04 %FW5PPMT ˖
3VTUBTNKT8FC"TTFNCMZ8FC73(BNJOH ˖ فؚٗٓىؚٝ鎉铂ה؟حؕ٦鋅ךָ㥨ֹדׅ ˖ 㘗ך䓼ְ鎉铂ָ㥨ֹדׅ ˖ IUUQTTQFBLFSEFDLDPNDIJLPTLJ
'J[[#V[[
FizzBuzz 問題 • 3 の倍数:Fizzと出力する • 5の倍数:Buzzと出力する • 3の倍数で、しかも5の倍数の場合:FizzBuzzと出力する •
それ以外:数値そのものを出力する 'J[[ #V[[ 'J[[ #V[[ ˘ ˘
JS GPS MFUJJJ \ JG JJ \ DPOTPMFMPH 'J[[#V[[
^FMTFJG J \ DPOTPMFMPH 'J[[ ^FMTFJG J \ DPOTPMFMPH #V[[ ^FMTF\ DPOTPMFMPH J ^ ^ シンプルなFizzBuzzの実装
JS DPOTUB<
> DPOTUTFRBNBQ GJ[[CV[[ DPOTPMFMPH TFRKPJO =O GVODUJPOGJ[[CV[[ O \ JG OO \ SFUVSO'J[[#V[[ ^FMTFJG O \ SFUVSO'J[[ ^FMTFJG O \ SFUVSO#V[[ ^FMTF\ SFUVSO O ^ ^ 関数プログラミング的なFizzBuzz実装
map:配列のひとつひとつの要素に関数を適用して新しい配列を作る
'J[[ #V[[ 'J[[ #V[[ ˘ ˘
ペアノの公理:自然数の定義 • ジュゼッペ・ペアノ(1858-1932)によって定義された自然数の定義 (1891) • 自然数は次の条件を満たす • 自然数0が存在する • 任意の自然数
a には、その後者 suc(a) が存在する • 0はいかなる自然数の後者ではない • 異なる自然数は、異なる後者を持つ • 0がある性質を満たし、a がある性質を満たせば suc(a) もまたその性質を満 たす時、全ての自然数はその性質を満たす IUUQTKBXJLJQFEJBPSHXJLJآُئحل٥ل،ظ
自然数の構造:はじまりの町と、つぎの町 • スタート地点と、次の地点への移動で定義されるもののことを「自然数」と呼びました • 0:スタート地点 • 後者関数suc: 次の地点への移動 • 線形リストと同じ構造を持ちます
TVD TVD TVD TVD
JS DMBTT1FBOP\ DPOTUSVDUPS QSFW \ UIJTQSFWQSFW ^ TVD \ SFUVSOOFX1FBOP
UIJT ^ ^ 1FBOP@[FSPOFX1FBOP OVMM 1FBOP[FSPGVODUJPO \ SFUVSO1FBOP@[FSP ^ DPOTU[FSP1FBOP[FSP DPOTUPOF[FSPTVD DPOTUUXPPOFTVD DPOTUGPVSUXPTVD TVD 自然数の実装
JS 1FBOPQSPUPUZQFUP@JGVODUJPO \ SFUVSOUIJTQSFW UIJTQSFWUP@J ^ 1FBOPQSPUPUZQFUP4USJOH
GVODJUPO \ SFUVSOUIJTUP@J ^ DPOTUUXP 1FBOP[FSP TVD TVD DPOTPMFMPH UXPUP@J 数値や文字列への変換用メソッドを追加
JS 1FBOPSBOHFGVODUJPO O \ MFUSFU<1FBOP[FSP > GPS MFUUNQ1FBOP[FSP OO
\ UNQUNQTVD SFUQVTI UNQ ^ SFUVSOSFU ^ 1FBOPDSFBUFGVODUJPO O \ MFUS1FBOPSBOHF O SFUVSOSQPQ ^ 範囲や、即値からの作成
JS DPOTUUFYU1FBOPSBOHF NBQ JJUP@J NBQ GJ[[CV[[
KPJO =O DPOTPMFMPH UFYU GVODUJPOGJ[[CV[[ O \ MFUMBCFM JG O \MBCFM 'J[[^ JG O \MBCFM #V[[^ JG MBCFMMFOHUI \ MBCFM O ^ SFUVSOMBCFM ^ FizzBuzz
まとめ:FizzBuzz だけでも奥が深い • 単純に書くだけでもいいけど、工夫するとさらに楽しい! • 順番に出力するだけで満足しててもいいけど • 関数的に書いて見る、クラスを作る • もっとできます
• イテレーター / ジェネレーターにしてみる • リアクティブプログラミング • 並列プログラミング • FizzBuzz サーバー • ✌頭の体操は楽しい!✌