مسیرها
/
Rust
Rust
/
تمرین‌ها
/
بریده‌ی مجله
بریده‌ی مجله

بریده‌ی مجله

تمرین یادگیری

مقدمه

API «درایه» در Rust نمایی به درون یک درایه‌ی واحد در یک «نگاشت» ارائه می‌دهد که می‌تواند HashMap یا BTreeMap باشد. این درایه ممکن است اشغال‌شده یا خالی باشد و این API متدهایی برای تغییر محتوای درایه فراهم می‌کند.

دستورالعمل‌ها

در این تمرین برای حل یک مسئله‌ی الگوریتمی ساده از یک HashMap و متدهای API entry استفاده می‌کنید.

اگر یک &[&str] که واژه‌های یک مقاله‌ی مجله است و یک &[&str] که واژه‌های یادداشتی است که می‌خواهید بفرستید در اختیار داشته باشید، آیا می‌توانید با بریدن واژه‌ها از مجله و چسباندن آن‌ها در یک نامه، یادداشتتان را بسازید؟

نکات:

  • این کار یعنی بریدن و چسباندن فیزیکی؛ پس مجله باید برای هر واژه دست‌کم به تعداد مورد نیاز یادداشت، نسخه داشته باشد.
  • بزرگی و کوچکی حروف مهم است؛ فقط به این دلیل که یادداشتی را از واژه‌های یک مجله کنار هم می‌چسبانید، به این معنا نیست که حاضرید از نظر دستوری نادرست بنویسید.

کار را با امضای تابع ناتمام زیر شروع می‌کنید:

pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
    todo!()
}

با در نظر گرفتن ورودی زیر

let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, &note));

تابع false را برمی‌گرداند، چون مجله فقط یک نمونه از "two" دارد، در حالی که یادداشت دو تا از آن را می‌خواهد.

ورودی زیر موفق خواهد بود:

let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
    .split_whitespace()
    .collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, &note));

تابع true را برمی‌گرداند، چون مجله همه‌ی واژه‌هایی را که یادداشت نیاز دارد در خود دارد.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Rust Exercism

آماده‌اید بریده‌ی مجله را شروع کنید؟

در Exercism ثبت‌نام کنید تا Rust را همراه با 99 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.