Day 04
unknown
php
a year ago
3.5 kB
79
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