Menu
Coddy logo textTech

数値パターン

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

チャレンジ

簡単

各テストケースには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();

    
}
quiz icon腕試し

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

Fundamentalsのすべてのレッスン