المسارات
/
Go
Go
/
التمارين
/
مرحبًا بك في قصر التقنية!
مرحبًا بك في قصر التقنية!

مرحبًا بك في قصر التقنية!

تمرين تعلّمي

مقدمة

string في Go هو تسلسل ثابت من البايتات، لا يلزم أن يمثّل أحرفًا بالضرورة.

تُكتب السلسلة النصية الحرفية بين علامتي تنصيص مزدوجتين:

const name = "Jane"

يمكن دمج السلاسل النصية باستخدام العامل +:

"Jane" + " " + "Austen"
// => "Jane Austen"

بعض الأحرف الخاصة يجب تهريبها بشرطة مائلة عكسية تسبقها، مثل \t لعلامة الجدولة و\n لسطر جديد داخل السلاسل النصية.

"How is the weather today?\nIt's sunny"  
// =>
// How is the weather today?
// It's sunny

تحتوي حزمة strings على دوال مفيدة كثيرة للعمل على السلاسل النصية. لمزيد من المعلومات عن دوال السلاسل النصية، راجع توثيق حزمة strings. وفيما يلي بعض الأمثلة:

import "strings"

// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"

// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"

التعليمات

هناك متجر للأجهزة المنزلية يُدعى "Tech Palace" بالقرب من هنا. ركّب صاحب المتجر مؤخرًا شاشة عرض كبيرة لاستخدامها في رسائل تسويقية ولعرض تحية خاصة عندما يمسح العملاء بطاقات الولاء الخاصة بهم عند المدخل. تتكوّن الشاشة من الكثير من مصابيح LED الصغيرة ويمكنها عرض عدة أسطر من النص.

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

1. إنشاء رسالة الترحيب

بالنسبة لمعظم العملاء الذين يمسحون بطاقات الولاء الخاصة بهم، يريد صاحب المتجر أن تظهر على الشاشة عبارة "Welcome to the Tech Palace," متبوعةً باسم العميل بحروف كبيرة.

نفّذ الدالة WelcomeMessage التي تقبل اسم العميل كوسيط من نوع string وتُرجع الرسالة المطلوبة من نوع string.

WelcomeMessage("Judy")
// => Welcome to the Tech Palace, JUDY

2. إضافة إطار أنيق

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

اكتب دالة AddBorder تقبل رسالة ترحيب (من نوع string) وعدد النجوم في كل سطر (من النوع int) كوسائط. ينبغي أن تُرجع سلسلة نصية من نوع string تتكوّن من 3 أسطر: سطر يحتوي العدد المطلوب من النجوم، ثم رسالة الترحيب كما وردت، ثم سطر آخر من النجوم.

AddBorder("Welcome!", 10)

ينبغي أن تُرجع ما يلي:

**********
Welcome!
**********

3. تنظيف الرسائل التسويقية القديمة

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

نفّذ دالة CleanUpMessage تقبل الرسالة التسويقية القديمة كسلسلة نصية. ينبغي أن تُزيل الدالة أولًا كل النجوم من النص، ثم تُزيل المسافات البيضاء في البداية والنهاية من النص المتبقي. ثم ينبغي أن تُرجع الدالة الرسالة المنظّفة.

message := `
**************************
*    BUY NOW, SAVE 10%   *
**************************
`

CleanUpMessage(message)
// => BUY NOW, SAVE 10%
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Go Exercism

مستعد لبدء مرحبًا بك في قصر التقنية!؟

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