Day 2 solution.

This commit is contained in:
dan612 2025-12-12 17:40:04 -05:00
parent 2b2bc8f134
commit 3f2ac3a266
2 changed files with 53 additions and 5 deletions

View File

@ -0,0 +1 @@
851786270-851907437,27-47,577-1044,1184-1872,28214317-28368250,47766-78575,17432-28112,2341-4099,28969-45843,5800356-5971672,6461919174-6461988558,653055-686893,76-117,2626223278-2626301305,54503501-54572133,990997-1015607,710615-802603,829001-953096,529504-621892,8645-12202,3273269-3402555,446265-471330,232-392,179532-201093,233310-439308,95134183-95359858,3232278502-3232401602,25116215-25199250,5489-8293,96654-135484,2-17

View File

@ -1,17 +1,64 @@
<?php
namespace Aoc2025\Days;
use Aoc2025\Day;
class Day2 extends Day {
private function isInvalidId($num) {
$str = (string)$num;
$len = strlen($str);
// Try all possible pattern lengths (from 1 to len/2)
for ($patternLen = 1; $patternLen <= $len / 2; $patternLen++) {
// Only check if the pattern length divides evenly into total length
if ($len % $patternLen !== 0) {
continue;
}
$pattern = substr($str, 0, $patternLen);
$repetitions = $len / $patternLen;
// Must repeat at least twice
if ($repetitions < 2) {
continue;
}
// Check if the entire string is this pattern repeated
$repeated = str_repeat($pattern, $repetitions);
if ($repeated === $str) {
return true;
}
}
return false;
}
public function run() {
$input = $this->getInputFile('day_2_input.txt');
// Parse ranges
$ranges = explode(',', trim($input));
$sumPart1 = 0;
$sumPart2 = 0;
foreach ($ranges as $range) {
$range = trim($range);
list($start, $end) = explode('-', $range);
$start = (int)$start;
$end = (int)$end;
// Check each number in range
for ($id = $start; $id <= $end; $id++) {
if ($this->isInvalidId($id)) {
$sumPart2 += $id;
}
}
}
return [
'part_1' => 0,
'part_2' => 0,
'part_1' => $sumPart1,
'part_2' => $sumPart2,
];
}
}