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