بکندباز

این چالش یک مدل انگلیسی از بازی کلمات ژاپنی شیریتوری است. ایدهٔ اصلی این بازی این دو قانون است:

  1. اولین حرف کلمهٔ بعدی باید با آخرین حرف کلمهٔ قبلی مطابقت داشته باشد.
  2. کلمه نباید قبلاً گفته شده باشد. در زیر یک مثال از بازی شیریتوری آمده است:

مثال

  • [“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" شروع نمی‌شود.

my_shiritori.words ➞  ["apple", "ear", "rhino"]

# کلمات باید قابل دسترس باشند.

my_shiritori.restart()‎ ➞ "game restarted"
my_shiritori.words ➞ []

#لیست کلمات را باید بتوان دوباره به خالی تنظیم کرد.

my_shiritori.play("hostess") ➞ ["hostess"]
my_shiritori.play("stash") ➞ ["hostess", "stash"]
my_shiritori.play("hostess") ➞ "game over"

# کلمات نمی‌توانند قبلاً گفته شده باشند.

توجه:

  • متد play نباید کلمهٔ نامعتبر را به لیست کلمات اضافه کند.
  • نباید نگرانی ای درباره بزرگی-کوچکی حروف یا فضای خالی برای ورودی‌های متد play وجود داشته باشد. یعنی اگر فاصله خالی قبل و بعد از کلمه بیاید و یا ورودی با حرف بزرگ شروع شود، باید باز هم آن را تشخیص دهد.
  • متد play تنها یک آرگومان به عنوان ورودی می‌پذیرد.

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

نظرات

*
*