From c9d9d68c68bc1587da4472ffc61849188e46e352 Mon Sep 17 00:00:00 2001 From: mzg <5487654@qq.com> Date: Tue, 16 Aug 2022 06:17:07 +0800 Subject: [PATCH] add fizzbuzz example --- .../1.fizzbuzz/config.json" | 10 +++ .../1.fizzbuzz/fizzbuzz.json" | 7 ++ .../1.fizzbuzz/fizzbuzz.md" | 82 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 "data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/config.json" create mode 100644 "data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.json" create mode 100644 "data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.md" diff --git "a/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/config.json" "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/config.json" new file mode 100644 index 0000000..787a00b --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "", + "keywords": [], + "children": [], + "export": [ + "fizzbuzz.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.json" "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.json" new file mode 100644 index 0000000..eeb25e8 --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "jackymao_com", + "source": "fizzbuzz.md", + "notebook_enable": false, + "exercise_id": "" +} \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.md" "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.md" new file mode 100644 index 0000000..06c1188 --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/5.Rust\345\210\235\351\230\266\345\256\236\346\210\230/1.fizzbuzz/fizzbuzz.md" @@ -0,0 +1,82 @@ +# fizzbuzz + +现在你了解了 Rust 的基础,先试着自己写一个 fizzbuzz 程序,规则如下: + +从 1 打印到 100, 当数字能被 3 整除时,打印 fizz, 能被 5 整除时,打印 buzz, 能被 15 整除时,打印 fizzbuzz, 否则,直接打印数字。 + +先自己写完再来对照下面的写法并答题。 + +以下打印 fizzbuzz 的程序,不能正确输出结果的是: + +## 答案 + +```rust +fn main() { + (1 ..= 100) + .map(|i| { + if i % 15 == 0 { + println!("fizzbuzz"); + } else if i % 3 == 0 { + println!("fizz"); + } else if i % 5 == 0 { + println!("buzz"); + } else { + println!("{}", i); + } + }); +} +``` + +### map 是惰性求值,不能直接输出,使用 for_each 可正确运行 + +```rust +fn main() { + (1 ..= 100) + .for_each(|i| { + if i % 15 == 0 { + println!("fizzbuzz"); + } else if i % 3 == 0 { + println!("fizz"); + } else if i % 5 == 0 { + println!("buzz"); + } else { + println!("{}", i); + } + }); +} +``` + +### 使用 for 循环和 if else 条件判断 + +```rust + +fn main() { + for i in 1..=100 { + if i % 15 == 0 { + println!("fizzbuzz"); + } else if i % 3 == 0 { + println!("fizz"); + } else if i % 5 == 0 { + println!("buzz"); + } else { + println!("{}", i); + } + } +} + +``` + +### 使用 for 循环和 match 匹配 + +```rust +fn main() { + for i in 1..=100 { + match (i % 3 == 0, i % 5 == 0) { + (true, true) => println!("fizzbuzz"), + (true, false) => println!("fizz"), + (false, true) => println!("buzz"), + (false, false) => println!("{}", i), + } + } +} +``` \ No newline at end of file -- GitLab