مسیرها
/
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ای برگرداند که از ۳ خط تشکیل شده است: خطی با تعداد ستاره‌ی دلخواه، سپس پیام خوش‌آمد همان‌طور که دریافت شده، و بعد خطی دیگر از ستاره‌ها.

AddBorder("Welcome!", 10)

باید خروجی زیر را برگرداند:

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

3. پاک‌سازی پیام‌های تبلیغاتی قدیمی

پیش از نصب این نمایشگر جدید، فروشگاه نمایشگری مشابه داشت که فقط می‌توانست خطوط ثابت و غیرقابل‌تنظیم را نشان دهد. صاحب فروشگاه می‌خواهد برخی از پیام‌های تبلیغاتی قدیمی را روی نمایشگر جدید دوباره به کار ببرد. با این حال، داده‌ها از قبل شامل حاشیه‌ی ستاره و چند فاصله‌ی ناخواسته است. وظیفه‌ی شما پاک‌سازی پیام‌هاست تا بتوان دوباره از آن‌ها استفاده کرد.

تابع CleanUpMessage را پیاده‌سازی کنید که پیام تبلیغاتی قدیمی را به‌صورت یک رشته می‌گیرد. تابع باید ابتدا همه‌ی ستاره‌ها را از متن حذف کند و پس از آن فاصله‌های ابتدا و انتهای متن باقی‌مانده را بردارد. سپس باید پیام پاک‌سازی‌شده را برگرداند.

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

CleanUpMessage(message)
// => BUY NOW, SAVE 10%
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Go Exercism

آماده‌اید به کاخ فناوری خوش آمدید! را شروع کنید؟

در Exercism ثبت‌نام کنید تا Go را همراه با 34 مفهوم165 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.