Something went wrong. Try again.
Code for the Advent of Code event
aoc advent-of-code
Something went wrong. Try again.
719 B · 29 lines
Ruby
at rust
123456789101112131415161718192021222324252627282930#!/usr/bin/env ruby# frozen_string_literal: true
MAP = { '(' => ')', '[' => ']', '{' => '}', '<' => '>' }.freezePOINTS = { ')' => 3, ']' => 57, '}' => 1197, '>' => 25_137 }.freezeSCORE = { ')' => 1, ']' => 2, '}' => 3, '>' => 4 }.freeze
illegal = 0scores = []
ARGF.readlines.map(&:strip).each do |line| next_close = [] incomplete = true line.chars.each do |char| if MAP.key? char next_close.push MAP[char] else expected = next_close.pop next if char == expected illegal += POINTS[char] incomplete = false break end end scores << next_close.reverse.reduce(0) { |a, e| (a * 5) + SCORE[e] } if incompleteend
puts illegalputs scores.sort[scores.size / 2]