mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-24 22:44:44 +01:00
fizz buzz
This commit is contained in:
5
fizzbuzz/README.md
Normal file
5
fizzbuzz/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# FizzBuzz
|
||||
|
||||
写一个程序,打印出从1到100的数字,将其中3的倍数替换成“Fizz”,5的倍数替换成“Buzz”。既能被3整除、又能被5整除的数则替换成“FizzBuzz”。
|
||||
|
||||
要求:每行代码都必须有单元测试覆盖。
|
||||
51
fizzbuzz/fizz_buzz_test.go
Normal file
51
fizzbuzz/fizz_buzz_test.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestFizzBuzz(t *testing.T) {
|
||||
tt := []struct {
|
||||
name string
|
||||
input int
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"case 1",
|
||||
1,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"case 3",
|
||||
3,
|
||||
"Fizz",
|
||||
},
|
||||
{
|
||||
"case 5",
|
||||
5,
|
||||
"Buzz",
|
||||
},
|
||||
{
|
||||
"case 6",
|
||||
6,
|
||||
"Fizz",
|
||||
},
|
||||
{
|
||||
"case 10",
|
||||
10,
|
||||
"Buzz",
|
||||
},
|
||||
{
|
||||
"case 15",
|
||||
15,
|
||||
"FizzBuzz",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
got := FizzBuzz(tc.input)
|
||||
if got != tc.want {
|
||||
t.Errorf("FizzBuzz(%d)=%s, want %s", tc.input, got, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
25
fizzbuzz/main.go
Normal file
25
fizzbuzz/main.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
for i := 1; i <= 100; i++ {
|
||||
fb := FizzBuzz(i)
|
||||
if fb == "" {
|
||||
fmt.Println(i)
|
||||
continue
|
||||
}
|
||||
fmt.Println(fb)
|
||||
}
|
||||
}
|
||||
|
||||
func FizzBuzz(n int) string {
|
||||
if n%3 == 0 && n%5 == 0 {
|
||||
return "FizzBuzz"
|
||||
} else if n%3 == 0 {
|
||||
return "Fizz"
|
||||
} else if n%5 == 0 {
|
||||
return "Buzz"
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user