Візьміть 2D область простору, розділену на осі, вирівняні квадратними елементами, їх центри вирівняні через цілі інтервали. Кажуть, що край є внутрішнім, якщо він розділений двома елементами, інакше це зовнішній край.
Ваша мета - знайти мінімальну кількість сусідніх елементів, які необхідно пройти, щоб досягти зовнішнього краю, починаючи від центру кожного елемента, відомого як " traversal distance
або" distance
. Ви можете проходити лише через край (тобто відсутність різання кута / діагоналі). Зауважте, що "зовнішні елементи" (елементи, що мають принаймні один зовнішній край) вважаються необхідними для проходження 0
сусідніх елементів для досягнення зовнішнього краю.
Вхідні дані
Вхід - це список невід’ємних цілих парних координат, що позначають (x, y) центр усіх елементів. Передбачається, що елементів, що перекриваються, немає (тобто пара x / y однозначно ідентифікує елемент). Ви можете не припускати нічого про порядок введення елементів.
Ви можете перетворити початок введення даних у будь-яке місце (наприклад, 0,0 або 1,1 тощо).
Ви можете припустити, що всі вхідні елементи підключені, або іншими словами, можна переходити від будь-якого одного елемента до будь-якого іншого елемента, використовуючи правила, наведені вище. Зауважте, що це не означає, що 2D область просто пов'язана; він може мати отвори всередині нього.
Приклад: нижче наведено недійсний ввід.
0,0
2,0
перевірка помилок не потрібна.
Вхід може бути з будь-якого джерела (файл, stdio, параметр функції тощо)
Вихідні дані
На виході повинен бути список координат, що ідентифікують кожен елемент, і відповідне ціле відстань, пройдене, щоб дістатися до краю. Вихід може бути в будь-якому бажаному порядку елементів (наприклад, вам не потрібно виводити елементи в тому ж порядку, що приймаються як входи).
Вихід може бути до будь-якого джерела (файл, stdio, значення повернення функції тощо)
Будь-який вихід, який відповідає координаті елемента з його зовнішньою відстані, добре, наприклад, все це добре:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Приклади
Приклади тексту вкладаються у формі x,y
з одним елементом на рядок; Ви можете змінити це в зручний формат введення (див. правила введення формату).
Текстові приклади виводів у форматі x,y: distance
з одним елементом на рядок; знову ж таки, вам пропонується переробити це у зручний формат виходу (див. правила виведення формату).
Графічні фігури мають нижню ліву межу як (0,0), а цифри всередині представляють очікувану мінімальну пройдену відстань для досягнення зовнішнього краю. Зауважте, що ці цифри суто для демонстрації; вашій програмі не потрібно їх виводити.
Приклад 1
вхід:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Вихід:
1,0: 0
3,0: 0
0,1: 0
1,2: 0
1,1: 1
2,1: 0
4,3: 0
3,1: 0
2,2: 1
2,3: 0
3,2: 0
3,3: 0
графічне зображення:
Приклад 2
вхід:
4,0
1,1
3,1
4,1
5,1
6,1
0,2
1,2
2,2
3,2
4,2
5,2
6,2
7,2
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
2,4
3,4
4,4
5,4
6,4
3,5
4,5
5,5
вихід:
4,0: 0
1,1: 0
3,1: 0
4,1: 1
5,1: 0
6,1: 0
0,2: 0
1,2: 1
2,2: 0
3,2: 1
4,2: 2
5,2: 1
6,2: 1
7,2: 0
1,3: 0
2,3: 1
3,3: 2
4,3: 2
5,3: 2
6,3: 1
7,3: 0
8,3: 0
2,4: 0
3,4: 1
4,4: 1
5,4: 1
6,4: 0
3,5: 0
4,5: 0
5,5: 0
графічне зображення:
Приклад 3
вхід:
4,0
4,1
1,2
3,2
4,2
5,2
6,2
8,2
0,3
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
1,4
2,4
3,4
4,4
5,4
6,4
7,4
8,4
9,4
2,5
3,5
4,5
5,5
6,5
9,5
10,5
11,5
3,6
4,6
5,6
9,6
10,6
11,6
6,7
7,7
8,7
9,7
10,7
11,7
вихід:
4,0: 0
4,1: 0
1,2: 0
3,2: 0
4,2: 1
5,2: 0
6,2: 0
8,2: 0
0,3: 0
1,3: 1
2,3: 0
3,3: 1
4,3: 2
5,3: 1
6,3: 1
7,3: 0
8,3: 1
9,3: 0
1,4: 0
2,4: 1
3,4: 2
4,4: 2
5,4: 2
6,4: 1
7,4: 0
8,4: 0
9,4: 0
2,5: 0
3,5: 1
4,5: 1
5,5: 1
6,5: 0
9,5: 0
10,5: 0
11,5: 0
3,6: 0
4,6: 0
5,6: 0
9,6: 0
10,6: 1
11,6: 0
6,7: 0
7,7: 0
8,7: 0
9,7: 0
10,7: 0
11,7: 0
графічне зображення:
Оцінка балів
Це код гольфу. Виграє найкоротший код у байтах. Застосовуються стандартні лазівки. Будь-які вбудовані модулі, крім тих, які спеціально розроблені для вирішення цієї проблеми, дозволені.