استیو و موریس هر دو سه حلزون دارند:
- یک حلزون کند (
s
) - یک حلزون متوسط (
m
) - یک حلزون سریع (
f
)
اگر موریس در دو مسابقه از سه مسابقه برنده شود، برنامه باید True
برگرداند. در غیر این صورت False
.
استراتژی موریس:
- دور اول: (
s, f
) → فدا کردن کندترین حلزون خود در برابر سریعترین حلزون استیو. - دور دوم: (
m, s
) → استفاده از حلزون متوسط خود در برابر کندترین حلزون استیو. - دور سوم: (
f, m
) → استفاده از سریعترین حلزون خود در برابر حلزون متوسط استیو.
ورودیهای تابع:
- لیست 1:
[s, m, f]
(کند، متوسط، سریع) برای موریس - لیست 2:
[s, m, f]
(کند، متوسط، سریع) برای استیو
مثال
maurice_wins([3, 5, 10], [4, 7, 11]) ➞ True
# مسابقات: (3, 11), (5, 4), (10, 7)
# موریس در دو مسابقه (5 > 4) و (10 > 7) برنده میشود.
نمونه ورودی و خروجی
MauriceWins([3, 5, 10], [4, 7, 11]) ➞ True
MauriceWins([6, 8, 9], [7, 12, 14]) ➞ False
MauriceWins([1, 8, 20], [2, 9, 100]) ➞ True
نکات:
- موریس فقط زمانی برنده یک مسابقه میشود که سرعت حلزونش از حلزون استیو بیشتر باشد.
- استیو همیشه با این ترتیب بازی میکند:
[f, s, m]
- لیست ورودی همیشه به ترتیب صعودی مرتب است.
Assert.True(Backendbaz.MauriceWins(new int[] { 3, 5, 10 }, new int[] { 4, 7, 11 })); Assert.False(Backendbaz.MauriceWins(new int[] { 6, 8, 9 }, new int[] { 7, 12, 14 })); Assert.True(Backendbaz.MauriceWins(new int[] { 1, 8, 20 }, new int[] { 2, 9, 100 })); Assert.False(Backendbaz.MauriceWins(new int[] { 1, 2, 3 }, new int[] { 2, 3, 4 })); Assert.True(Backendbaz.MauriceWins(new int[] { 2, 4, 10 }, new int[] { 3, 9, 11 })); Assert.True(Backendbaz.MauriceWins(new int[] { 3, 8, 13 }, new int[] { 5, 11, 15 }));
نظرات