diff options
| author | Nat Lasseter <user@4574.co.uk> | 2019-12-06 10:30:11 +0000 | 
|---|---|---|
| committer | Nat Lasseter <user@4574.co.uk> | 2019-12-06 10:30:11 +0000 | 
| commit | 831d048ba23e2b518879be2773dd5abca74a8d3f (patch) | |
| tree | 9ab1fde4fc53641aacaa1269b1ae610cc3405694 /day06/part2 | |
| parent | 6269dd0d419e27a0457efea260490568d626c1b5 (diff) | |
Day 06
Diffstat (limited to 'day06/part2')
| -rwxr-xr-x | day06/part2 | 42 | 
1 files changed, 42 insertions, 0 deletions
diff --git a/day06/part2 b/day06/part2 new file mode 100755 index 0000000..f7fdfb1 --- /dev/null +++ b/day06/part2 @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby + +def get_depth_to(hsh, elm, to) +  n = 0 +  loop do +    break if elm == to +    n += 1 +    elm = hsh[elm] +  end +  n +end + +def get_hier(hsh, elm) +  hier = [elm] +  loop do +    break if elm == "COM" +    elm = hsh[elm] +    hier << elm +  end +  hier +end + +input = $stdin.readlines.map(&:strip).map{|x|x.split(")")} + +objects = {} + +input.each do |line| +  objects[line[1]] = line[0] +end + +me_hier = get_hier(objects, "YOU") +santa_hier = get_hier(objects, "SAN") + +lca = nil +me_hier.each do |obj| +  if santa_hier.include?(obj) then +    lca = obj +    break +  end +end + +puts get_depth_to(objects, "YOU", lca) + get_depth_to(objects, "SAN", lca) - 2  | 
