مسیرها
/
Elixir
Elixir
/
تمرین‌ها
/
قوانین پکمن
قوانین پکمن

قوانین پکمن

تمرین یادگیری

مقدمه

منطقی

در Elixir، مقادیر «درست» و «غلط» با نوع داده‌ی «منطقی» نمایش داده می‌شوند. فقط دو مقدار وجود دارد: true و false. می‌توان این مقادیر را به یک متغیر نسبت داد:

true_variable = true
false_variable = false

می‌توانیم عبارت‌های منطقی سخت‌گیرانه را با عملگرهای and/2، or/2 و not/1 ارزیابی کنیم.

true_variable = true and true
false_variable = true and false

true_variable = false or true
false_variable = false or false

true_variable = not false
false_variable = not true

وقتی تابعی می‌نویسید که یک مقدار منطقی برمی‌گرداند، مرسوم است که اسم تابع را با ? تمام کنید. همین قرارداد را می‌توان برای متغیرهایی به کار برد که مقادیر منطقی را نگه می‌دارند.

def either_true?(a?, b?) do
  a? or b?
end

دستورالعمل‌ها

در این تمرین، باید چند قانون از بازی کلاسیک Pac-Man را به توابع Elixir ترجمه کنید.

چهار قانون برای ترجمه دارید که همه به وضعیت‌های بازی مربوط می‌شوند.

نگران این نباشید که آرگومان‌ها چطور به دست می‌آیند؛ فقط روی ترکیب آرگومان‌ها تمرکز کنید تا نتیجه‌ی موردنظر برگردانده شود.

1. تعریف کنید که آیا Pac-Man شبح را می‌خورد

تابع Rules.eat_ghost?/2 را تعریف کنید که دو آرگومان می‌گیرد (اینکه آیا Pac-Man قرص قدرت فعال دارد و اینکه آیا Pac-Man با یک شبح در تماس است) و «مقدار منطقی» را برمی‌گرداند که نشان می‌دهد آیا Pac-Man می‌تواند شبح را بخورد. تابع باید تنها زمانی «درست» را برگرداند که Pac-Man قرص قدرت فعال داشته باشد و با یک شبح در تماس باشد.

Rules.eat_ghost?(false, true)
# => false

2. تعریف کنید که آیا Pac-Man امتیاز می‌گیرد

تابع Rules.score?/2 را تعریف کنید که دو آرگومان می‌گیرد (اینکه آیا Pac-Man با یک قرص قدرت در تماس است و اینکه آیا Pac-Man با یک نقطه در تماس است) و یک مقدار منطقی برمی‌گرداند که نشان می‌دهد آیا Pac-Man امتیاز گرفته است. اگر Pac-Man با یک قرص قدرت یا یک نقطه در تماس باشد، تابع باید «درست» را برگرداند.

Rules.score?(true, true)
# => true

3. تعریف کنید که آیا Pac-Man می‌بازد

تابع Rules.lose?/2 را تعریف کنید که دو آرگومان می‌گیرد (اینکه آیا Pac-Man قرص قدرت فعال دارد و اینکه آیا Pac-Man با یک شبح در تماس است) و یک مقدار منطقی برمی‌گرداند که نشان می‌دهد آیا Pac-Man می‌بازد. اگر Pac-Man با یک شبح در تماس باشد و قرص قدرت فعالی نداشته باشد، تابع باید «درست» را برگرداند.

Rules.lose?(false, true)
# => true

4. تعریف کنید که آیا Pac-Man می‌برد

تابع Rules.win?/3 را تعریف کنید که سه آرگومان می‌گیرد (اینکه آیا Pac-Man همه‌ی نقطه‌ها را خورده است، اینکه آیا Pac-Man قرص قدرت فعال دارد و اینکه آیا Pac-Man با یک شبح در تماس است) و یک مقدار منطقی برمی‌گرداند که نشان می‌دهد آیا Pac-Man می‌برد. اگر Pac-Man همه‌ی نقطه‌ها را خورده باشد و بر اساس آرگومان‌های تعریف‌شده در بخش ۳ نباخته باشد، تابع باید «درست» را برگرداند.

Rules.win?(false, true, false)
# => false
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Elixir Exercism

آماده‌اید قوانین پکمن را شروع کنید؟

در Exercism ثبت‌نام کنید تا Elixir را همراه با 58 مفهوم168 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.