Примечание: это основано на двух дорогах, раскинувшихся в желтом лесу (часть 2) , моей предыдущей проблеме. Из-за популярности этого вопроса и двух дорог, расходящихся в желтом лесу (часть 1) , я хотел сделать третью. Но первые 2 были слишком просты ( 2-байтовый ответ на первом, 15-байтовый ответ на втором.) Поэтому я сделал что-то более сложное ...
Вдохновение
Этот вызов вдохновлен знаменитым стихотворением Роберта Фроста « Дорога не взята» :
Две дороги расходились в желтом лесу,
И мне жаль, что я не мог путешествовать обоими
И быть одним путешественником, долго я стоял
И смотрел вниз на одну так далеко, как мог,
На то, где оно согнулось в подлеске;... 2 абзаца обрезаны ...
Я расскажу это со вздохом
Где-то через века и века:
две дороги расходились в лесу, и я…
я выбрал ту, по которой меньше путешествовал,
И это имело все значение.
Обратите внимание на вторую и последнюю строку I took the one less traveled by,
.
Предыстория
Вам поручили помочь слепому искателю приключений, который идет по дороге и вдохновлен «Дорога не взята» . Авантюрист приближается к развилке дороги и хотел бы выбрать путь, по которому меньше всего путешествуют. Вы должны найти, где на самом деле находится искатель приключений, и сказать искателю приключений, куда следует повернуть.
Соревнование
Ваша цель состоит в том, чтобы найти на вашей карте наименее пройденную дорогу, где дорога разветвляется. Ваша карта представляет собой строку, содержащую новые строки (или \n
, если вы предпочитаете) и имеет неизвестную ширину и высоту. На карте дороги состоят из цифр от 0 до 9 , пересечение состоит из #
s. Вы должны найти дорогу, по которой вы находитесь в данный момент, и из других дорог, по которой вы чаще всего путешествовали, и дорогу, по которой вы слепой искатель приключений. Лес на вашей карте представлен пробелом. Вот простая карта:
2 2
1 0
#
2
2
Эта карта 5 в ширину и 5 в высоту. Обратите внимание, как дорога разветвляется в форме Y. Y может быть ориентирован как угодно, поэтому вы должны понимать «повернутую» карту.
Что #
значит
Там, где разветвится карта #
. Это не влияет на оценку любого пути.
Что на самом деле означают цифры
Каждый путь (строка чисел, может иметь изгиб) имеет оценку. Оценка пути определяется суммированием его цифр, поэтому для первого примера первый путь (сверху слева, по часовой стрелке) имеет оценку 2 + 1 = 3, второй - 2 + 0 = 2, а третий имеет 2 + 2 = 4. Дороги могут содержать номера, соединенные по диагонали.
Найти, где вы находитесь
Вы на пути с наибольшим количеством очков. Другие 2 дорожки - это дорога, по которой больше путешествуют, и дорога, по которой меньше путешествуют. Вам нужно найти дорогу с самым низким счетом.
Рассказать своему путешественнику, куда идти
Вы должны сказать своему путешественнику идти «налево» или «направо». Имейте в виду, что направления с точки зрения вашего путешественника (он стоит перед вилкой.)
Пример карты
14
9#
04
Выход: «вправо» (путник у 9
дороги, 0 + 4 <1 + 4
9
9
9
9
9
#
8 8
8 8
88 88
8 7
Выход: «налево» (путник у 99999
дороги, 8 + 8 + 8 + 8 + 8> 8 + 8 + 8 + 8 + 7
02468
#98765
13579
Выход: «правый» (путник у 98765
дороги, 0 + 2 + 4 + 6 + 8 <1 + 3 + 5 + 7 + 9)
4 2
4 2
#
4
4
2
2
Выход: «правильно» (путник у 4422
дороги, 4 + 4> 2 + 2)
9
9
9
#
8 7
8 7
8 7
Выход «налево» (путник на 999
дороге, 8 + 8 + 8> 7 + 7 + 7
Материал, чтобы знать:
- Карты будут дополнены пробелами, чтобы каждая строка имела одинаковую длину.
- Вы должны вывести в STDOUT / console / file строку
left
илиright
, необязательно, после завершающей строки. - Вы должны принимать входные данные либо как строку, содержащую символы новой строки,
\n
s, либо как массив / список строк (каждая строка является строкой). Место ввода должно быть функцией, аргументом командной строки, файлом или STDIN по одной строке за раз или аналогичным. Переменная не является приемлемым устройством ввода (если это не параметр функции.) Аналогично, переменные-выражения в JS и других языках должны быть назначены переменной. - Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
- Стандартные лазейки запрещены
Вещи, которые вы можете предположить
- Ваш вклад будет действительным. Ничего подобного не будет проверено на:
0 0 0 0 0 # 0 0
- Оценка путей никогда не будет привязана.
- Ввод может иметь любую длину по ширине или высоте, меньшую, чем ограничение строки вашего языка.
- Между двумя путями всегда будет хотя бы 1 пробел.
- Пути могут иметь изгибы, повороты и т. Д. Это дороги, а не дороги.
#
всегда быть в центре по горизонтали?