FizzBuzz を実装しました。
ただ、それだけだとつまらないので、その派生である世界のナベアツ氏の「3 の倍数だけアホになる」を実装しました。
- 3 の倍数または 3 が付く → アホになる
- 5 の倍数 → 犬になる
- 3 の倍数または 3 が付く、かつ 5 の倍数の時 → アホな犬になる
30 に入った時の怒涛のたたみかけが好きです。
https://fizzbuzz.ushibutatory.net/
- API
- .NET
- AWS Lambda + API Gateway
- UI
- Next.js
- Vercel
- Route53
# NabeAtsu.App.exe run -?
Usage: NabeAtsu.App run [arguments] [options]
Arguments:
start 開始する数値
count 数える数
Options:
-?|-h|--help Show help information
# NabeAtsu.App.exe run 1 15
1
2
さぁん
4
わん!U^ェ^U
ろぉく
7
8
きゅう
わん!U^ェ^U
11
じゅうにぃ
じゅうさぁん
14
わおーーーーーーーん!U゜ェ。U
# NabeAtsu.App.exe run 1000000001 15
1000000001
じゅうおくにぃ
じゅうおくさぁん
1000000004
わおーーーーーーーん!U゜ェ。U
1000000006
1000000007
じゅうおくはぁち
1000000009
わん!U^ェ^U
じゅうおくじゅういち
1000000012
じゅうおくじゅうさぁん
じゅうおくじゅうよぉん
わん!U^ェ^U
- 具体的には、GoF の State パターンを流用しました。
- 例: 「アホ State」「犬 State」など
- 「アホな犬 State」のような、複合条件をどう定義するかに悩みました。
- 内部的に「アホ State」「犬 State」を保持し、すべてに該当するかどうかでチェックするようにしました。
- このへんはもうちょっと改善の余地がありそうです。
- 例: 6。同じ「6」でも、位によって発音が異なる。
- 60 → ろくじゅう
- 600 → ろっぴゃく
- 例: 100。同じ「100」でも、位の数値によって発音が異なる。
- 100 → ひゃく
- 300 → さんびゃく
- 600 → ろっぴゃく
- 実装としては、ひたすらパターンマッチで対応しています。
真面目に作ろうとすると個人によって色んな設計案・実装案が出てくると思います。なので、新人研修の課題等にすると面白そうだと感じました。