From 539745bd353fd470dffb805c5db434f8642f116a Mon Sep 17 00:00:00 2001 From: VicRen Date: Wed, 30 Sep 2020 08:23:31 +0800 Subject: [PATCH] fizz buzz --- fizzbuzz/README.md | 5 ++++ fizzbuzz/fizz_buzz_test.go | 51 ++++++++++++++++++++++++++++++++++++++ fizzbuzz/main.go | 25 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 fizzbuzz/README.md create mode 100644 fizzbuzz/fizz_buzz_test.go create mode 100644 fizzbuzz/main.go diff --git a/fizzbuzz/README.md b/fizzbuzz/README.md new file mode 100644 index 0000000..c19560a --- /dev/null +++ b/fizzbuzz/README.md @@ -0,0 +1,5 @@ +# FizzBuzz + +写一个程序,打印出从1到100的数字,将其中3的倍数替换成“Fizz”,5的倍数替换成“Buzz”。既能被3整除、又能被5整除的数则替换成“FizzBuzz”。 + +要求:每行代码都必须有单元测试覆盖。 \ No newline at end of file diff --git a/fizzbuzz/fizz_buzz_test.go b/fizzbuzz/fizz_buzz_test.go new file mode 100644 index 0000000..125aae7 --- /dev/null +++ b/fizzbuzz/fizz_buzz_test.go @@ -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) + } + }) + } +} diff --git a/fizzbuzz/main.go b/fizzbuzz/main.go new file mode 100644 index 0000000..5ca8ccf --- /dev/null +++ b/fizzbuzz/main.go @@ -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 "" +}