Day 04
unknown
php
4 months ago
3.5 kB
66
Indexable
<body style="margin-left: 10px; font-family: consolas; font-size: 18px"> <?php $day = 4; $file = "advent$day.txt"; echo "-- Start processing $file --<br><br>"; $input = file_get_contents($file); $inputArray = explode("\r\n", $input); $xmasArray = array(); foreach ($inputArray as $row) { array_push($xmasArray, str_split($row, 1)); } // check directions $dirArray = [ "NE", "SE", "SW", "NW" ]; // check letters $letterArray = [ "M", "A", "S" ]; // record valid paths $pathArray["X"] = array(); $pathArray["M"] = array(); $pathArray["A"] = array(); $pathArray["S"] = array(); // push As $rowNum = 0; foreach ($xmasArray as $row) { $colNum = 0; foreach ($row as $letter) { if ($letter == "A") array_push($pathArray["A"], [ $rowNum, $colNum ]); $item = $xmasArray[$rowNum][$colNum]; // echo "$item "; $colNum ++; } // echo "<br>"; $rowNum ++; } // checker function function check($row, $col, $dir, $letter) { global $xmasArray; global $pathArray; switch ($dir) { case "N": $row --; break; case "NE": $row --; $col ++; break; case "E": $col ++; break; case "SE": $row ++; $col ++; break; case "S": $row ++; break; case "SW": $row ++; $col --; break; case "W": $col --; break; case "NW": $row --; $col --; break; } if (isset($xmasArray[$row][$col])) if ($xmasArray[$row][$col] == $letter) { // echo "True<br>"; array_push($pathArray[$letter], [ $row, $col, $dir ]); } else { // echo "False<br>"; } } function check2($row, $col, $dir, $letter) { global $xmasArray; global $pathArray; switch ($dir) { case "NE": $row = $row + 2; $col = $col - 2; break; case "SE": $row = $row - 2; $col = $col - 2; break; case "SW": $row = $row - 2; $col = $col + 2; break; case "NW": $row = $row + 2; $col = $col + 2; break; } if (isset($xmasArray[$row][$col])) if ($xmasArray[$row][$col] == $letter) { // echo "True<br>"; array_push($pathArray[$letter], [ $row, $col, $dir ]); } else { // echo "False<br>"; } } $count = 0; foreach ($pathArray["A"] as $loc) { foreach ($dirArray as $dir) { check($loc[0], $loc[1], $dir, "M"); } if (count($pathArray["M"]) == 2) { foreach ($pathArray["M"] as $loc) { check2($loc[0], $loc[1], $loc[2], "S"); } if (count($pathArray["S"]) == 2) $count ++; $pathArray["S"] = array(); } $pathArray["M"] = array(); } echo $count; echo "<br><br>-- Finished processing $file --<br>";
Editor is loading...
Leave a Comment