Company / Career / Test

Test

Есть 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