در این چالش باید بررسی کنید که آیا یک عدد دادهشده “خودتوصیفگر” است یا خیر. یک عدد خودتوصیفگر ویژگیهای زیر را دارد:
- تعداد ارقام آن باید زوج باشد، زیرا باید به صورت جفتهای مجاور تقسیم شود.
- هر جفت از ارقام، به صورت
[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
دریافت کند و بررسی کند که آیا عدد خودتوصیفگر است یا خیر.
نمونه ورودی و خروجی
is_self_describing(10123331) ➞ True
is_self_describing(224444) ➞ True
is_self_describing(2211) ➞ False
نکات
- اگر تعداد ارقام عدد فرد باشد، عدد خودتوصیفگر نیست.
- جفتهای تکراری قابلقبول هستند، اما باید برای هر جفت شرط برقرار باشد.
- تمام ارقام عدد باید در بررسی جفتها لحاظ شوند.
- ورودی همیشه یک عدد صحیح معتبر غیرمنفی خواهد بود.
self.assertEqual(is_self_describing(10123331), True) self.assertEqual(is_self_describing(224444), True) self.assertEqual(is_self_describing(2211), False) self.assertEqual(is_self_describing(333), False) self.assertEqual(is_self_describing(27273332), True) self.assertEqual(is_self_describing(11), False) self.assertEqual(is_self_describing(22), True) self.assertEqual(is_self_describing(881722888888), True)
پاسخ های کاربران به این تمرین
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
وقت بخیر ،
این عدد چرا خود توصیف گر نیست ؟ (2211)
[1,1] [2,2] دو تا دو داره ...یکی یک .... تعداد ارقام هم زوج هم هست ... متوجه نشدم چرا False شده.
ممنون
متوجه شدم .. دو تا یک داره ...اما [1,1] یکی یک داره ...