diff --git a/day07/solution01.rb b/day07/solution01.rb new file mode 100755 index 0000000..80fce00 --- /dev/null +++ b/day07/solution01.rb @@ -0,0 +1,18 @@ +#!/bin/env ruby + +def can_hold? (bags, color) + parents = bags.map { |bag| bag[1..]. + map { |child| bag[0] if child.include?(color)} + }.flatten.compact + if parents.any? + parents += parents.map { |col| can_hold?(bags, col) } + end + parents.flatten.uniq +end + +bags = File.readlines('./input').map { |line| line.delete('.').strip.split('contain'). + map { |item| item.strip.split(',')}.flatten +} +bags.map { |line| line.map { |str| str.slice!('bags') }} +bags.map { |line| line.map { |str| str.slice!('bag') }} +p can_hold?(bags, 'shiny gold').length \ No newline at end of file