Вступ
Напишіть розгадувач для загадок Хіторі, використовуючи найменші байти.
Виклик
Ваше завдання - написати розв'язувач для хіторів (ひ と り, японське слово «один»; значення назви гри - «Залиште мене в спокої») логічні пазли. Правила такі:
- Вам представлена сітка n-на-n комірок, кожна комірка містить ціле число від 1 до n (включно).
- Ваша мета - переконатися, що жодне число не з’являється більше одного разу в кожному рядку та кожному стовпці сітки, видаляючи номери з даної сітки, за умови обмеження, зазначеного у наступних двох правилах,
- Не можна видалити два числа з двох сусідніх (по горизонталі чи вертикалі) комірок.
- Решта пронумеровані комірки повинні бути з'єднані між собою. Це означає, що будь-які дві нумеровані осередки, що залишилися, можуть бути з'єднані з кривою, яка складається виключно з відрізків, що з'єднують суміжні залишкові числа (горизонтально або вертикально). (Дякуємо @ user202729 за те, що він вказав, що цього немає)
Я сподіваюся, що правила до цього часу зрозумілі. Якщо в правилах є щось незрозуміле, перевірте сторінку Вікіпедії .
Випробування
Осередки, з яких вилучаються числа, представлені 0.
Input -> Output
4
2 2 2 4 0 2 0 4
1 4 2 3 -> 1 4 2 3
2 3 2 1 2 3 0 1
3 4 1 2 3 0 1 2
4
4 2 4 3 0 2 4 3
4 1 1 2 -> 4 1 0 2
3 1 2 1 3 0 2 1
4 3 1 3 0 3 1 0
5
1 5 3 1 2 1 5 3 0 2
5 4 1 3 4 5 0 1 3 4
3 4 3 1 5 -> 3 4 0 1 5
4 4 2 3 3 4 0 2 0 3
2 1 5 4 4 2 1 5 4 0
8
4 8 1 6 3 2 5 7 0 8 0 6 3 2 0 7
3 6 7 2 1 6 5 4 3 6 7 2 1 0 5 4
2 3 4 8 2 8 6 1 0 3 4 0 2 8 6 1
4 1 6 5 7 7 3 5 -> 4 1 0 5 7 0 3 0
7 2 3 1 8 5 1 2 7 0 3 0 8 5 1 2
3 5 6 7 3 1 8 4 0 5 6 7 0 1 8 0
6 4 2 3 5 4 7 8 6 0 2 3 5 4 7 8
8 7 1 4 2 3 5 6 8 7 1 4 0 3 0 6
9
8 6 5 6 8 1 2 2 9 8 0 5 6 0 1 2 0 9
5 6 2 4 1 7 9 8 3 5 6 2 4 1 7 9 8 3
5 8 2 5 9 9 8 2 6 0 8 0 5 0 9 0 2 0
9 5 6 6 4 3 8 4 1 9 5 6 0 4 3 8 0 1
1 1 6 3 9 9 5 6 2 -> 0 1 0 3 9 0 5 6 2
1 1 4 7 3 8 3 8 6 1 0 4 7 0 8 3 0 6
3 7 4 1 2 6 4 5 5 3 7 0 1 2 6 4 5 0
3 3 1 9 8 7 7 4 5 0 3 1 9 8 0 7 4 5
2 9 7 5 3 5 9 1 3 2 9 7 0 3 5 0 1 0
Ці тестові приклади взяті відповідно з концептуальних головоломок , головоломки , концептуальних головоломок , Вікіпедії та Youtube .
Технічні характеристики
Не потрібно турбуватися про обробку винятків.
Ви можете припустити, що вхід - це завжди дійсна головоломка з унікальним рішенням, і ви можете скористатися цим, написавши свій код.
Це код-гольф , найменша кількість виграних байтів.
4 <= n <= 9 (16 спочатку було змінено на 9 за пропозицією Стіві Гріффіна, також врятуйте деякі проблеми в IO)
Ви можете взяти вхід і надати вихід через будь-яку стандартну форму , і ви можете вільно вибрати формат.
Деякі пропозиції щодо вихідного формату є (але ви не обмежуєтесь цим)
- Виведення підсумкової сітки
- Виведення сітки, що містить усі вилучені числа
- Виведіть список координат одного з вищезазначених
Як завжди, тут застосовуються лазівки за замовчуванням .
Пов'язане (натхнене цим викликом): Перевірте, чи всі елементи в матриці пов'язані
Моє останнє завдання: продовження гри сімки
4 <= n <= 16
, але найбільший тестовий випадок призначений дляn=9
. Я пропоную вам або опублікуватиn=16
тестовий випадок, або сказати4 <= n <= 9
. Приємний виклик до речі :)