Есть 12 квадратов с произвольными числами от 0 до 9 в углах. Квадраты расставлены следующим образом:
(числа в углах даны для примера, далее как пример №1)
Квадраты надо поменять местами таким образом, чтобы сумма чисел четырех соприкасающихся углов была равна 10 (подкрашено зеленым), а двух или трех углов - не более 10 (подкрашено желтым).
Язык программирования – Scala, tutorial. Решения на Java также рассматриваются, но решение на Scala даст Вам значительное преимущество перед другими кандидатами.
На входе текстовый файл, одна строка – четыре числа – значения углов одного квадрата. Порядок строк и чисел в строке следующий:
Для примера №1 файл имеет следующий вид:
1 0 7 5
3 4 1 3
5 1 1 4
7 6 1 8
5 7 4 4
8 3 3 4
7 1 5 4
4 1 1 0
3 1 1 4
2 4 3 8
5 1 1 7
4 2 4 2
Окончательный результат перестановки выводится в консоль в том же формате. Если возможно несколько решений, то выводятся все решения, разделенные пустой строкой.
Оценивается не только правильность решения, но и стиль программирования. Приветствуется лаконичность кода: не краткость имен переменных и отсутствие комментариев, а отсутствие избыточной логики. Скорость работы программы должна быть разумной, ответ должен получаться за единицы секунд. Решения работающие значительно меньше секунды также дают Вам преимущество перед другими кандидатами.
Дополнительные примеры входного файла:
8 0 5 1 1 6 4 0 3 3 3 4
4 4 3 6 6 1 3 5 4 1 3 5
3 7 1 2 4 0 5 2 4 5 3 4
5 0 5 2 4 1 3 5 5 2 1 3
3 0 4 3 5 1 4 2 3 3 7 4
5 1 0 7 6 5 5 4 2 1 3 3
4 0 3 3 4 0 4 6 3 2 6 1
5 4 6 0 5 2 1 4 4 3 3 4
3 4 3 0 4 6 0 1 5 2 2 2
1 7 3 8 2 0 1 4 4 2 2 3
0 7 7 3 3 0 4 5 5 5 1 4
3 2 0 4 4 0 5 1 1 2 5 3
P.S. Для корректного решения задачи не требуется знание специальных алгоритмов, достаточно смекалки, навыков программирования и готовности изучить на минимальном уровне новый язык программирования (Scala).