Важное редактирование: ранее в примере 1 было неверное значение. Оно было исправлено.
Вам дан двумерный массив, в котором каждая ячейка содержит одно из четырех значений.
Примеры:
1 2 2 2 2 1 @ . . X X V
1 3 1 4 1 4 e . @ I C V
2 3 1 3 4 2 H H @ X I V
1 4 4 2 1 3 V C C
2 2 2 3 2 3 X X X
Четыре значения представляют стрелки направления (вверх, вниз, влево и вправо), хотя вы не знаете, какое значение представляет какое направление.
Стрелки направления образуют непрерывный путь, который включает каждую ячейку в массиве, хотя вы не знаете, где находятся начальная или конечная точки.
Напишите некоторый код, который определяет, какое направление представляет каждое из четырех значений и где находятся начальная и конечная точки.
Приемлемое возвращаемое значение для массива, который содержит значения A, B, C и D, будет выглядеть примерно так:
{ up: A, down: C, left: D, right: B, start: [2, 0], end: [4, 2] }
Поскольку вы можете пройти путь в обоих направлениях (от начала до конца и от конца к началу), всегда будет более одного правильного решения и может быть более двух. Предположим, что входные данные, которые вы получаете (как в приведенных выше примерах), всегда имеют хотя бы одно правильное решение. В тех случаях, когда существует более одного правильного решения, достаточно вернуть только одно из правильных решений.
Самый короткий код выигрывает. Я выберу победителя через 7 дней или 24 часа без новой заявки, в зависимости от того, что произойдет раньше.
Я включаю решения для приведенных выше примеров, но я рекомендую вам проверять их только после написания кода:
Один:
{вверх: 3, вниз: 1, слева: 4, справа: 2, начало: [0,0], конец: [2,5]}
Два:
{вверх: '@', вниз: 'e', слева: '.', справа: 'H', начало: [1,1], конец: [0,0]}
Три:
{вверх: 'I', вниз: 'V', слева: 'C', справа: 'X', начало: [0,2], конец: [4,2]}
