Menu
CoddyTech

Mẫu số

Thuộc phần Kiến thức nền tảng trong hành trình Rust của Coddy. Bài học 73 trên 75.

Khi tạo các mẫu như hình kim tự tháp, chúng ta thường cần tạo chuỗi có các ký tự lặp lại. Trong Rust, có một vài cách để làm việc này, nhưng đây là một trong những cách đơn giản nhất:

let str = "a".repeat(10);

str sẽ chứa "aaaaaaaaaa"

Phương thức repeat() yêu cầu đối số có kiểu usize, không phải kiểu số nguyên thông thường như i32.

usize là kiểu số nguyên không dấu có kích thước bằng con trỏ của Rust. Kích thước của kiểu này phụ thuộc vào kiến trúc của bạn: 32 bit trên hệ thống 32 bit, 64 bit trên hệ thống 64 bit.

let count: usize = 5;
let repeated = "x".repeat(count);  // Cách này chạy được

Nếu bạn có một giá trị kiểu i32 hoặc một kiểu số nguyên khác, bạn cần chuyển đổi nó:

let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Chuyển đổi bằng 'as usize'

Đoạn này sẽ không biên dịch:

let repeated = "z".repeat(num);
// Lỗi: cần kiểu usize, nhưng nhận được i32
challenge icon

Thử thách

Dễ

Mỗi test case có một đầu vào, là một số nguyên lẻ.
Nhiệm vụ của bạn là in ra hình chóp n bằng *. Dưới đây là một số ví dụ:

Hình chóp 1

*

Hình chóp 5

*
***
*****

Hình chóp 7

*
***
*****
*******

Đầu vào

  • Số nguyên lẻ n do người dùng nhập
  • 1 <= n < 1000

Gợi ý

  • Hãy thử bắt đầu với những hình tam giác nhỏ
  • Xem gợi ý nếu bạn gặp khó khăn ;)

n biểu thị số lượng  * ở hàng dưới cùng

Lưu ý: Trong Rust, các hàm xử lý "size" hoặc "length" của một thứ gì đó, chẳng hạn như .repeat(), cần một kiểu dữ liệu gọi là usize thay vì i32. Bạn có thể xem usize như một số nguyên thông thường không bao giờ âm.

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Rust online