<?php

$map = array_map(
    static function ($line) {
        return array_map('intval', str_split($line));
    },
    explode("\n", file_get_contents('./input.txt'))
);

$height = count($map);
$width = count($map[0]);

for ($i = 1; $i < 5; $i++) {
    for ($row = 0; $row < $height; $row++) {
        for ($cell = 0; $cell < $width; $cell++) {
            $new_cell = $map[$row][$cell] + $i;
            if ($new_cell > 9) {
                $new_cell = $new_cell - 9;
            }
            $map[$row][] = $new_cell;
        }
    }
}

$width = count($map[0]);

for ($i = 1; $i < 5; $i++) {
    for ($row = 0; $row < $height; $row++) {
        $new_row = [];
        for ($cell = 0; $cell < $width; $cell++) {
            $new_cell = $map[$row][$cell] + $i;
            if ($new_cell > 9) {
                $new_cell = $new_cell - 9;
            }
            $new_row[] = $new_cell;
        }
        $map[] = $new_row;
    }
}

include_once './vendor/autoload.php';

$grid = new BlackScorp\Astar\Grid($map);
$startPosition = $grid->getPoint(0, 0);
$endPosition = $grid->getPoint(count($map) - 1, count($map[0]) - 1);

$astar = new BlackScorp\Astar\Astar($grid);
$nodes = $astar->search($startPosition,$endPosition);
if(count($nodes) === 0){
    echo "Path not found";
}else{
    foreach($nodes as $node){
        echo sprintf('%s / %s : %s %s', $node->getX(), $node->getY(), $node->getScore(), "\n");
    }
    echo $node->getTotalScore();
}