Числовой узор
Часть раздела 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Задание
ЛегкоКаждый тестовый случай содержит одно входное значение — нечетное целое число.
Ваша задача — вывести 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();
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод