Треки
/
Python
Python
/
Вправи
/
Сідлові точки
Сідлові точки

Сідлові точки

Легка

Вступ

Ми плануємо збудувати будиночок на дереві в лісі неподалік від нашого дому, щоб спостерігати за сходом і заходом сонця.

Ми отримали дані від місцевої геодезичної компанії про висоту кожного дерева в кожній прямокутній ділянці карти. Нам потрібно проаналізувати кожну сітку на карті, щоб знайти гарні дерева для нашого будиночка на дереві.

Гарне дерево має бути одночасно:

  • вищим за всі дерева на схід і на захід від нього, щоб мати якомога кращий вид на схід і захід сонця;
  • нижчим за всі дерева на північ і на південь від нього, щоб якомога менше доводилося лазити по деревах.

Вказівки

Наше завдання - знайти потенційні дерева, на яких можна збудувати будиночок.

Компанія з даних надає дані у вигляді сіток, які показують висоти дерев. Рядки сітки відповідають напрямку схід-захід, а стовпці - напрямку північ-південь.

Придатним буде дерево, найбільше у своєму рядку і водночас найменше у своєму стовпці.

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

Ось сітка, у якій є рівно одне дерево-кандидат.

      ↓
      1  2  3  4
    |-----------
  1 | 9  8  7  8
→ 2 |[5] 3  2  4
  3 | 6  6  7  1
  • У рядку 2 є значення 5, 3, 2 і 4. Найбільше значення - 5.
  • У стовпці 1 є значення 9, 5 і 6. Найменше значення - 5.

Отже, точка [2, 1] (рядок: 2, стовпець: 1) - чудове місце для будиночка на дереві.

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

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

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

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

# if the matrix is irregular
raise ValueError("irregular matrix")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Python Exercism

Час розпочати Сідлові точки?

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