Day2::loadInput()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 5
c 1
b 0
f 1
nc 2
nop 0
dl 0
loc 10
rs 10
1
<?php
2
3
namespace DaanMooij\AdventOfCode\Year2015\Day2;
4
5
use Exception;
6
use DaanMooij\AdventOfCode\Day;
7
use DaanMooij\AdventOfCode\Year2015\Day2\Present;
8
9
class Day2 implements Day
10
{
11
    /** @var array<string> */
12
    private array $dimensions = [];
13
14
    /** @return void */
15
    public function loadInput(): void
16
    {
17
        $filepath = __DIR__ . "/input.txt";
18
        $file = file($filepath);
19
20
        if (!is_array($file)) {
21
            throw new Exception("Could not open input file: {$filepath}");
22
        }
23
24
        $this->dimensions = $file;
25
    }
26
27
    /** @return void */
28
    public function solve(): void
29
    {
30
        $amountWrappingPaper = 0;
31
        $lengthRibbon = 0;
32
        foreach ($this->dimensions as $dimension) {
33
            $present = Present::fromString($dimension);
34
            $amountWrappingPaper += $present->getSurfaceArea();
35
            $amountWrappingPaper += $present->getSmallestSideArea();
36
            $lengthRibbon += $present->getVolume();
37
            $lengthRibbon += $present->getSmallestSide() * 2;
38
            $lengthRibbon += $present->getSecondSmallestSide() * 2;
39
        }
40
41
        printf("The total amount of wrapping paper is: %s\n", $amountWrappingPaper);
42
        printf("The total length of ribbon is: %s\n", $lengthRibbon);
43
    }
44
45
    /** @return array<string> */
46
    public function getDimensions(): array
47
    {
48
        return $this->dimensions;
49
    }
50
}
51