در این چالش باید بررسی کنید که آیا یک عدد دادهشده “خودتوصیفگر” است یا خیر. یک عدد خودتوصیفگر ویژگیهای زیر را دارد:
- تعداد ارقام آن باید زوج باشد، زیرا باید به صورت جفتهای مجاور تقسیم شود.
- هر جفت از ارقام، به صورت
[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] یکی یک داره ...