parent
09db2ae1a0
commit
86081b2b0b
@ -1,18 +1,21 @@
|
||||
stones = DATA.read.scan(/\d+/).map(&:to_i)
|
||||
|
||||
25.times {
|
||||
stones = stones.flat_map {|n|
|
||||
if n.zero?
|
||||
[1]
|
||||
elsif (s = n.to_s.size) && s.even?
|
||||
[n.to_s[0...s/2], n.to_s[s/2..]].map(&:to_i)
|
||||
else
|
||||
[n * 2024]
|
||||
end
|
||||
}
|
||||
blink = Hash.new {|h, k|
|
||||
n, times = k
|
||||
h[k] = if times.zero?
|
||||
1
|
||||
elsif n.zero?
|
||||
h[[1, times-1]]
|
||||
elsif (s = n.to_s.size) && s.even?
|
||||
a, b = [n.to_s[0...s/2], n.to_s[s/2..]].map(&:to_i)
|
||||
h[[a, times-1]] + h[[b, times-1]]
|
||||
else
|
||||
h[[n*2024, times-1]]
|
||||
end
|
||||
}
|
||||
|
||||
pp stones.length
|
||||
pp stones.sum { blink[[_1, 25]] }
|
||||
pp stones.sum { blink[[_1, 75]] }
|
||||
|
||||
__END__
|
||||
1750884 193 866395 7 1158 31 35216 0
|
||||
125 17
|
||||
|
Loading…
Reference in new issue