Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20161124-wajs-fizzbuzz
Search
chikoski
November 25, 2016
Technology
0
320
20161124-wajs-fizzbuzz
FizzBuzz in JavaScript
chikoski
November 25, 2016
Tweet
Share
More Decks by chikoski
See All by chikoski
20210825_ossx
chikoski
0
320
festudy02-wasm
chikoski
1
1k
An overview of WebAssembly; how it is used, created, and applied?
chikoski
1
740
Functions in JavaScript
chikoski
1
1.2k
20171018-WASM
chikoski
2
1.4k
20171002-wejs
chikoski
1
600
20170924-html5conference-wasm
chikoski
5
10k
Equivalence_in_JS
chikoski
0
1.5k
いまさら振り返るPromise
chikoski
1
580
Other Decks in Technology
See All in Technology
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
660
Design System Documentation Tooling 2025
takanorip
2
950
Product Engineer
resilire
0
140
私のRails開発環境
yahonda
0
190
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
0
190
freeeにおけるファンクションを超えた一気通貫でのAI活用
jaxx2104
3
1.4k
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
150
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.9k
オープンデータの内製化から分かったGISデータを巡る行政の課題
naokim84
2
1.4k
その設計、 本当に価値を生んでますか?
shimomura
3
200
AI時代におけるアジャイル開発について
polyscape_inc
0
110
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
10
4.6k
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Code Review Best Practice
trishagee
73
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Automating Front-end Workflow
addyosmani
1371
200k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
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 サーバー • ✌頭の体操は楽しい!✌