بکندباز

تابعی بنویسید که در ورودی دو مقدار می گیرد. ورودی اول یک عدد چند رقمی است و ورودی دوم یک عدد طبیعی n.

این تابع باید لیستی از تمام اعدادی که می توان با اعداد مقدار اول ساخت را بعنوان لیست بصورت صعودی در خروجی برگرداند. تعداد ارقام این اعداد باید حداکثر n باشد.

مثال :

list_possible(123,3) ->[1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]

در این مثال، ورودی دوم 3 است. پس تعداد ارقام خروجی حداکثر می تواند 3 باشد. در نتیجه لیستی از تمام اعداد یک رقمی، دو رقمی و سه رقمی که می توان با 123 ساخت در خروجی برگردانده می شود.

نمونه ورودی و خروجی

ListPossible(123,3) ➞ [1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]

ListPossible(123,2) ➞ [1, 2, 3, 12, 13, 21, 23, 31, 32]

ListPossible(1234,4) ➞ [1, 2, 3, 4, 12, 13, 14, 21, 23, 24, 31, 32, 34, 41, 42, 43, 123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432, 1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321]
EXPECT_EQ(ListPossible(123, 3), std::vector({1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321}));
EXPECT_EQ(ListPossible(123, 2), std::vector({1, 2, 3, 12, 13, 21, 23, 31, 32}));
EXPECT_EQ(ListPossible(1234, 4), std::vector({1, 2, 3, 4, 12, 13, 14, 21, 23, 24, 31, 32, 34, 41, 42, 43, 123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432, 1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321}));

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*

تمرینات مرتبط