Ejemplo n.º 1
0
                    $reindeerDetails[$name]['curPeriod'] = $reindeer['time'];
                    $reindeerDetails[$name]['inRest'] = false;
                }
            } else {
                $reindeerDetails[$name]['curPeriod']--;
                $reindeerDetails[$name]['curDistance'] += $reindeer['speed'];
                if ($reindeerDetails[$name]['curPeriod'] <= 0) {
                    $reindeerDetails[$name]['curPeriod'] = $reindeer['rest'];
                    $reindeerDetails[$name]['inRest'] = true;
                }
            }
            if ($reindeerDetails[$name]['curDistance'] > $curMax) {
                $curMax = $reindeerDetails[$name]['curDistance'];
                $curWinner = array($name);
            } elseif ($reindeerDetails[$name]['curDistance'] == $curMax) {
                $curWinner[] = $name;
            }
        }
        foreach ($curWinner as $winner) {
            if (empty($arrPoints[$winner])) {
                $arrPoints[$winner] = 0;
            }
            $arrPoints[$winner]++;
        }
    }
    print_r($arrPoints);
}
$seconds = 2503;
//$seconds = 10;
calcWinner(file_get_contents('day14.txt'), $seconds);
Ejemplo n.º 2
0
{
    $reindeerDetails = getReindeerDetails($in);
    $maxDistance = 0;
    foreach ($reindeerDetails as $name => $reindeer) {
        $distance = calcDistance($seconds, $reindeer);
        if ($distance > $maxDistance) {
            $maxDistance = $distance;
        }
    }
    echo "Winning reindeer went {$maxDistance}\n";
}
function calcDistance($seconds, $reindeer)
{
    $elapsed = 0;
    $distance = 0;
    $inRest = false;
    while ($elapsed < $seconds) {
        if ($inRest) {
            $elapsed += $reindeer['rest'];
            $inRest = false;
        } else {
            $timeLeft = min($seconds - $elapsed, $reindeer['time']);
            $distance += $reindeer['speed'] * $timeLeft;
            $inRest = true;
            $elapsed += $timeLeft;
        }
    }
    return $distance;
}
calcWinner(file_get_contents('day14.txt'), 2503);