Skip to content

Instantly share code, notes, and snippets.

@decriptor
Created December 2, 2022 06:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save decriptor/669fdad94545449d12f5539379b06339 to your computer and use it in GitHub Desktop.
Save decriptor/669fdad94545449d12f5539379b06339 to your computer and use it in GitHub Desktop.
var path = @"D:\code\decriptor\input2.txt";
var lost = 0;
var draw = 3;
var won = 6;
var rock = 1; // A, X
var paper = 2; // B, Y
var scissors = 3; // C, Z
var input = File.ReadLines(path);
//var input = new[] { "A Y", "B X", "C Z" };
// Part 1
var totalScore = 0;
foreach (var round in input)
{
var player1 = round[0];
var player2 = round[round.Length - 1];
var part1 = player2 switch
{
'X' => rock,
'Y' => paper,
'Z' => scissors
};
var part2 = (player1, player2) switch
{
('A', 'X') => draw,
('A', 'Y') => won,
('A', 'Z') => lost,
('B', 'X') => lost,
('B', 'Y') => draw,
('B', 'Z') => won,
('C', 'X') => won,
('C', 'Y') => lost,
('C', 'Z') => draw
};
totalScore += part1 + part2;
}
totalScore.Dump();
// Part 2
var totalScorePart2 = 0;
foreach (var round in input)
{
var player1 = round[0];
var player2 = round[round.Length - 1];
var part1 = player2 switch
{
'X' => lost,
'Y' => draw,
'Z' => won
};
var part2 = (player1, player2) switch
{
('A', 'X') => scissors,
('A', 'Y') => rock,
('A', 'Z') => paper,
('B', 'X') => rock,
('B', 'Y') => paper,
('B', 'Z') => scissors,
('C', 'X') => paper,
('C', 'Y') => scissors,
('C', 'Z') => rock
};
totalScorePart2 += part1 + part2;
}
totalScorePart2.Dump();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment