المسارات
/
Cairo
Cairo
/
التمارين
/
مملكة الأصداء
مملكة الأصداء

مملكة الأصداء

تمرين تعلّمي

مقدمة

تتيح لك الطباعة في Cairo عرض الرسائل أو معلومات التصحيح أثناء تنفيذ البرنامج.

الأساسيات

توفر Cairo وحدتَي ماكرو للطباعة:

  • println!: يُخرج رسالة متبوعة بسطر جديد.
  • print!: يُخرج رسالة دون سطر جديد.
println!("Hello, Cairo!"); 
println!("x = {}, y = {}", 10, 20); 

تُستبدل العناصر النائبة {} بالقيم المقدمة.

تنسيق السلاسل النصية

استخدم format! لإنشاء ByteArray دون طباعته فورًا:

let result = format!("{}-{}-{}", "tic", "tac", "toe");
println!("{}", result); // Output: tic-tac-toe

أنواع البيانات المخصصة

بالنسبة للأنواع المخصصة، نفّذ Display أو اشتق Debug للطباعة:

#[derive(Debug)]
struct Point { x: u8, y: u8 }

let p = Point { x: 3, y: 4 };
println!("{:?}", p); // Debug output: Point { x: 3, y: 4 }

الطباعة بالنظام الست عشري

استخدم {:x} لطباعة الأعداد الصحيحة بالنظام الست عشري:

println!("{:x}", 255); // Output: ff

التعليمات

في عالم Echoes السحري، توجد تعويذة قوية تُسمّى "EchoSpeak". تتيح هذه التعويذة للسحرة نقل أفكارهم وملاحظاتهم عبر كلمات منطوقة، تكتبها أقلام ريش سحرية. ولإتقان هذه التعويذة، على السحرة أن يتعلّموا كيف يصوغون كلماتهم وأفكارهم بوضوح وإيجاز، سواء تعلّق الأمر بأعداد أو أشياء أو تراكيب سحرية معقّدة.

مهمتك بصفتك متدرّبًا لدى ساحر هي إتقان فن EchoSpeak. ويتطلّب ذلك منك أن تتعلّم كيف تطبع أنواعًا مختلفة من البيانات السحرية على الرقوق المسحورة. تعمل EchoSpeak على أخذ حبر سحري خاص، يُمثّله ByteArray، ونقش رسائل منسّقة على الرقّ باستخدام تعويذات مثل println! و print!.

لكن عند التعامل مع تراكيب سحرية مخصّصة مثل العناصر المسحورة أو التعويذات، تحتاج EchoSpeak إلى تعويذة خاصة لتفهم كيفية تمثيل هذه الكائنات. وهنا يأتي دور سحرك: أن تتعلّم تنفيذ تعويذات خاصة تُعرف بـ traits للعناصر السحرية المخصّصة.

1. تنسيق الكلمات السحرية

أحيانًا يحتاج السحرة إلى تنسيق كلماتهم السحرية قبل نقشها على الرقوق. ستكتب دالة تنسّق ثلاث كلمات سحرية في رسالة واحدة.

نفّذ دالة تُسمّى format_magical_chant تُرجع سلسلة نصية منسّقة بالشكل "chant1-chant2-chant3".

مثال:

let result = format_magical_chant("Spark", "Shine", "Glow");
assert_eq!(result, "Spark-Shine-Glow");

2. صدى العناصر السحرية المخصّصة

عالم Echoes مليء بالعناصر المسحورة. ومن هذه العناصر EchoStone، وهو يحتوي على صفتين سحريتين: القوة والمدة.

مهمتك هي تنفيذ دالة stringify_echo_stone التي تحوّل EchoStone إلى ByteArray بالصيغة الخاصة "EchoStone [power: x, duration: y]" عبر تنفيذ سمة Display.

مثال:

let stone = EchoStone { power: 100, duration: 300 };
assert_eq!(stringify(stone), "EchoStone [power: 100, duration: 300]");

3. تصحيح أخطاء السحر

بصفتك متدرّبًا لدى ساحر، يُعدّ تصحيح الأخطاء أمرًا ضروريًا للتراكيب السحرية المعقّدة. ستُنشئ دالة تطبع EchoStone لأغراض تصحيح الأخطاء باستخدام سمة Debug. وينبغي أن تكون الصيغة: "Debugging EchoStone: { power: x, duration: y }".

مثال:

let stone = EchoStone { power: 25, duration: 10 };
assert_eq!(format!("{:?}", stone), "Debugging EchoStone: { power: 25, duration: 10 }");
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Cairo Exercism

مستعد لبدء مملكة الأصداء؟

سجّل في Exercism لتتعلّم وتتقن Cairo عبر 25 مفهومًا68 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.