У цій вправі ми реалізуємо програму, яка визначає стан гри в хрестики-нулики. (Можливо, цю гру також знають як «noughts and crosses» або «Xs and Os».)
Гра відбувається на полі 3×3.
Гравці по черзі ставлять X та O на поле.
Гра закінчується, коли один гравець перемагає, поставивши три свої позначки в рядок, стовпець або по діагоналі поля, або коли все поле заповнене.
У цій вправі ми припускаємо, що першим ходить X.
Наше завдання - визначити, у якому стані перебуває задана гра.
Є 3 можливі стани гри:
Якщо задане поле неправильне, киньте відповідну помилку.
Поле вважається неправильним, якщо виконуються такі умови:
X). | |
X | |
___|___|___
| |
| X | O
___|___|___
| |
O | X |
| |
| |
X | O | X
___|___|___
| |
X | X | O
___|___|___
| |
O | X | O
| |
| |
X | X | X
___|___|___
| |
| O | O
___|___|___
| |
| |
| |
| |
O | O | X
___|___|___
| |
| |
___|___|___
| |
| |
| |
| |
X | X | X
___|___|___
| |
O | O | O
___|___|___
| |
| |
| |
У цій вправі нам дано два enum.
Обидва типи enum потрібно використати як повернені значення методу state через union.
Докладніше про enum і union можна прочитати в довідковій документації Crystal:
Зареєструйтеся на Exercism, щоб вивчати й опановувати Crystal, а також 26 концепцій142 вправи та справжнє наставництво від людей, і все це безкоштовно.