این چالش یک مدل انگلیسی از بازی کلمات ژاپنی شیریتوری است. ایدهٔ اصلی این بازی این دو قانون است:
- اولین حرف کلمهٔ بعدی باید با آخرین حرف کلمهٔ قبلی مطابقت داشته باشد.
- کلمه نباید قبلاً گفته شده باشد. در زیر یک مثال از بازی شیریتوری آمده است:
مثال
- [“word”, “dowry”, “yodel”, “leader”, “righteous”, “serpent”] # معتبر!
- [“motive”, “beach”] # نامعتبر! – beach باید با “e” شروع شود.
- [“hive”, “eh”, “hive”] # نامعتبر! – “hive” قبلاً گفته شده است.
یک کلاس Shiritori بنویسید که دو متغیر نمونه داشته باشد:
words: یک لیست از کلماتی که قبلاً گفته شدهاند.
game_over: یک متغیر بولین که اگر بازی تمام شده باشد، مقدار true را دارد.
و دو متد نمونه:
play: یک متدی که یک کلمه به عنوان ورودی میگیرد و بررسی میکند که آیا معتبر است یا خیر (کلمه باید قوانین #1 و #2 بالا را رعایت کند).
اگر معتبر بود، کلمه را به لیست کلمات اضافه کرده و لیست کلمات را برمیگرداند. اگر نامعتبر بود (هر کدام از قوانین را نقض میکند)، “game over” را برمیگرداند و مقدار متغیر game_over را به true تنظیم میکند.
restart: یک متدی که لیست کلمات را به یک لیست خالی [] تنظیم کرده و مقدار متغیر game_over را به false میکند. باید “game restarted” را برگرداند.
مثال:
my_shiritori = Shiritori()
my_shiritori.play("apple") #➞ ["apple"]
my_shiritori.play("ear") #➞ ["apple", "ear"]
my_shiritori.play("rhino") # ➞ ["apple", "ear", "rhino"]
my_shiritori.play("corn") #➞ "game over"
# Corn با "o" شروع نمیشود.
print(my_shiritori.words) #➞ ["apple", "ear", "rhino"]
# کلمات باید قابل دسترس باشند.
my_shiritori.restart() #➞ "game restarted"
print(my_shiritori.words) #➞ []
#لیست کلمات را باید بتوان دوباره به خالی تنظیم کرد.
print(my_shiritori.play("hostess")) #➞ ["hostess"]
print(my_shiritori.play("stash"))# ➞ ["hostess", "stash"]
print(my_shiritori.play("hostess"))# ➞ "game over"
# کلمات نمیتوانند قبلاً گفته شده باشند.
توجه:
- متد play نباید کلمهٔ نامعتبر را به لیست کلمات اضافه کند.
- نباید نگرانی ای درباره بزرگی-کوچکی حروف یا فضای خالی برای ورودیهای متد play وجود داشته باشد. یعنی اگر فاصله خالی قبل و بعد از کلمه بیاید و یا ورودی با حرف بزرگ شروع شود، باید باز هم آن را تشخیص دهد.
- متد play تنها یک آرگومان به عنوان ورودی میپذیرد.
نظرات