Exemplo n.º 1
0
<?php

$lines = ['Comet can fly 14 km/s for 10 seconds, but then must rest for 127 seconds.', 'Dancer can fly 16 km/s for 11 seconds, but then must rest for 162 seconds.'];
$lines = file('14.txt');
$race = new Race();
// Add reindeers to race
foreach ($lines as $line) {
    preg_match('/(.*) can fly ([0-9]+) km\\/s for ([0-9]+) seconds, but then must rest for ([0-9]+) seconds\\./', $line, $matches);
    $race->addReindeer(new Reindeer($matches[1], $matches[2], $matches[3], $matches[4]));
}
$race->startRace(2503);
$winner = $race->getLeaders()[0];
echo array_sum($race->getPoints());
foreach ($race->getReindeers() as $reindeer) {
    printf("%s: %d km, %d points\n", $reindeer->getName(), $reindeer->getDistanceCovered(), $race->getPointsForReindeer($reindeer));
}
echo sprintf('Part 1 answer: %s', $winner->getDistanceCovered()) . PHP_EOL;
echo sprintf('Part 2 answer: %s', max($race->getPoints())) . PHP_EOL;
class Race
{
    /** @var Reindeer[] */
    protected $reindeers = [];
    /** @var array */
    protected $points = [];
    /**
     * @param Reindeer $reindeer
     */
    public function addReindeer(Reindeer $reindeer)
    {
        $this->reindeers[] = $reindeer;
    }