این تمرین بر اساس بازی Uno نوشته شده است.
تابعی بنویسید که دارای دو آرگومان باشد: (1) دست فعلی بازیکن و (2) بالاترین کارت فعلی روی میز. اگر بازیکن بتواند کارتی بگذارد، این تابع True برمیگرداند، و اگر بازیکن مجبور باشد از از بیرون کارت بکشد، False را برمیگرداند.
طبق قانون این بازی، در دو صورت بازیکن می تواند روی کارت فعلی کارت بگذارد:
- کارتی هم رنگ با کارت فعلی روی میز داشته باشد
- کارتی هم عدد با کارت فعلی روی میز داشته باشد
can_play(["yellow 3", "yellow 7", "blue 8", "red 9", "red 2"], "red 1") ➞ True
# بازیکن کارت قرمز دارد، و آخرین کارت روی میز نیز قرمز است.
can_play(["yellow 3", "yellow 7"], "blue 7") ➞ True
# بازیکن کارت شماره 7 دارد و آخرین کارت روی میز 7 است.
نمونه ورودی و خروجی
CanPlay(["yellow 3", "yellow 5", "red 8"], "red 2") ➞ True
CanPlay(["yellow 3", "yellow 5", "red 8"], "blue 5") ➞ True
CanPlay(["yellow 3", "blue 5", "red 8", "red 9"], "green 4") ➞ False
نکات
- اگر بازیکن هیچ کارتی نداشت (رشته خالی)، False برگردانده شود.
EXPECT_TRUE(CanPlay({"yellow 3", "yellow 5", "red 8"}, "red 2")); EXPECT_TRUE(CanPlay({"yellow 3", "yellow 5", "red 8"}, "blue 5")); EXPECT_FALSE(CanPlay({"yellow 3", "blue 5", "red 8", "red 9"}, "green 4")); EXPECT_FALSE(CanPlay({"yellow 3", "red 8"}, "green 2"));
نظرات