Code for the Advent of Code event
aoc advent-of-code
at rust 24 lines 633 B view raw
1#!/usr/bin/env ruby 2# frozen_string_literal: true 3 4MAZE = {} # rubocop:disable Style/MutableConstant 5ARGF.readlines.map { _1.strip.split('-') }.each do |a, b| 6 MAZE[a] ||= [] 7 MAZE[a] << b 8 next if a == 'start' || b == 'end' 9 MAZE[b] ||= [] 10 MAZE[b] << a 11end 12 13def solve(current, visited, twice) 14 visited.add current if current =~ /^[a-z]+$/ 15 return 1 if current == 'end' 16 MAZE[current].sum do |node| 17 seen = visited.include? node 18 next 0 if seen && (twice || node == 'start' || node == 'end') 19 solve(node, visited.dup, twice || seen) 20 end 21end 22 23puts solve('start', Set.new, true) 24puts solve('start', Set.new, false)