You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
advent-of-code/ruby/day_02.rb

1014 lines
8.3 KiB

# sqft = DATA.read.each_line.inject(0) do |sqft, line|
# l,w,h = line.split(?x).map(&:to_i)
# dimensions = [l*w, w*h, h*l]
# sqft + 2*dimensions.inject(&:+) + dimensions.min
# end
# puts sqft
ribbon = DATA.read.each_line.inject(0) do |ribbon, line|
l,w,h = line.split(?x).map(&:to_i)
ribbon + 2*[l,w,h].min(2).inject(&:+) + l*w*h
end
puts ribbon
__END__
29x13x26
11x11x14
27x2x5
6x10x13
15x19x10
26x29x15
8x23x6
17x8x26
20x28x3
23x12x24
11x17x3
19x23x28
25x2x25
1x15x3
25x14x4
23x10x23
29x19x7
17x10x13
26x30x4
16x7x16
7x5x27
8x23x6
2x20x2
18x4x24
30x2x26
6x14x23
10x23x9
29x29x22
1x21x14
22x10x13
10x12x10
20x13x11
12x2x14
2x16x29
27x18x26
6x12x20
18x17x8
14x25x1
30x15x22
17x18x7
28x23x24
15x12x25
14x7x20
29x23x8
24x5x22
6x22x8
1x15x26
14x5x1
24x28x28
17x23x23
4x15x7
23x8x11
6x15x1
23x18x13
17x1x26
23x13x17
2x18x8
22x22x1
10x22x6
28x29x20
22x21x25
14x8x23
12x30x14
8x7x5
3x30x15
4x3x29
25x18x3
16x7x16
4x3x8
9x16x30
20x28x3
28x24x6
4x18x2
23x18x5
22x4x30
15x30x9
7x12x12
3x22x29
12x1x9
9x2x25
17x11x10
25x24x7
7x27x26
26x4x12
29x2x26
19x24x12
23x23x3
26x28x16
18x4x16
25x30x18
29x19x19
16x3x27
29x25x29
18x19x5
14x21x30
19x13x26
19x10x15
9x4x7
18x6x6
24x25x29
9x12x27
15x3x22
30x17x21
18x19x28
9x11x12
8x28x22
11x3x4
28x17x20
24x18x15
11x12x13
6x19x24
28x4x5
28x22x23
13x29x2
9x16x15
29x28x1
10x18x30
19x11x12
26x28x25
23x17x13
25x1x21
17x1x27
17x27x28
28x13x15
14x13x25
11x29x7
22x29x5
13x6x14
23x18x13
25x7x17
18x9x20
21x11x2
28x11x13
13x25x1
19x29x25
16x29x4
10x21x10
7x25x17
5x9x3
1x15x6
8x27x29
23x6x30
22x22x29
6x20x30
26x25x29
10x19x19
20x30x9
5x30x24
17x10x27
30x14x30
8x17x4
7x18x6
3x5x4
24x17x15
14x20x17
22x27x15
18x14x15
23x9x11
21x16x29
7x18x21
9x3x29
10x13x4
2x30x4
23x20x4
8x22x21
29x28x4
13x16x25
21x9x11
7x26x26
13x23x30
19x7x10
9x23x21
21x9x17
9x21x15
20x29x22
23x13x15
19x25x2
12x11x30
20x21x6
21x6x17
24x26x9
29x21x29
29x26x16
6x16x1
2x12x6
6x7x20
7x2x22
6x22x4
13x11x27
25x27x14
11x8x6
26x11x14
30x3x29
27x21x20
15x16x26
6x22x10
11x9x25
23x13x6
13x9x3
30x22x13
29x23x14
25x19x6
7x29x11
19x18x5
29x25x13
25x24x27
1x9x12
22x9x17
14x12x28
19x21x17
13x25x17
14x25x12
4x14x30
7x15x28
3x6x25
6x2x16
15x19x11
17x30x20
20x23x7
26x21x6
26x29x24
2x4x30
4x22x18
13x3x28
27x6x21
5x3x27
12x7x11
28x11x9
12x9x2
1x22x20
15x13x28
14x19x16
28x20x3
20x4x9
26x7x26
18x19x25
7x1x13
20x23x29
27x26x8
11x15x15
10x21x23
29x2x11
21x28x20
3x18x23
26x17x17
14x26x17
20x7x17
18x12x8
4x8x8
8x15x23
24x29x5
1x25x8
1x28x17
16x18x13
29x24x22
13x16x10
14x7x16
15x11x29
12x15x19
17x6x28
4x3x9
15x16x8
29x27x11
2x24x20
4x21x3
29x24x27
18x22x22
7x8x18
20x7x8
19x9x2
20x17x2
2x29x10
19x25x1
28x9x3
29x27x20
7x21x7
10x4x22
26x8x5
26x14x1
5x27x9
2x18x3
3x27x17
30x17x23
30x11x20
4x6x7
6x29x27
30x16x20
24x30x28
19x20x26
18x1x25
26x12x12
19x15x29
16x21x24
23x13x26
25x16x10
8x9x18
24x14x1
24x15x21
19x9x14
8x23x11
22x2x16
29x9x26
3x16x25
15x20x30
3x11x12
15x2x3
13x7x4
2x7x27
9x26x11
30x24x19
28x17x21
10x8x2
11x15x26
10x12x20
24x24x27
25x26x16
13x4x20
25x13x11
12x22x3
20x7x1
12x18x6
26x8x20
14x2x7
23x12x1
26x24x24
27x26x23
26x17x5
17x24x2
26x5x6
23x5x1
5x18x30
24x21x19
5x28x11
21x20x14
25x4x22
26x24x11
7x5x8
13x1x30
5x1x6
14x5x2
8x11x7
13x20x1
17x30x14
29x22x10
12x26x3
27x17x3
26x27x4
5x26x17
22x11x19
8x26x3
24x19x22
7x1x4
6x27x30
4x28x14
16x14x18
4x5x20
19x25x4
15x15x1
10x14x14
16x18x24
21x27x15
5x5x10
1x7x13
16x2x8
13x15x11
3x25x10
20x29x8
12x3x2
10x13x12
25x27x1
11x30x19
7x19x13
27x6x18
16x21x19
21x29x5
16x23x12
29x19x15
5x5x10
27x15x1
13x16x22
29x19x5
8x12x9
3x18x5
13x25x3
5x9x21
10x20x16
9x9x11
23x21x1
22x2x15
27x8x13
23x7x3
26x30x15
29x15x16
16x27x13
2x18x9
10x27x8
20x9x25
10x2x17
16x13x13
21x26x1
27x26x24
9x30x16
19x17x28
25x15x1
10x26x6
10x11x11
5x26x25
30x4x15
9x8x23
14x25x7
8x28x8
28x18x24
4x4x25
16x25x11
17x27x8
15x16x9
24x13x21
17x3x27
27x5x26
8x27x12
29x2x8
24x23x30
1x30x21
6x18x20
13x14x12
25x30x23
24x6x24
12x7x21
11x6x8
8x30x30
26x3x12
28x6x5
18x7x1
7x6x20
14x16x18
11x22x15
4x20x10
19x24x19
8x24x11
4x9x10
6x6x22
10x9x29
1x5x28
19x25x29
20x30x3
15x13x13
9x9x24
20x14x29
26x24x13
2x25x8
10x26x2
12x19x12
18x6x20
4x5x14
26x27x10
16x26x20
3x21x15
2x26x18
14x11x17
26x26x25
10x1x11
17x19x19
27x28x26
9x2x10
19x30x15
23x30x14
15x3x20
2x14x22
21x18x8
22x4x29
19x6x29
9x26x29
16x10x9
22x12x22
13x28x14
25x14x28
28x3x30
10x17x1
10x27x22
10x23x19
14x25x9
11x24x8
30x25x10
22x13x28
2x7x6
11x20x8
9x22x14
19x16x9
11x24x4
11x17x2
6x4x10
26x10x10
12x14x5
27x10x3
15x3x6
11x7x19
22x10x12
21x26x10
13x20x3
27x8x8
1x24x23
24x9x22
23x17x23
3x28x19
2x20x28
23x17x24
26x1x4
4x1x12
5x6x16
13x22x13
25x21x21
20x21x12
9x24x25
17x16x12
12x28x9
18x16x27
29x12x2
30x12x15
24x11x10
4x9x22
4x24x5
19x11x5
6x25x6
1x20x17
22x8x21
11x26x4
16x19x3
8x12x8
13x2x18
10x5x11
8x12x17
21x2x5
26x17x26
23x18x17
28x11x14
1x4x27
29x5x28
5x9x10
5x7x25
20x15x27
15x11x17
12x14x1
29x14x4
18x14x18
14x25x24
26x14x18
13x8x11
30x1x23
3x4x12
12x24x9
8x6x16
14x15x30
12x30x8
22x11x18
16x30x28
17x18x4
13x14x23
2x28x8
3x28x30
29x30x8
4x6x26
6x30x17
11x30x30
19x4x3
12x15x20
22x28x4
26x30x2
6x12x7
1x10x5
25x29x7
17x9x18
16x21x29
21x14x7
15x16x11
26x6x15
8x24x7
2x20x4
2x9x3
19x8x13
18x7x22
27x14x17
2x13x8
18x15x26
15x27x27
18x11x15
1x29x20
21x12x11
20x2x15
28x23x9
1x1x17
7x23x9
30x9x27
9x16x18
15x24x28
30x11x18
29x26x10
9x5x25
2x1x19
14x3x14
6x3x6
30x15x20
20x17x27
28x10x9
14x24x28
17x11x6
12x3x6
8x8x15
23x14x21
11x21x7
5x13x30
4x29x25
30x28x24
18x4x9
3x15x6
13x9x19
30x14x7
7x9x9
17x11x26
24x26x13
16x21x16
27x17x25
2x21x11
9x11x27
3x3x7
13x8x14
20x20x26
13x29x22
30x11x1
7x10x19
27x5x9
23x17x15
21x6x13
24x15x16
18x4x14
18x16x6
22x11x18
14x2x5
15x3x7
10x20x29
16x1x10
30x23x1
10x15x11
17x14x5
22x8x13
7x11x28
26x17x3
2x23x2
28x13x19
18x12x28
22x23x16
14x12x1
20x8x19
17x19x13
29x2x12
2x26x27
29x16x4
13x8x18
16x15x30
23x16x2
28x8x27
21x8x23
13x20x26
19x6x17
17x30x15
7x4x30
2x13x30
18x7x19
4x13x27
8x6x5
18x20x25
2x3x30
23x27x13
22x30x4
23x25x25
23x16x19
25x3x1
5x6x15
11x29x12
25x24x7
16x7x20
20x3x2
12x27x15
16x10x12
1x3x14
22x1x26
2x24x18
11x29x16
15x2x9
10x1x24
21x8x11
30x11x23
6x30x21
13x27x29
14x6x5
18x29x19
12x4x28
29x3x14
10x30x28
5x7x15
14x1x10
9x25x14
7x24x18
28x17x21
18x13x25
26x15x1
21x1x19
12x16x21
4x6x13
7x15x26
17x19x5
12x28x2
1x20x19
27x7x5
17x26x8
12x15x19
5x23x10
8x2x8
16x13x12
14x27x1
26x29x3
24x16x14
14x13x13
7x22x23
2x9x30
4x27x8
26x27x15
23x1x6
25x29x18
5x18x1
20x8x20
5x10x25
30x25x15
7x22x25
28x26x17
29x4x1
21x11x27
20x9x8
25x22x12
2x11x11
23x2x16
23x27x20
2x13x28
27x2x24
11x1x17
12x4x27
16x20x22
30x12x10
5x15x4
5x2x27
12x4x25
1x16x4
27x4x4
21x16x3
27x26x3
24x6x6
24x12x12
20x20x25
8x29x2
21x4x5
2x4x8
4x13x19
3x20x10
12x15x16
6x5x4
12x16x20
22x19x17
8x17x22
25x16x15
7x1x19
10x1x7
23x23x5
28x6x12
2x25x12
10x27x12
24x27x19
14x14x20
4x1x5
16x27x29
20x20x24
28x24x30
6x15x15
9x15x30
23x26x3
17x24x21
22x25x25
18x29x10
20x25x1
24x11x16
20x7x21
20x7x9
7x26x2
5x18x1
16x26x28
4x10x18
27x30x21
26x9x9
8x16x14
6x27x8
28x9x20
13x13x4
9x18x16
18x15x18
22x19x14
14x10x17
25x29x11
1x18x19
8x11x26
18x6x14
30x24x13
27x1x27
15x9x3
2x29x17
2x26x21
22x9x9
20x20x20
22x28x2
26x5x16
11x3x14
21x16x16
18x26x7
18x30x6
7x11x12
15x10x2
27x2x16
27x30x24
28x14x24
7x4x8
6x28x15
13x19x1
22x26x30
7x30x24
2x17x21
19x26x2
19x24x15
14x23x2
21x27x15
30x15x14
21x29x5
23x30x2
4x1x2
15x5x13
21x2x30
20x7x16
1x21x25
2x25x1
12x29x5
28x13x16
26x3x12
29x20x23
28x12x20
4x30x8
16x15x16
6x16x29
2x28x13
24x25x2
26x15x22
17x20x11
18x12x7
19x1x18
8x27x13
22x16x8
19x26x17
13x11x10
22x12x3
13x12x14
29x17x9
6x14x10
14x20x10
8x26x9
25x13x22
3x30x25
14x28x1
30x29x12
3x17x15
3x24x14
28x24x22
16x6x1
20x25x14
17x17x13
6x19x27
10x15x20
8x23x20
7x29x21
18x9x25
10x5x22
2x27x27
16x18x30
15x5x12
26x29x29
28x11x10
9x29x28
24x15x23
26x9x10
5x1x25
22x27x16
7x29x3
1x3x5
8x7x29
19x21x11
28x13x30
17x16x20
5x10x25
9x14x15
15x14x23
16x4x17
21x8x2
9x9x8
22x22x4
10x2x27
12x19x10
15x29x4
22x14x7
29x18x5
1x7x27
24x1x15
23x23x26
12x17x23
26x10x24
8x22x2
8x1x10
22x19x12
2x23x13
11x27x25
26x15x27
27x7x21
18x9x6
22x21x22
7x12x26
23x21x13
14x3x8
5x9x28
29x29x15
27x25x23
12x2x24
8x2x20
29x19x4
12x24x29
2x27x28
14x20x9
28x6x25
18x29x8
19x11x30
15x11x23
18x7x7
14x20x14
26x18x22
27x25x13
12x10x30
30x2x7
28x10x1
18x10x30
22x11x5
22x16x3
25x15x9
5x10x24
4x28x8
19x24x18
3x4x25
14x4x30
11x26x3
12x12x12
26x7x24
3x2x14
1x27x7
2x2x13
3x26x26
12x4x11
12x17x20
4x19x30
5x18x10
17x6x18
19x30x20
11x2x17
30x13x19
22x23x7
17x28x2
5x17x30
7x11x4
21x26x18
15x28x4
5x6x27
12x6x16
9x17x12
27x20x5
14x5x20
27x14x6
2x14x21
4x28x30
24x5x1
19x29x29
11x23x1
8x16x21
3x17x19
10x13x5
20x21x16
23x3x6
27x26x11
3x2x22
14x3x5
10x9x8