Тест

Есть 12 квадратов с произвольными числами от 0 до 9 в углах. Квадраты расставлены следующим образом:

(числа в углах даны для примера, далее как пример №1)

 

Квадраты надо поменять местами таким образом, чтобы сумма чисел четырех соприкасающихся углов была равна 10 (подкрашено зеленым), а двух или трех углов - не более 10 (подкрашено желтым).

Язык программирования – Scala http://www.scala-lang.org/ (мы не проверяем уровень знания 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