Help us understand the problem. What is going on with this article?

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

前置き

これは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

まとめ

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away