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.
45 lines
613 B
45 lines
613 B
3 weeks ago
|
rules, updates = DATA.read.split("\n\n")
|
||
|
|
||
|
rules = rules.scan(/(\d+)\|(\d+)/).map { _1.map(&:to_i) }
|
||
|
updates = updates.lines.map { _1.split(?,).map(&:to_i) }
|
||
|
|
||
|
correct, incorrect = updates.partition {|pages|
|
||
|
pages.each_cons(2).all? { rules.include?(_1) }
|
||
|
}
|
||
|
|
||
|
pp correct.sum { _1[_1.length/2] }
|
||
|
|
||
|
pp incorrect.map {|pages|
|
||
|
pages.sort {|a,b| rules.include?([a,b]) ? -1 : 1 }
|
||
|
}.sum { _1[_1.length/2] }
|
||
|
|
||
|
__END__
|
||
|
47|53
|
||
|
97|13
|
||
|
97|61
|
||
|
97|47
|
||
|
75|29
|
||
|
61|13
|
||
|
75|53
|
||
|
29|13
|
||
|
97|29
|
||
|
53|29
|
||
|
61|53
|
||
|
97|53
|
||
|
61|29
|
||
|
47|13
|
||
|
75|47
|
||
|
97|75
|
||
|
47|61
|
||
|
75|61
|
||
|
47|29
|
||
|
75|13
|
||
|
53|13
|
||
|
|
||
|
75,47,61,53,29
|
||
|
97,61,53,29,13
|
||
|
75,29,13
|
||
|
75,97,47,61,53
|
||
|
61,13,29
|
||
|
97,13,75,29,47
|