Menu
Coddy logo textTech

Числовой узор

Часть раздела Fundamentals путешествия по Rust на Coddy — урок 73 из 75.

При создании таких паттернов, как пирамиды, нам часто нужно создавать строки с повторяющимися символами. В Rust есть несколько способов добиться этого, но вот один из самых простых методов:

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

str будет содержать "aaaaaaaaaa"

Метод repeat() требует именно аргумент типа usize, а не обычный целочисленный тип, такой как i32.

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

Задание

Легко

Каждый тестовый случай содержит одно входное значение — нечетное целое число.
Ваша задача — вывести n - пирамиду, используя *, вот несколько примеров:

1 - пирамида

*

5 - пирамида

*
***
*****

7 - пирамида

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

Ввод

  • нечетное целое число n от пользователя
  • 1 <= n < 1000

Советы

  • Попробуйте начать с маленьких треугольников
  • Загляните в подсказку, если застряли ;)

n представляет собой количество * в нижнем ряду

Примечание: В Rust функции, работающие с "размером" или "длиной" чего-либо (например, .repeat()), требуют тип под названием usize вместо i32; вы можете рассматривать usize как обычное целое число, которое никогда не бывает отрицательным.

Шпаргалка

Чтобы создать строки с повторяющимися символами в Rust, используйте метод repeat():

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

Это создаст "aaaaaaaaaa" (10 повторений "a").

Метод 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