数値パターン
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 73/75。
ピラミッドのようなパターンを作成する場合、繰り返しの文字を含む文字列を作成する必要がよくあります。Rustにはこれを実現する方法がいくつかありますが、最も簡単な方法の1つを以下に示します。
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 は、決して負にならない通常の整数として扱うことができます。
チートシート
Rustで繰り返しの文字を含む文字列を作成するには、repeat()メソッドを使用します。
let str = "a".repeat(10);これにより、"aaaaaaaaaa"("a"を10回繰り返したもの)が作成されます。
repeat()メソッドはusize(符号なしポインタサイズ整数)のみを受け付け、i32やその他の整数型は受け付けません。
let count: usize = 5;
let repeated = "x".repeat(count); // 動作します
let num: i32 = 7;
let repeated = "y".repeat(num as usize); // 動作します
let repeated = "z".repeat(num); // エラー: usizeが期待されましたが、i32が見つかりました自分で試してみよう
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();
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。