Треки
/
Elixir
Elixir
/
Вправи
/
Правила Pacman
Правила Pacman

Правила Pacman

Навчальна вправа

Вступ

Булеві значення (англ. Boolean)

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 привида) і повертає булеве значення (англ. Boolean), якщо 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 зʼїв усі крапки і не програв за аргументами, визначеними в частині 3.

Rules.win?(false, true, false)
# => false
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Правила Pacman?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.