Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

نمط الأرقام

جزء من قسم 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 - 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();

    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals