المسارات
/
JavaScript
JavaScript
/
التمارين
/
سياسة باب نادي الشعر
سياسة باب نادي الشعر

سياسة باب نادي الشعر

تمرين تعلّمي

مقدمة

السلسلة النصية هي نوع البيانات في JavaScript لتخزين البيانات النصية.

إنشاء سلسلة نصية

يمكنك إنشاء سلسلة نصية بتطويق النص بعلامات اقتباس مفردة أو مزدوجة. في Exercism، تُستخدم علامات الاقتباس المفردة.

'Hello, World!'
"Hello, World!"

السلاسل النصية كمصفوفات من المحارف

يمكن التعامل مع السلسلة النصية كمصفوفة من المحارف، حيث يكون فهرس المحرف الأول 0. يمكنك الوصول إلى محرف واحد من السلسلة النصية باستخدام الأقواس المربعة وفهرس الحرف الذي تريد استرجاعه.

'cat'[1];
// => 'a'

يمكنك تحديد عدد المحارف في السلسلة النصية من خلال الوصول إلى خاصية length.

'cat'.length;
// => 3

دمج السلاسل النصية والطرق

أبسط وسيلة لدمج السلاسل النصية هي استخدام عامل الجمع +.

'I like' + ' ' + 'cats.';
// => "I like cats."

توفّر السلاسل النصية الكثير من الطرق المساعدة، راجع توثيق MDN لطرق السلاسل النصية للحصول على القائمة الكاملة. تعرض القائمة التالية بعض الطرق المساعدة الشائعة الاستخدام.

  • toUpperCase وtoLowerCase - تغيير حالة جميع المحارف
  • trim - إزالة الفراغات في البداية والنهاية
  • includes وstartsWith وendsWith - تحديد ما إذا كانت سلسلة نصية أخرى جزءًا من السلسلة النصية المعطاة
  • slice - استخراج قسم من السلسلة النصية

السلاسل النصية غير قابلة للتغيير في JavaScript. لذلك فإن أي "تعديل"، مثل ما تقوم به بعض الطرق أعلاه، سينشئ دائمًا سلسلة نصية جديدة بدلًا من ذلك.

التعليمات

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

في نادي الشعر بابان، باب أمامي وباب خلفي، وكلاهما محروس. وللدخول، ستحتاج إلى معرفة كلمة السر الخاصة باليوم.

كلمة السر مبنية دائمًا على قصيدة، ويمكن استخراجها في خطوتين.

  1. يلقي الحارس القصيدة، سطرًا سطرًا، وعليك أن تردّ بالحرف المناسب من ذلك السطر.
  2. ثم يخبرك الحارس بكل الحروف التي رددت بها دفعة واحدة، وعليك أن تكتبها على ورقة بتنسيق معيّن.

تعتمد تفاصيل العملية على الباب الذي تحاول الدخول منه.

1. احصل على الحرف الأول من الجملة

لتحديد حروف كلمة سر الباب الأمامي، عليك أن تردّ بالحرف الأول من سطر القصيدة الذي يلقيه عليك الحارس.

وللحصول على كلمة سر جميلة، يحبّ أعضاء نادي الشعر استخدام القصائد الأكروستيكية. وهذا يعني أن الحرف الأول من كل جملة يشكّل كلمة. وهذا مثال لأحد كتّابهم المفضلين، مايكل لوكوود.

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

لذا عندما يلقي الحارس Stands so high، تردّ بـ S، وعندما يلقي Huge hooves too، تردّ بـ H.

نفّذ الدالة frontDoorResponse التي تأخذ سطرًا من القصيدة كوسيط وتُرجع الحرف الأول من ذلك السطر.

frontDoorResponse('Stands so high');
// => "S"

2. اكتب الكلمة بحرف أول كبير

الآن وقد حصلت على كل الحروف الصحيحة، كل ما يلزمك للحصول على كلمة سر الباب الأمامي هو أن تجعل الحرف الأول من الكلمة كبيرًا بشكل صحيح.

نفّذ الدالة frontDoorPassword التي تقبل سلسلة نصية (الحروف المجمّعة التي وجدتها في المهمة 1) وتُرجعها بحرف أول كبير بشكل صحيح.

frontDoorPassword('SHIRE');
// => "Shire"

frontDoorPassword('shire');
// => "Shire"

3. احصل على الحرف الأخير من الجملة

لتحديد حروف كلمة سر الباب الخلفي، عليك أن تردّ بالحرف الأخير من سطر القصيدة الذي يلقيه عليك الحارس.

أعضاء نادي الشعر أذكياء حقًا. القصيدة المذكورة سابقًا هي أيضًا التلستيكية، وهذا يعني أن الحرف الأخير من كل جملة يشكّل كلمة أيضًا:

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

عندما يلقي الحارس Stands so high، تردّ بـ h، وعندما يلقي Huge hooves too، تردّ بـ o.

لاحظ أن الحارس يقوم أحيانًا بوقفات أسلوبية (في صورة مسافات بيضاء) في بداية السطر أو في نهايته. وستحتاج إلى تجاهل هذه الوقفات لاستخراج الحرف الصحيح.

نفّذ الدالة backDoorResponse التي تأخذ سطرًا من القصيدة كوسيط وتُرجع الحرف الأخير من ذلك السطر الذي ليس محرف مسافة بيضاء.

backDoorResponse('Stands so high');
// => "h"

backDoorResponse('Stands so high   ');
// => "h"

4. كن مؤدبًا

لتدخل نادي الشعر من الباب الخلفي، عليك أن تكون مؤدبًا أكثر من المعتاد. لذا، لاستخراج كلمة السر، هذه المرة عليك أن تجعل الحرف الأول من الكلمة كبيرًا بشكل صحيح وأن تضيف ', please' في النهاية.

نفّذ الدالة backDoorPassword التي تقبل سلسلة نصية (الحروف المجمّعة التي وجدتها في المهمة 3) وتُرجع النسخة المؤدبة من كلمة السر المكتوبة بحرف أول كبير.

backDoorPassword('horse');
// => "Horse, please"
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء سياسة باب نادي الشعر؟

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