数値パターン
CoddyのRustジャーニー「基礎」セクションの一部。レッスン 73/75。
ピラミッドのようなパターンを作成するとき、文字を繰り返した文字列を作る必要がよくあります。Rustではこれを実現する方法がいくつかありますが、最も簡単な方法の一つを紹介します。
let str = "a".repeat(10);strには"aaaaaaaaaa"が格納されます。
repeat()メソッドでは、i32のような通常の整数型ではなく、usize型の引数が必要です。
usizeはRustのポインターサイズの符号なし整数型です。サイズはアーキテクチャによって異なります(32ビットシステムでは32ビット、64ビットシステムでは64ビット)。
let count: usize = 5;
let repeated = "x".repeat(count); // これは動作しますi32や別の整数型を使う場合は、変換する必要があります。
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// 'as usize' を使って変換するこれはコンパイルできません:
let repeated = "z".repeat(num);
// エラー: usize が必要ですが、i32 が見つかりましたチャレンジ
簡単各テストケースの入力は、奇数の整数1つです。*を使ってn段のピラミッドを出力してください。例をいくつか示します。
1段のピラミッド
*5段のピラミッド
*
***
*****7段のピラミッド
*
***
*****
*******入力
- ユーザーから入力される奇数の整数
n - 1 <=
n< 1000
ヒント
- 小さな三角形から始めてみましょう
- 行き詰まったらヒントを確認しましょう ;)
nは、最下段にある*の数を表します。
注: Rustでは、何かの「サイズ」や「長さ」を扱う関数(.repeat()など)には、i32ではなくusizeという型が必要です。usizeは、負の値にならない通常の整数として扱えます。
自分で試してみよう
use std::io;
fn main() {
let mut input_n = String::new();
io::stdin().read_line(&mut input_n).unwrap();
let n: usize = input_n.trim().parse().unwrap();
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ