Code for the Advent of Code event
aoc advent-of-code
at rust 29 lines 719 B view raw
1#!/usr/bin/env ruby 2# frozen_string_literal: true 3 4MAP = { '(' => ')', '[' => ']', '{' => '}', '<' => '>' }.freeze 5POINTS = { ')' => 3, ']' => 57, '}' => 1197, '>' => 25_137 }.freeze 6SCORE = { ')' => 1, ']' => 2, '}' => 3, '>' => 4 }.freeze 7 8illegal = 0 9scores = [] 10 11ARGF.readlines.map(&:strip).each do |line| 12 next_close = [] 13 incomplete = true 14 line.chars.each do |char| 15 if MAP.key? char 16 next_close.push MAP[char] 17 else 18 expected = next_close.pop 19 next if char == expected 20 illegal += POINTS[char] 21 incomplete = false 22 break 23 end 24 end 25 scores << next_close.reverse.reduce(0) { |a, e| (a * 5) + SCORE[e] } if incomplete 26end 27 28puts illegal 29puts scores.sort[scores.size / 2]