@@ -9,22 +9,19 @@ const FIRST: [Range; 5] = [[2, 1], [4, 2], [6, 3], [8, 4], [10, 5]];
99const SECOND : [ Range ; 6 ] = [ [ 3 , 1 ] , [ 5 , 1 ] , [ 6 , 2 ] , [ 7 , 1 ] , [ 9 , 3 ] , [ 10 , 2 ] ] ;
1010const THIRD : [ Range ; 2 ] = [ [ 6 , 1 ] , [ 10 , 1 ] ] ;
1111
12- pub fn parse ( input : & str ) -> Pair {
13- let ranges: Vec < _ > = input. iter_unsigned :: < u64 > ( ) . chunk :: < 2 > ( ) . collect ( ) ;
14- let part_one = sum ( & FIRST , & ranges) ;
15- let part_two = part_one + sum ( & SECOND , & ranges) - sum ( & THIRD , & ranges) ;
16- [ part_one, part_two]
12+ pub fn parse ( input : & str ) -> Vec < Pair > {
13+ input. iter_unsigned :: < u64 > ( ) . chunk :: < 2 > ( ) . collect ( )
1714}
1815
19- pub fn part1 ( input : & Pair ) -> u64 {
20- input[ 0 ]
16+ pub fn part1 ( input : & [ Pair ] ) -> u64 {
17+ sum ( & FIRST , input)
2118}
2219
23- pub fn part2 ( input : & Pair ) -> u64 {
24- input[ 1 ]
20+ pub fn part2 ( input : & [ Pair ] ) -> u64 {
21+ sum ( & FIRST , input) + sum ( & SECOND , input ) - sum ( & THIRD , input )
2522}
2623
27- fn sum ( ranges : & [ Range ] , ids : & [ Pair ] ) -> u64 {
24+ fn sum ( ranges : & [ Range ] , input : & [ Pair ] ) -> u64 {
2825 let mut result = 0 ;
2926
3027 for & [ digits, size] in ranges {
@@ -35,7 +32,7 @@ fn sum(ranges: &[Range], ids: &[Pair]) -> u64 {
3532 let start = step * ( size_power / 10 ) ;
3633 let end = step * ( size_power - 1 ) ;
3734
38- for & [ from, to] in ids {
35+ for & [ from, to] in input {
3936 let lower = from. next_multiple_of ( step) . max ( start) ;
4037 let upper = to. min ( end) ;
4138
0 commit comments