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
20161124-wajs-fizzbuzz
Search
chikoski
November 25, 2016
Technology
0
330
20161124-wajs-fizzbuzz
FizzBuzz in JavaScript
chikoski
November 25, 2016
Tweet
Share
More Decks by chikoski
See All by chikoski
20210825_ossx
chikoski
0
330
festudy02-wasm
chikoski
1
1k
An overview of WebAssembly; how it is used, created, and applied?
chikoski
1
750
Functions in JavaScript
chikoski
1
1.2k
20171018-WASM
chikoski
2
1.4k
20171002-wejs
chikoski
1
610
20170924-html5conference-wasm
chikoski
5
10k
Equivalence_in_JS
chikoski
0
1.5k
いまさら振り返るPromise
chikoski
1
590
Other Decks in Technology
See All in Technology
Mosaic AI Gatewayでコーディングエージェントを配るための運用Tips / JEDAI 2026 新春 Meetup! AIコーディング特集
genda
0
150
プロポーザルに込める段取り八分
shoheimitani
0
160
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
310
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
73k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
200
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.1k
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
160
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
1
180
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.5k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
190
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.3k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
390
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Designing for Performance
lara
610
70k
Designing for humans not robots
tammielis
254
26k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Faster Mobile Websites
deanohume
310
31k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
WENDY [Excerpt]
tessaabrams
9
36k
Why Our Code Smells
bkeepers
PRO
340
58k
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 サーバー • ✌頭の体操は楽しい!✌