Тестовое задание.
Есть поле 5x5. Каждая ячейка поля наполняется случайными числами от 0 до 3. Например:
0 | 1 | 2 | 3 | 0 |
---|---|---|---|---|
1 | 2 | 3 | 0 | 1 |
2 | 3 | 0 | 1 | 2 |
3 | 0 | 1 | 2 | 3 |
0 | 1 | 3 | 3 | 3 |
Соседними считаются ячейки граничащие друг с другом своими сторонами, диагональные элементы не считаются соседними. Соседние ячейки для числа 2 - координаты (1,1) из примера выше:
_ | 1 | _ | _ | _ |
---|---|---|---|---|
1 | 2 | 3 | _ | _ |
_ | 3 | _ | _ | _ |
_ | _ | _ | _ | _ |
_ | _ | _ | _ | _ |
Если на поле существуют такие соседние ячейки, числа в которых одинаковы и таких ячеек 4+, то считается, что они образовали кластер. Пример кластера:
_ | _ | _ | _ | _ |
---|---|---|---|---|
_ | _ | _ | _ | _ |
_ | _ | _ | _ | _ |
_ | _ | _ | _ | 3 |
_ | _ | 3 | 3 | 3 |
Задание:
- Написать генератор поля 5х5
- Написать алгоритм оптимального поиска кластеров вида
findClusters(field: Field): Array<Cluster>
. На выходе ожидается массив кластеров - Оценить сложность полученного алгоритма
- Если задача кажется слишком простой, то размер поля и размер кластера сделать вариативными