نمط الأرقام
جزء من قسم 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 - pyramid باستخدام *، إليك بعض الأمثلة:
1 - pyramid
*5 - pyramid
*
***
*****7 - pyramid
*
***
*****
*******الإدخال
- عدد صحيح فردي
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); // Works
let num: i32 = 7;
let repeated = "y".repeat(num as usize); // Works
let repeated = "z".repeat(num); // Error: expected usize, found 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المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي