Menu
CoddyTech

数値パターン

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 が見つかりました
challenge icon

チャレンジ

簡単

各テストケースの入力は、奇数の整数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();

    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ