В последнее время гексагональные сетки стали довольно популярным решением проблем, связанных с двумерными данными. Тем не менее, кажется, что столь же интересными треугольными сетками до сих пор в значительной степени пренебрегали. Я хотел бы исправить это с довольно простой задачей.
Во-первых, как мы представляем треугольную сетку? Рассмотрим следующий пример (пока игнорируйте правильную диаграмму):
Ячейки аккуратно попадают на регулярную сетку (отличие от обычной сетки состоит только в том, какие клетки считаются смежными):
1234567
89abcde
fghijkl
mnopqrs
Теперь, как показывает правая диаграмма, треугольная сетка имеет три основные оси: горизонтальную и две диагональные.
Выделив их в сетке ASCII:
AVAVAVA
VAabcAV
fVAiAVl
mnVAVrs
Соревнование
Вам дана прямоугольная строка, представляющая треугольную сетку (где верхний левый угол - это направленный вверх треугольник). Большинство ячеек будет .
, но будет ровно две #
, например:
....#
.#...
.....
Определите, #
выровнены ли эти два элемента вдоль любой из трех осей сетки (т.е. лежат ли они в одном ряду в любом из трех направлений, выделенных выше). Для этого примера ответ «нет».
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Входные данные могут быть одной строкой, разделенной переводом строки или другим удобным символом, или списком строк. Вы можете использовать любые два (непротиворечивых) печатных символа ASCII вместо .
и #
.
Вывод должен быть истинным значением, если выделенные ячейки выровнены, и ложным значением в противном случае.
Применяются стандартные правила игры в гольф .
Тестовые случаи
Правдивые сетки:
.#..#.
#
#
...........
...#.......
...........
...........
...........
.......#...
...........
...........
.......#...
...........
...........
...........
...#.......
...........
.#.........
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.......#...
.........#.
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
...#.......
...........
.#.....#...
...........
...........
...........
Ложные сетки:
#.....
.....#
.....#
#.....
...#.......
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.........#.
.......#...
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
.#.........
источник