Day2   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 19
dl 0
loc 40
rs 10
c 1
b 0
f 1
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A loadInput() 0 10 2
A getDimensions() 0 3 1
A solve() 0 15 2
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