بکندباز

“بر زدن بیرونی” (Out-shuffle)، که به آن “فارو شافل بیرونی” نیز گفته می‌شود، روشی دقیق برای بر زدن کارت‌هاست. در این روش، دسته کارت به دو نیم مساوی تقسیم می‌شود و سپس به صورت دقیق به هم بافته می‌شوند، به گونه‌ای که کارت بالای دسته کارت‌ها در جای خود باقی بماند.

با استفاده از یک لیست برای نمایش دسته کارت‌ها، یک بر زدن بیرونی به صورت زیر انجام می‌شود:

[1, 2, 3, 4, 5, 6, 7, 8] ➞ [1, 5, 2, 6, 3, 7, 4, 8]
#  کارت 1 در جایگاه اول باقی می‌ماند.

اگر این فرآیند را تکرار کنیم، دسته کارت در نهایت به ترتیب اصلی خود باز می‌گردد:

بر زدن 1:

[1, 2, 3, 4, 5, 6, 7, 8] ➞ [1, 5, 2, 6, 3, 7, 4, 8]

بر زدن 2:

[1, 5, 2, 6, 3, 7, 4, 8] ➞ [1, 3, 5, 7, 2, 4, 6, 8]

بر زدن 3:

[1, 3, 5, 7, 2, 4, 6, 8] ➞ [1, 2, 3, 4, 5, 6, 7, 8]
#به ترتیب اصلی بازگشت.

تابعی به نام shuffle_count بنویسید که یک عدد صحیح مثبت زوج num (نمایانگر تعداد کارت‌ها در دسته) بگیرد و تعداد بر زدن‌های بیرونی موردنیاز برای بازگشت دسته کارت به ترتیب اصلی را برگرداند.

نکات

  • تعداد کارت‌ها همیشه زوج و بزرگ‌تر از صفر است. بنابراین کوچک‌ترین اندازه ممکن برای دسته کارت‌ها 2 است.
EXPECT_EQ(ShuffleCount(8), 3);
EXPECT_EQ(ShuffleCount(14), 12);
EXPECT_EQ(ShuffleCount(52), 8);
EXPECT_EQ(ShuffleCount(38), 36);
EXPECT_EQ(ShuffleCount(52), 8);
EXPECT_EQ(ShuffleCount(70), 22);

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

نظرات

*
*

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