Day 10 part 2 and cleanup
This commit is contained in:
parent
014890191a
commit
84a210170f
|
@ -1,4 +1,4 @@
|
|||
import streams, input_helpers, algorithm, sequtils
|
||||
import streams, input_helpers, algorithm, sequtils, math
|
||||
|
||||
proc part1*(s: Stream): int =
|
||||
var d1 = 0
|
||||
|
@ -11,6 +11,25 @@ proc part1*(s: Stream): int =
|
|||
else: discard
|
||||
d1 * d3
|
||||
|
||||
|
||||
proc part2*(s: Stream): int =
|
||||
0
|
||||
result = 1
|
||||
var nums = @[0].concat(toSeq(s.asInts).sorted)
|
||||
nums = nums.concat @[nums.max + 3]
|
||||
var l,r = 0
|
||||
while l < nums.len:
|
||||
r = l
|
||||
while r < (nums.len-1) and nums[r+1] - nums[r] == 1: inc r
|
||||
let ln = r+1-l
|
||||
case ln:
|
||||
of 0..2: discard
|
||||
of 3: result *= 2
|
||||
else: result *= 1 + (ln - 2) + (ln - 2).fac.div(2)
|
||||
l = r + 1
|
||||
|
||||
# needed the tests on this one - math was a doozy
|
||||
const t2 = "1\n4\n5\n6\n7\n10\n11\n12\n15\n16\n19".newStringStream().part2()
|
||||
const t = ("1\n2\n3\n4\n7\n8\n9\n10\n11\n14\n17\n18\n19\n20\n23\n24\n25\n" &
|
||||
"28\n31\n32\n33\n34\n35\n38\n39\n42\n45\n46\n47\n48\n49").newStringStream().part2()
|
||||
|
||||
doAssert 8 == t2
|
||||
doAssert 19208 == t
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import streams, sequtils, sets, options, deques, input_helpers, day1
|
||||
import streams, sequtils, options, deques, input_helpers, day1
|
||||
|
||||
const WINDOW = 25
|
||||
|
||||
|
|
Loading…
Reference in a new issue