Something went wrong. Try again.
Code for the Advent of Code event
aoc advent-of-code
Something went wrong. Try again.
633 B · 24 lines
Ruby
at rust
12345678910111213141516171819202122232425#!/usr/bin/env ruby# frozen_string_literal: true
MAZE = {} # rubocop:disable Style/MutableConstantARGF.readlines.map { _1.strip.split('-') }.each do |a, b| MAZE[a] ||= [] MAZE[a] << b next if a == 'start' || b == 'end' MAZE[b] ||= [] MAZE[b] << aend
def solve(current, visited, twice) visited.add current if current =~ /^[a-z]+$/ return 1 if current == 'end' MAZE[current].sum do |node| seen = visited.include? node next 0 if seen && (twice || node == 'start' || node == 'end') solve(node, visited.dup, twice || seen) endend
puts solve('start', Set.new, true)puts solve('start', Set.new, false)