Сапер

Сапер

Складна

Вступ

Сапер - популярна гра, у якій гравець має знайти міни за числовими підказками, що показують, скільки мін безпосередньо межує з клітинкою (по горизонталі, вертикалі або діагоналі).

Вказівки

У цій вправі ми додаємо кількість мін до порожніх клітинок готового ігрового поля «Сапер». Саме поле має форму прямокутника, що складається з клітинок, і кожна з них або порожня (' '), або містить міну ('*').

Для кожної порожньої клітинки порахуймо кількість сусідніх мін (по горизонталі, по вертикалі, по діагоналі). Якщо в порожньої клітинки немає сусідніх мін, залишмо її порожньою. Інакше замінімо її на кількість сусідніх мін.

Наприклад, ми можемо отримати поле 5 x 4 такого вигляду (тут порожні клітинки позначено символом '·' для показу на екрані):

·*·*·
··*··
··*··
·····

І ось на що його має перетворити наш код:

1*3*1
13*31
·2*2·
·111·

Інструкції, специфічні для цього треку

Формат мінного поля

Мінне поле подано як рядок тексту (англ. string), у якому кожен рядок завершується символом нового рядка.

Наприклад: " \n * \n \n"

Зарезервована памʼять

Буфер для вхідного рядка тексту займає байти 64-319 лінійної памʼяті.

За потреби вхідний рядок тексту можна змінити на місці.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
WebAssembly Exercism

Час розпочати Сапер?

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

Глибоке занурення у Сапер!

Ми розглянемо вкладені цикли `for`, вдале застосування min/max для спрощення перевірки меж, функціональні конвеєри та роботу з двовимірними матрицями.