前置き
これはNISE (南山大学 青山研究室) Advent Calendar 2019の13日目の記事です.
昨日は,後輩の@RomuskaPaloUrLaputaがpythonのデータプロットについて書いてくれました.いや,まさかの解決策がすぐにコメントされるのはちょっと面白いw
今回は,結構今更感あるなーとか,既知感満載とかいうコメントを見なかったことにして,これから就活とかでコーディングテストがあるときの参考になればと思います.
とりあえず,FizzBuzz書いて
こんな風に面接官に言われ,自分の後ろにあるホワイトボートに立たされたあなた.
言語はなんでもいいという
さて,どんな風に書きますか??
want to do
- とりあえず,1~10000くらいまで
- 3の倍数ではFizz
- 5の倍数ではbuzz
- 15の倍数ではFizzBuzz
とまあ,わざわざ書かなくてもって感じですよねw
実装
Goで今回は実装しました.
そのコードは以下になります!
package main
import (
"fmt"
)
func main() {
i := 1
for i < 10001 {
if i%15 == 0 {
fmt.Println("FizzBuzz")
} else if i%3 == 0 {
fmt.Println("Fiz")
} else if i%5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
i++
}
}
いや,こんなの誰だって,解けるわ!って普通に言われそうです.
実装結果は,こんな感じ
では,ここからちょっと改良していきます
とりあえず,こちらが入力した数値までFizzbuzzしてよとする場合は.
package main
import (
"fmt"
)
func main() {
fmt.Print("いつまでFizzBuzzをやらせるんだね!?: ")
var input int
fmt.Scanf("%d", &input)
for i := 1; i <= input; i++ {
fizzbuzz(i)
}
}
func fizzbuzz(i int) {
if i%15 == 0 {
fmt.Println("FizzBuzz")
} else if i%3 == 0 {
fmt.Println("Fiz")
} else if i%5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
}
はい,こんな感じ
こんな感じかな?
まあ,大したことをしていない
んじゃあ,あの昔の芸人さんみたいに3の付く数字で,阿呆になってよ
と面接官が言ってきた
ちょっとジェネレーションギャップで,エン○の神様とか知らないとか,世界のナ○アツとか知らないとかいうことが考えられるので,
やりたいことを書いておく
want to do
- とりあえず,1~10000くらいまで
- 3の倍数と3の付く数字で,アホになる
実装
あー,PHPはstrposとか,Pythonはfindとかでいいんですけど,Goではそれはないんで普通に関数を定義します.
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Print("いつまでFizzBuzzをやらせるんだね!?: ")
var input int
fmt.Scanf("%d", &input)
for i := 1; i <= input; i++ {
nabeatsu(i)
}
}
func is_aho(i int) bool {
var strInt = strconv.Itoa(i)
for k := 0; k < len([]rune(strInt)); k++ {
if '3' == strInt[k] {
return true
}
}
return false
}
func nabeatsu(i int) {
sanbai := "3の倍数"
santsuku := "3野付く数字"
if is_aho(i) && i%3 == 0 {
fmt.Println(i, sanbai+" "+santsuku)
} else if is_aho(i) {
fmt.Println(i, santsuku)
} else if i%3 == 0 {
fmt.Println(i, sanbai)
} else {
fmt.Println(i)
}
}
出力したい言葉は各自で選んでください.
この出力結果は
まとめ
結構,簡単にどの言語でも実装することが可能です.基本に帰りたい方はぜひ