Треки
/
Python
Python
/
Вправи
/
Квіткове поле
Квіткове поле

Квіткове поле

Середня

Вступ

Flower Field - це милосердне переосмислення популярної гри «Сапер». Мета гри - знайти всі квіти в саду, скориставшись числовими підказками, які вказують, скільки квітів безпосередньо прилягає (по горизонталі, вертикалі, діагоналі) до клітинки. «Flower Field» виходила в регіональних версіях Microsoft Windows в Італії, у Німеччині, у Південній Кореї, в Японії та на Тайвані.

Вказівки

Ваше завдання - додати кількість квіток до порожніх клітинок завершеного саду «Квіткове поле». Сам сад - це прямокутна дошка, складена з клітинок, кожна з яких або порожня (' '), або містить квітку ('*').

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

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

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

Який наш код має перетворити на такий:

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

Повідомлення про винятки

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

Ця конкретна вправа вимагає, щоб ми використали інструкцію raise, щоб «кинути» ValueError, коли функція board() отримує некоректні вхідні дані. Тести пройдуть, лише якщо ми і збудимо exception за допомогою raise, і додамо до нього повідомлення.

Щоб збудити ValueError з повідомленням, запишімо повідомлення як аргумент до типу exception:

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Python Exercism

Час розпочати Квіткове поле?

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

Глибоке занурення у Квіткове поле!

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