Solved day 2
parent
9bf6b898db
commit
68cfd1d819
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
||||||
|
A Y
|
||||||
|
B X
|
||||||
|
C Z
|
|
@ -0,0 +1,102 @@
|
||||||
|
#!/bin/env ruby
|
||||||
|
require 'pry'
|
||||||
|
|
||||||
|
def score(opponent, me)
|
||||||
|
base = case me
|
||||||
|
when :rock
|
||||||
|
1
|
||||||
|
when :paper
|
||||||
|
2
|
||||||
|
when :scissors
|
||||||
|
3
|
||||||
|
end
|
||||||
|
return 3 + base if opponent == me
|
||||||
|
|
||||||
|
outcome = 0
|
||||||
|
outcome = 6 if opponent == :rock and me == :paper
|
||||||
|
outcome = 6 if opponent == :paper and me == :scissors
|
||||||
|
outcome = 6 if opponent == :scissors and me == :rock
|
||||||
|
|
||||||
|
outcome + base
|
||||||
|
end
|
||||||
|
|
||||||
|
input = File.readlines('./input').map(&:strip)
|
||||||
|
|
||||||
|
guide = input.map do |pair|
|
||||||
|
pair.split.map do |letter|
|
||||||
|
case letter
|
||||||
|
when 'A', 'X'
|
||||||
|
:rock
|
||||||
|
when 'B', 'Y'
|
||||||
|
:paper
|
||||||
|
when 'C', 'Z'
|
||||||
|
:scissors
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scores = guide.map do |pair|
|
||||||
|
score(pair[0], pair[1])
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Part 1 Solution: #{scores.sum}"
|
||||||
|
|
||||||
|
## Part 2
|
||||||
|
def wins_to?(throw)
|
||||||
|
case throw
|
||||||
|
when :rock
|
||||||
|
:paper
|
||||||
|
when :paper
|
||||||
|
:scissors
|
||||||
|
when :scissors
|
||||||
|
:rock
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def loses_to?(throw)
|
||||||
|
case throw
|
||||||
|
when :rock
|
||||||
|
:scissors
|
||||||
|
when :paper
|
||||||
|
:rock
|
||||||
|
when :scissors
|
||||||
|
:paper
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
guide2 = input.map do |pair|
|
||||||
|
pair.split.map do |letter|
|
||||||
|
case letter
|
||||||
|
when 'A'
|
||||||
|
:rock
|
||||||
|
when 'B'
|
||||||
|
:paper
|
||||||
|
when 'C'
|
||||||
|
:scissors
|
||||||
|
when 'X'
|
||||||
|
:lose
|
||||||
|
when 'Y'
|
||||||
|
:draw
|
||||||
|
when 'Z'
|
||||||
|
:win
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
guide2.map! do |opponent, outcome|
|
||||||
|
throw = case outcome
|
||||||
|
when :draw
|
||||||
|
opponent
|
||||||
|
when :win
|
||||||
|
wins_to?(opponent)
|
||||||
|
when :lose
|
||||||
|
loses_to?(opponent)
|
||||||
|
end
|
||||||
|
[opponent, throw]
|
||||||
|
end
|
||||||
|
|
||||||
|
scores2 = guide2.map do |pair|
|
||||||
|
score(pair[0], pair[1])
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Part 2 Solution: #{scores2.sum}"
|
Loading…
Reference in New Issue