Skip to content

Commit 95b7326

Browse files
author
Robb Kidd
committed
instead of two copies of the functions, same func with reversed input!
1 parent 6545d45 commit 95b7326

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

2023/ruby/day09.rb

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,39 @@
22

33
class Day09 < Day # >
44

5-
# @example
6-
# day.oasis_report #=> [[0, 3, 6, 9, 12, 15], [1, 3, 6, 10, 15, 21], [10, 13, 16, 21, 30, 45]]
7-
def oasis_report
8-
@oasis_report ||=
9-
input
10-
.each_line
11-
.map { |line| line.split(" ").map(&:to_i) }
12-
end
13-
145
# @example
156
# day.part1 #=> 114
167
def part1
178
oasis_report
18-
.map { |history|
19-
sequences = [history]
20-
while !sequences.last.all?(0) do
21-
sequences << sequences.last.each_cons(2).map { |a,b| b - a }
22-
end # ^^^^^
23-
sequences.map(&:last).reduce(&:+) # <--- last and next-minus-prev
24-
}
9+
.map { |value_history| next_in_sequence(value_history)}
2510
.reduce(&:+)
2611
end
2712

2813
# @example
2914
# day.part2 #=> 2
3015
def part2
3116
oasis_report
32-
.map { |history|
33-
sequences = [history]
34-
while !sequences.last.all?(0) do
35-
sequences << sequences.last.each_cons(2).map { |a,b| a - b }
36-
end # ^^^^^
37-
sequences.map(&:first).reduce(&:+) # <--- first and prev-minus-next
38-
}
17+
.map { |value_history| next_in_sequence(value_history.reverse)}
3918
.reduce(&:+)
4019
end
4120

21+
def next_in_sequence(sequence)
22+
sequences = [sequence]
23+
until sequences.last.all?(0) do
24+
sequences << sequences.last.each_cons(2).map { |a,b| b - a }
25+
end
26+
sequences.map(&:last).reduce(&:+)
27+
end
28+
29+
# @example
30+
# day.oasis_report #=> [[0, 3, 6, 9, 12, 15], [1, 3, 6, 10, 15, 21], [10, 13, 16, 21, 30, 45]]
31+
def oasis_report
32+
@oasis_report ||=
33+
input
34+
.each_line
35+
.map { |line| line.split(" ").map(&:to_i) }
36+
end
37+
4238
EXAMPLE_INPUT = <<~INPUT
4339
0 3 6 9 12 15
4440
1 3 6 10 15 21

0 commit comments

Comments
 (0)