Проблема
Уявіть, 7 відер вишикувалися поспіль. Кожне відро може містити не більше 2 яблук. Є 13 яблук із позначкою від 1 до 13. Вони розподілені між 7 відрами. Наприклад,
{5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1}
Де 0 представляє порожній простір. Порядок, в якому яблука з’являються у кожному відрі, не має значення (наприклад, {5,4} еквівалентно {4,5}).
Ви можете перемістити будь-яке яблуко з одного відра до сусіднього відра, за умови, що у відрі для призначення є місце для іншого яблука. Кожен хід описується номером яблука, яке ви хочете перемістити (що однозначно, оскільки є лише одне порожнє місце). Наприклад, застосування ходи
7
до вищезазначеної домовленості призведе до
{5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1}
Об'єктивна
Напишіть програму, яка зчитує домовленість із STDIN та сортує її за наступною компонуванням
{1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0}
використовуючи якомога менше рухів. Знову ж, порядок появи яблук у кожному відрі не має значення. Порядок відра має значення. Він повинен виводити ходи, які використовуються для сортування кожної композиції, відокремленої комами. Наприклад,
13, 7, 6, ...
Ваш бал дорівнює сумі кількості ходів, необхідних для вирішення наступних домовленостей:
{8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, 5}
{3, 1}, {6, 9}, {7, 8}, {2, 11}, {10, 5}, {13, 4}, {12, 0}
{0, 2}, {4, 13}, {1, 10}, {11, 6}, {7, 12}, {8, 5}, {9, 3}
{6, 9}, {2, 10}, {7, 4}, {1, 8}, {12, 0}, {5, 11}, {3, 13}
{4, 5}, {10, 3}, {6, 9}, {8, 13}, {0, 2}, {1, 7}, {12, 11}
{4, 2}, {10, 5}, {0, 7}, {9, 8}, {3, 13}, {1, 11}, {6, 12}
{9, 3}, {5, 4}, {0, 6}, {1, 7}, {12, 11}, {10, 2}, {8, 13}
{3, 4}, {10, 9}, {8, 12}, {2, 6}, {5, 1}, {11, 13}, {7, 0}
{10, 0}, {12, 2}, {3, 5}, {9, 11}, {1, 13}, {4, 8}, {7, 6}
{6, 1}, {3, 5}, {11, 12}, {2, 10}, {7, 4}, {13, 8}, {0, 9}
Так, кожна з цих домовленостей має рішення.
Правила
- Ваше рішення повинно працювати в поліноміальний час у кількості відра за хід. Сенс полягає у використанні розумної евристики.
- Усі алгоритми повинні бути детермінованими.
- У разі вирівнювання виграє найкоротший байт.