Пошаговые тактические игры, такие как Advance Wars, Wargroove и Fire Emblem, состоят из квадратной сетки с изменяющимся ландшафтом с единицами разных классов движения, требующих разных затрат для каждого типа местности. Мы будем исследовать часть этой проблемы.
Вызов
Ваша задача состоит в том, чтобы определить, достижимо ли одно местоположение из другого, учитывая сетку стоимости местности и скорость движения.
Юниты могут двигаться только ортогонально, если стоимость перемещения на квадрат равна значению соответствующей ячейки на сетке (перемещение бесплатно). Например, перемещение из ячейки с ценностью 3 в ячейку с ценностью 1 стоит 1 движение, но для перехода в другой путь требуется 3. Некоторые квадраты могут быть недоступны.
пример
1 [1] 1 1 1
1 2 2 3 1
2 3 3 3 4
1 3 <1> 3 4
Перемещение от [1]
к <1>
требует минимум 7 пунктов движения, перемещаясь вправо на одну клетку, а затем вниз на три. Таким образом, если задано 6 или менее в качестве скорости движения, вы должны вывести ложный ответ.
Примеры тестовых случаев
Они будут использовать нулевые индексы (строка, столбец) с верхним левым началом, а не заключенные в квадратные скобки ячейки для начала и конца, чтобы упростить анализ. Недоступные ячейки будут представленыX
Дело 1а
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (2, 3) to (0, 1)
Output: True
Дело 1б
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 4
From (2, 3) to (0, 1)
Output: False
Дело 1с
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (0, 1) to (2, 3)
Output: False
Дело 2а
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (3, 4) to (2, 1)
Output: True
Дело 2б
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 4
From (3, 4) to (2, 1)
Output: False
Дело 2с
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (1, 8) to (2, 7)
Output: True
Дело 3а
2 1 1 2
2 3 3 1
Speed: 3
From (0, 0) to (1, 1)
Output: False
Дело 3б
2 1 1 2
2 3 3 1
Speed: 3
From (1, 1) to (0, 0)
Output: True
Правила, предположения и примечания
- Стандартные лазейки запрещены, ввод / вывод может быть в любом удобном формате
- Вы можете предположить, что все координаты находятся в сетке
- Скорость движения никогда не будет больше 100
- Недоступные ячейки могут быть представлены с очень большими числами (например, 420, 9001, 1 миллион) или с 0 или нулем, в зависимости от того, что наиболее удобно для вас.
- Все входные данные будут состоять из положительных целых чисел (если только не использовать ноль или 0 для представления недоступных ячеек)
источник
Ответы:
TSQL-запрос,
205191 байтВвод является табличной переменной @t
@ x = начало xpos, @ y = начало ypos @ i = конец xpos, @ j = конец ypos @ = скорость
Попробуй онлайн версию без игры в гольф
источник
Python 2 , 220 байт
Попробуйте онлайн!
Принимает массив
m
целых чисел со'X'
значением больше 100; скоростьa
,m
имеющая ширинуw
и высотуh
; и возвращает то, что мы можем начать с нумерованной строки строки / столбца(r,c)
и добраться до последней ячейки(R,C)
.Алгоритм представляет собой модифицированную заливку. Слегка негольфированный код:
источник
JavaScript (ES7),
116113 байтов(matrix)([endRow, endCol])(speed, startRow, startCol)
Попробуйте онлайн!
комментарии
источник
Желе , 59 байт
Попробуйте онлайн!
Не очень быстро; пробует все пути, пока единицы скорости не будут исчерпаны, даже повторяя его шаги. Однако это избавляет от необходимости проверять, посещаются ли места. Ввод предоставляется как
[nrows, ncols],[start_row, start_col],[end_row, end_col],speed,flattened matrix column-major
объяснение
Вспомогательная ссылка
Главная ссылка
источник
Желе , 38 байт
Чрезвычайно неэффективная полная программа, принимающая рельеф (с невидимыми значениями, равными 101), затем начало и конец, а затем скорость.
Попробуйте онлайн! (не так много смысла пробовать большинство тестовых случаев!)
Как?
Создает список всех перестановок каждого из наборов мощности «всех местностей местности, кроме начала и конца», окружает каждую из них начальными и конечными точками, фильтрует те, которые делают только ортогональные перемещения на расстоянии один, отбрасывает начало из каждого указатели возвращаются в рельеф, суммируют каждый, берет минимум, вычитает один и проверяет, что это меньше скорости.
источник