دنباله

دنباله

آسان

دستورالعمل‌ها

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

برای مثال، رشته‌ی "49142" سری‌های سه‌رقمی زیر را دارد:

  • "491"
  • "914"
  • "142"

و سری‌های چهاررقمی زیر را:

  • "4914"
  • "9142"

و اگر از یک رشته‌ی پنج‌رقمی سری شش‌رقمی بخواهید، هر چه گیرتان بیاید حق خودتان است.

توجه داشته باشید که این سری‌ها فقط باید موقعیت‌های مجاور را در ورودی اشغال کنند؛ لازم نیست رقم‌ها از نظر عددی متوالی باشند.

پیاده‌سازی

دو تابع تعریف کنید: (دو تا؟ بله، گاهی ما بیشتر از Go می‌خواهیم.)

تابع All فهرستی از همه‌ی زیررشته‌های s با طول n را برمی‌گرداند.

All(n int, s string) []string

تابع UnsafeFirst اولین زیررشته‌ی s با طول n را برمی‌گرداند.

UnsafeFirst(n int, s string) string

در این مرحله می‌توانید این تمرین را کامل‌شده بدانید و ادامه دهید.

اما صبر کنید، شاید این سؤال منطقی را بپرسید: چرا اسم این تابع Unsafe First است؟ اگر علاقه‌مندید، برای یک تمرین امتیازی ادامه دهید.

تمرین امتیازی

وقتی go test را با موفقیت پاس کردید، go test -tags asktoomuch را امتحان کنید. این از یک برچسب ساخت استفاده می‌کند تا آزمونی را فعال کند که پیش‌تر فعال نبود. برچسب‌های ساخت امکان انتخاب فایل‌هایی را فراهم می‌کنند که بسته از آن‌ها استفاده می‌کند. در مورد ما، این برچسب مشخص می‌کند که کدام فایل‌های آزمون استفاده شوند. می‌توانید درباره‌ی آن‌ها بیشتر در مستندات Go بخوانید.

ممکن است متوجه شوید که نمی‌توانید این آزمون asktoomuch را راضی کنید. ما به راهی نیاز داریم که نشان دهد در برخی موارد نمی‌توانید N کاراکتر اول رشته را بردارید. UnsafeFirst نمی‌تواند این کار را انجام دهد، چون تنها یک رشته برمی‌گرداند.

برای رفع این مشکل، بیایید یک مقدار بازگشتی دیگر به تابع اضافه کنیم. تابع First(int, string) (first string, ok bool) را تعریف کنید و با go test -tags first آزمایش کنید.

آرگومان بازگشتی دوم، ok bool، الگویی رایج و اصطلاحی در Go است. برای نمونه، آن را در جست‌وجو در Map و تأییدهای نوع می‌بینید.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Go Exercism

آماده‌اید دنباله را شروع کنید؟

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