Треки
/
Haskell
Haskell
/
Вправи
/
Атака ферзя
Атака ферзя

Атака ферзя

Середня

Вказівки

За позиціями двох ферзів на шахівниці визначмо, чи розташовані вони так, що можуть атакувати одна одну.

У шахах ферзь може атакувати фігури, які стоять в одному рядку, стовпці або на одній діагоналі.

Шахівницю можна подати як масив 8 на 8.

Отже, якщо відомо, що білий ферзь стоїть на c5 (з індексацією від нуля: стовпець 2, рядок 3), а чорний ферзь на f2 (стовпець 5, рядок 6), то розташування має такий вигляд:

Шахівниця з двома ферзями. Стрілки, що виходять від ферзя на c5, указують можливі напрямки взяття по вертикалі, горизонталі та діагоналі.

Також можна відповісти, чи можуть ферзі атакувати один одного. У цьому випадку відповідь буде ствердною: так, можуть, бо обидві фігури стоять на одній діагоналі.

Подяка

Зображення шахівниці створив habere-et-dispertire за допомогою LaTeX та пакета chessboard Ульріке Фішер.

Підказки

Щоб виконати цю вправу, реалізуйте такі функції:

  • boardString
  • canAttack

Сигнатури типів уже на місці, але визначте функції самостійно.

Позиції задаються як пари з двох елементів:

  • Перший елемент - рядок (горизонталь у шахових термінах).
  • Другий елемент - стовпець (вертикаль у шахових термінах).
  • (0, 0) - це верхній лівий кут дошки, (0, 7) - верхній правий,
  • (7, 0) - нижній лівий, а (7, 7) - нижній правий.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Haskell Exercism

Час розпочати Атака ферзя?

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