
C/C++
я уже третий час сижу голову ломаю
Помогите умоляю сделать алгоритм в кумире

нач
лог флаг
флаг := да
нц пока флаг
нц пока справа свободно
если сверху стена и снизу стена
то
закрасить
все
вправо
кц
флаг := нет
нц пока слева свободно
если снизу свободно и не флаг
то
флаг := да
вниз
все
влево
кц
кц
кон
Бекжан Жакыпов
что значит лог и флаг?
Бездарность
импорт heapq
функция heuristic(a, b):
вернуть абс(а[0] - b[0]) + абс(а[1] - b[1])
функция astar(grid, start, end):
open_set = []
heapq.heappush(open_set, (0, start))
came_from = пустой_словарь()
gscore = {start: 0}
fscore = {start: heuristic(start, end)}
пока open_set:
_, current = heapq.heappop(open_set)
если current == end:
path = []
пока current in came_from:
path.append(current)
current = came_from[current]
вернуть path[::-1]
для neighbor из get_neighbors(grid, current):
tentative_gscore = gscore[current] + 1
если neighbor not in gscore или tentative_gscore < gscore[neighbor]:
came_from[neighbor] = current
gscore[neighbor] = tentative_gscore
fscore[neighbor] = tentative_gscore + heuristic(neighbor, end)
heapq.heappush(open_set, (fscore[neighbor], neighbor))
вернуть []
функция get_neighbors(grid, pos):
neighbors = []
для dx, dy из [(1, 0), (-1, 0), (0, 1), (0, -1)]:
new_pos = (pos[0] + dx, pos[1] + dy)
если new_pos[0] >= 0 и new_pos[0] < длина(grid) и new_pos[1] >= 0 и new_pos[1] < длина(grid[0]) и grid[new_pos[0]][new_pos[1]] != 1:
neighbors.append(new_pos)
вернуть neighbors
функция main():
grid = [
[0, 0, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0]
]
start = (0, 0)
end = (4, 0)
path = astar(grid, start, end)
вывести(path)
если __name__ == "__main__":
main()
функция heuristic(a, b):
вернуть абс(а[0] - b[0]) + абс(а[1] - b[1])
функция astar(grid, start, end):
open_set = []
heapq.heappush(open_set, (0, start))
came_from = пустой_словарь()
gscore = {start: 0}
fscore = {start: heuristic(start, end)}
пока open_set:
_, current = heapq.heappop(open_set)
если current == end:
path = []
пока current in came_from:
path.append(current)
current = came_from[current]
вернуть path[::-1]
для neighbor из get_neighbors(grid, current):
tentative_gscore = gscore[current] + 1
если neighbor not in gscore или tentative_gscore < gscore[neighbor]:
came_from[neighbor] = current
gscore[neighbor] = tentative_gscore
fscore[neighbor] = tentative_gscore + heuristic(neighbor, end)
heapq.heappush(open_set, (fscore[neighbor], neighbor))
вернуть []
функция get_neighbors(grid, pos):
neighbors = []
для dx, dy из [(1, 0), (-1, 0), (0, 1), (0, -1)]:
new_pos = (pos[0] + dx, pos[1] + dy)
если new_pos[0] >= 0 и new_pos[0] < длина(grid) и new_pos[1] >= 0 и new_pos[1] < длина(grid[0]) и grid[new_pos[0]][new_pos[1]] != 1:
neighbors.append(new_pos)
вернуть neighbors
функция main():
grid = [
[0, 0, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0]
]
start = (0, 0)
end = (4, 0)
path = astar(grid, start, end)
вывести(path)
если __name__ == "__main__":
main()
Бекжан Жакыпов
правда что-ли? Кто-то откликнулся на мою просьбу?
Бекжан Жакыпов
это что-то не то..
Похожие вопросы
- Помогите умоляю, прошу!!!
- Помогите пожалуйста сделать задачу по программированию C++
- Помогите мне сделать по С++ задание
- Помогите ускорить алгоритм
- Напишите алгоритм подсчета цифр. Помогите.
- Помогите составить алгоритм вычисления функции:
- Помогите реализовать алгоритм на С++
- Алгоритмы. Бинарная сортировка
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Помогите решить алгоритм на с++