mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-30 16:28:45 +01:00
fizz buzz
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
# FizzBuzz
|
||||||
|
|
||||||
|
写一个程序,打印出从1到100的数字,将其中3的倍数替换成“Fizz”,5的倍数替换成“Buzz”。既能被3整除、又能被5整除的数则替换成“FizzBuzz”。
|
||||||
|
|
||||||
|
要求:每行代码都必须有单元测试覆盖。
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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