در این چالش باید بررسی کنید که آیا یک عدد دادهشده “خودتوصیفگر” است یا خیر. یک عدد خودتوصیفگر ویژگیهای زیر را دارد:
- تعداد ارقام آن باید زوج باشد، زیرا باید به صورت جفتهای مجاور تقسیم شود.
- هر جفت از ارقام، به صورت
[x, y]، بیان میکند که عدد شاملxنمونه از رقمyاست. - اگر تمام جفتهای ارقام شرایط فوق را برآورده کنند، عدد خودتوصیفگر است.
توضیح با مثالها
- عدد 224444:
- تقسیم به جفتها:
[2, 2],[4, 4],[4, 4] - بررسی هر جفت:
[2, 2]: دو نمونه از2وجود دارد. درست.[4, 4]: چهار نمونه از4وجود دارد. درست.[4, 4]: چهار نمونه از4وجود دارد. درست.
- نتیجه: True
- تقسیم به جفتها:
- عدد 333:
- تعداد ارقام فرد است، بنابراین تقسیم به جفت ممکن نیست.
- نتیجه: False
تابعی به نام is_self_describing بنویسید که یک عدد صحیح غیرمنفی num دریافت کند و بررسی کند که آیا عدد خودتوصیفگر است یا خیر.
نمونه ورودی و خروجی
IsSelfDescribing(10123331) ➞ True
IsSelfDescribing(224444) ➞ True
IsSelfDescribing(2211) ➞ False
نکات
- اگر تعداد ارقام عدد فرد باشد، عدد خودتوصیفگر نیست.
- جفتهای تکراری قابلقبول هستند، اما باید برای هر جفت شرط برقرار باشد.
- تمام ارقام عدد باید در بررسی جفتها لحاظ شوند.
- ورودی همیشه یک عدد صحیح معتبر غیرمنفی خواهد بود.
EXPECT_EQ(IsSelfDescribing(10123331), true); EXPECT_EQ(IsSelfDescribing(224444), true); EXPECT_EQ(IsSelfDescribing(2211), false); EXPECT_EQ(IsSelfDescribing(333), false); EXPECT_EQ(IsSelfDescribing(27273332), true); EXPECT_EQ(IsSelfDescribing(11), false); EXPECT_EQ(IsSelfDescribing(22), true); EXPECT_EQ(IsSelfDescribing(881722888888), true);
پاسخ های کاربران به این تمرین
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
وقت بخیر ،
این عدد چرا خود توصیف گر نیست ؟ (2211)
[1,1] [2,2] دو تا دو داره ...یکی یک .... تعداد ارقام هم زوج هم هست ... متوجه نشدم چرا False شده.
ممنون
متوجه شدم .. دو تا یک داره ...اما [1,1] یکی یک داره ...