LoginSignup
6
0

More than 3 years have passed since last update.

今更,GoでFizzBuzzしてから,3の付く世界でアホになる

Last updated at Posted at 2019-12-13

前置き

これはNISE (南山大学 青山研究室) Advent Calendar 2019の13日目の記事です.

昨日は,後輩の@RomuskaPaloUrLaputaがpythonのデータプロットについて書いてくれました.いや,まさかの解決策がすぐにコメントされるのはちょっと面白いw

今回は,結構今更感あるなーとか,既知感満載とかいうコメントを見なかったことにして,これから就活とかでコーディングテストがあるときの参考になればと思います.

とりあえず,FizzBuzz書いて

こんな風に面接官に言われ,自分の後ろにあるホワイトボートに立たされたあなた.

言語はなんでもいいという

さて,どんな風に書きますか??

want to do

  • とりあえず,1~10000くらいまで
  • 3の倍数ではFizz
  • 5の倍数ではbuzz
  • 15の倍数ではFizzBuzz

とまあ,わざわざ書かなくてもって感じですよねw

実装

Goで今回は実装しました.
そのコードは以下になります!

FizzBuzz.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++
    }

}

いや,こんなの誰だって,解けるわ!って普通に言われそうです.

実装結果は,こんな感じ

スクリーンショット_2019_12_13_9_13.jpg

では,ここからちょっと改良していきます

とりあえず,こちらが入力した数値までFizzbuzzしてよとする場合は.

unlimitfizzbuzz.go
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)
    }
}

はい,こんな感じ

実行結果もそんな変わらず,
スクリーンショット_2019_12_13_9_34.jpg

こんな感じかな?

まあ,大したことをしていない

んじゃあ,あの昔の芸人さんみたいに3の付く数字で,阿呆になってよ

と面接官が言ってきた

ちょっとジェネレーションギャップで,エン○の神様とか知らないとか,世界のナ○アツとか知らないとかいうことが考えられるので,
やりたいことを書いておく

want to do

  • とりあえず,1~10000くらいまで
  • 3の倍数と3の付く数字で,アホになる

実装

あー,PHPはstrposとか,Pythonはfindとかでいいんですけど,Goではそれはないんで普通に関数を定義します.

nabeatsu.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)
    }
}

出力したい言葉は各自で選んでください.

この出力結果は

スクリーンショット_2019_12_13_13_26.jpg

まとめ

結構,簡単にどの言語でも実装することが可能です.基本に帰りたい方はぜひ

6
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0