Есть 12 квадратов с произвольными числами от 0 до 9 в углах. Квадраты расставлены следующим образом:
(числа в углах даны для примера, далее как пример №1)
Квадраты надо поменять местами таким образом, чтобы сумма чисел четырех соприкасающихся углов была равна 10 (подкрашено зеленым), а двух или трех углов - не более 10 (подкрашено желтым).
Язык программирования – Scala http://www.scala-lang.org/ (предпочтительней) или Java.
На входе текстовый файл, одна строка – четыре числа – значения углов одного квадрата. Порядок строк и чисел в строке следующий:
Для примера №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