Описові ключові слова (для пошуку): Зробіть дві матриці еквівалентними, перекриттями, масивом, знайдіть
Виклик
У Санта в минулому була історія, коли ельфи крали подарунки зі свого сховища, тому в цьому році він сконструював замок, який дуже важко зламати, і, схоже, в цьому році ельфів утримав. На жаль, він втратив комбінацію, і він не може зрозуміти, як її відкрити! На щастя, він найняв вас написати програму, щоб знайти комбінацію. Він не повинен бути найкоротшим, але він повинен знайти його якомога швидше!
У нього дуже суворий графік, і він не може дозволити собі довго чекати. Вашим балом буде загальний час роботи вашої програми, помножене на кількість кроків, які ваша програма виводить для введення оцінки. Виграє найнижчий рахунок.
Технічні умови
Замок - це квадратна матриця 1s і 0s. Він встановлений у випадковому розташуванні 1s і 0s і його потрібно встановити у визначеному коді. На щастя, Санта запам’ятовує необхідний код.
Є кілька кроків, які він може виконати. Кожен крок може бути виконаний на будь-якій суміжній підматриці (тобто виберіть підматрицю, яка повністю обмежена вгорі-лівому та правому нижньому куті) (це може бути неквадратна підматриця):
- Поворот праворуч на 90 градусів *
- Поворот ліворуч на 90 градусів *
- Поворот на 180 градусів
- Обведіть усі
n
елементи рядка праворуч або ліворуч (обгортання) - Циклічні
m
елементи кожного стовпчика вгору або вниз (обгортання) - Переверніть горизонтально
- Переверніть вертикально
- Переверніть головну діагональ *
- Переверніть головну протидіагональну *
* тільки якщо підматриця квадратна
Звичайно, він також може виконати ці дії на всій матриці. Оскільки 1s і 0s можна заміняти лише на матриці, але значення квадрата неможливо змінити безпосередньо, число 1s і 0s є однаковим для конфігурації початку і кінця.
Специфікації форматування + правила
Ви отримаєте вхід у вигляді двох квадратних матриць (вихідна позиція та кінцева позиція) у будь-якому потрібному форматі. Вихід повинен бути послідовністю цих кроків у будь-якому читаному форматі. Оскільки це не код-гольф, будь ласка, зробіть його легко перевіряемим форматом, але це не сувора вимога. При бажанні ви можете взяти бічну довжину матриць на вході.
Ваша програма буде запускатися на моєму комп’ютері (Linux Mint, точні відомості про версію, доступні за запитом, якщо хтось турбується: P), і я буду її визначати, залежно від часу, коли я натискаю "enter" у командному рядку, і коли команда виходить.
Випробування
1 0 0 1 0 0 0 0
0 1 1 0 -> 0 0 0 0
0 1 1 0 -> 1 1 1 1
1 0 0 1 1 1 1 1
- Візьміть всю матрицю. Обведіть кожен стовпець вгору 1.
- Візьміть середні два стовпчики як підматрицю. Прокрутіть кожен стовпчик вниз 2.
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 -> 0 1 1 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
- Візьміть всю матрицю. Обведіть кожен стовпчик вниз по 1.
- Візьміть середній стовпчик. Прокрутіть його вниз 2.
- Візьміть верхні 2 ряди. Переверніть його вертикально.
- Візьміть у верхньому ряду найправіші 2 елементи. Поміняйте ними місцями (поверніть праворуч / ліворуч 1, поверніть горизонтально).
- Візьміть 2 верхнього лівого краю верхнього ряду. Поміняйте їх.
Можуть бути і більш ефективні методи, але це не має значення. Не соромтеся вказати їх у коментарях, якщо ви все-таки знайдете його :)
Судова перевірка
Цей тестовий випадок буде використаний для оцінювання ваших даних. Якщо я вважаю, що відповідь занадто сильно спеціалізується на тестовому випадку, я маю право переписати випадковий вклад і переоцінити всі відповіді з новим випадком. Тестовий випадок можна знайти тут, де верх - це початок, а низ - потрібна конфігурація.
Якщо я вважаю, що відповіді занадто багато спеціалізуються, наступний тестовий випадок - MD5 3c1007ebd4ea7f0a2a1f0254af204eed
. (Це написано тут прямо зараз, щоб звільнити себе від звинувачень у обманах: P)
Застосовуються стандартні лазівки. Відповідь не буде прийнято. Щасливого кодування!
Примітка. Натхнення для цієї серії викликів я черпав з Advent Of Code . Я не маю приналежності до цього сайту
Ви можете переглянути список усіх викликів у серії, переглянувши розділ "Пов'язані" першого виклику тут .
0
-х та 641
-х, і є загальні256 choose 64 ≈ 1.9 × 10⁶¹
досяжні матриці. (що можна порівняти з Megaminx і більше, ніж помста Рубіка, хоча набагато менше куба професора)