12th day both parts
This commit is contained in:
29
12/part1.php
Normal file
29
12/part1.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
$input = array_map(fn($line) => explode('-', $line), $input);
|
||||
|
||||
$adjacencyList = [];
|
||||
foreach ($input as $key => $item) {
|
||||
if ($item[1] != 'start') $adjacencyList[$item[0]][] = $item[1];
|
||||
if ($item[0] != 'start') $adjacencyList[$item[1]][] = $item[0];
|
||||
}
|
||||
$history = [];
|
||||
echo track($adjacencyList, "start", $history);
|
||||
function track($adjacencyList, $cave, $history) {
|
||||
$count = 0;
|
||||
$history[] = $cave;
|
||||
foreach($adjacencyList[$cave] as $path) {
|
||||
if(strtolower($path) === $path && in_array($path,$history)) {
|
||||
//bad path, go no further
|
||||
}
|
||||
else if($path == "end") {
|
||||
$count += 1;
|
||||
echo implode(",",$history) ."\n";
|
||||
}
|
||||
else {
|
||||
$count += track($adjacencyList, $path, $history);
|
||||
}
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user