RustでFizzBuzz
実践Rust入門から離れて
自転車本は作りながらとりあえず作ってそれを部分的に後で解説していくみたいな構成なのですが、それが辛くなってきたので、
FizzBuzz
pythonのように、レンジイテレータを使ってfor文を書くことができる。
usizeは符号なしの可変サイズ整数の型らしい。桁が細かくu32,u64などがあるのは知っていたが、大雑把な型もあるのはいい。
fn fizzbuzz(n: usize){ for i in 0..n { if i % 15 == 0 { println!("FizzBuzz"); } else if i % 3 == 0 { println!("Fizz"); } else if i % 5 == 0 { println!("Buzz"); } else { println!("{}", i); } } } fn main() { fizzbuzz(20); }
エラー文
Rustはどうやら数値を返す時、strにしなければならないらしい。
コンパイラが賢いので、どうやって書けばいいかも教えてれる。すごい。
このフォーマットの書き方もpythonと似ている。
Compiling fizzbuzz v0.1.0 (/Users/e155755/Documents/Rust/fizzbuzz) error: format argument must be a string literal --> src/main.rs:11:22 | 11 | println!(i); | ^ help: you might be missing a string literal to format with | 11 | println!("{}", i); | ^^^^^ error: aborting due to previous error error: Could not compile `fizzbuzz`. To learn more, run the command again with --verbose. The terminal process terminated with exit code: 101 Terminal will be reused by tasks, press any key to close it.
pythonで書いてみた
pythonはformat()メソッドで表示することもできるし、そのまま文字列リテラルで表示することもできる。
>>> def fizzbuzz(n): ... for i in range(n): ... if i % 15 == 0: ... print("FizzBuzz") ... elif i % 3 == 0: ... print("Fizz") ... elif i % 5 == 0: ... print("Buzz") ... else: ... print("{}".format(i)) ... >>> fizzbuzz(20) FizzBuzz 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19
参考文献
最速で知る! プログラミング言語Rustの基本機能とメモリ管理【第二言語としてのRust】 - エンジニアHub|若手Webエンジニアのキャリアを考える!