ai-lab-one/main.py

36 lines
1.3 KiB
Python
Executable File

#!.venv/bin/python
# I am but a silly little NixOS user who cannot use normal shebangs
from emis_funky_funktions import *
from sys import argv
from operator import eq
from time import perf_counter_ns
from a_star import pathfind_multi
from read_in import load_points, load_world_from_paths
from world import Point, World
from write_out import save_map
def main(terrain_path: str, elevation_path: str, checkpoints_path: str, image_output: str):
start_time = perf_counter_ns()
world = unwrap_r(load_world_from_paths(terrain_path, elevation_path))
checkpoints = unwrap_r(load_points(checkpoints_path))
print('All files loaded, begining search...', end = ' ')
loaded_time = perf_counter_ns()
maybe_path = pathfind_multi(
world.neighbors,
world.heuristic,
checkpoints
)
finish_time = perf_counter_ns()
path, cost = unwrap_opt(maybe_path)
print(f'Path found!\n')
print(f'Loading resources completed in {(loaded_time - start_time) // 1_000_000}ms')
print(f'Search completed in {(finish_time - loaded_time) // 1_000_000}ms\n')
print(f'Estimated travel time: {cost//60_000_000} minutes')
path_length = unwrap_r(world.calculate_path_length(path))
print(f'Total path length: {path_length/1_000_000:.1f} kilometers')
save_map(image_output, world, path)
if __name__ == '__main__':
main(*argv[1:])