Untitled

 avatar
unknown
plain_text
3 years ago
807 B
6
Indexable
def get_char_value(char)
  return char.ord - 38 if /[[:upper:]]/ =~ char
  char.ord - 96
end

def solve
  stored_lines = []
  sum1 = 0
  sum2 = 0

  File.read('day3/input.txt').split("\n").map do |line|
    line_arr = line.split('')
    stored_lines << line_arr

    if stored_lines.length == 3
      match_part_two = stored_lines[0] & stored_lines[1] & stored_lines[2]
      char_part_two = match_part_two.first
      sum2 += get_char_value(char_part_two)
      stored_lines.clear
    end

    first_line_half = line_arr[0..(line_arr.length / 2)]
    second_line_half = line_arr[(line_arr.length / 2)..line_arr.length]
    match_part_one = first_line_half & second_line_half
    char_part_one = match_part_one.first
    sum1 += get_char_value(char_part_one)
  end

  { sum1: sum1, sum2: sum2 }
end

p solve
Editor is loading...