init current

This commit is contained in:
Claudiu Farcas
2022-12-14 20:34:09 +02:00
commit cb1aeea711
150 changed files with 19361 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
namespace day02;
public static class Game
{
public static GameSymbols GetOpMoveSymbol(this string opMoveLetter)
{
return opMoveLetter switch
{
"A" => GameSymbols.Rock,
"B" => GameSymbols.Paper,
"C" => GameSymbols.Scissor,
_ => throw new ArgumentOutOfRangeException(nameof(opMoveLetter), $"Not expected opMoveLetter value: {opMoveLetter}")
};
}
public static GameSymbols GetMyMoveSymbol(this string myMoveLetter)
{
return myMoveLetter switch
{
"X" => GameSymbols.Rock,
"Y" => GameSymbols.Paper,
"Z" => GameSymbols.Scissor,
_ => throw new ArgumentOutOfRangeException(nameof(myMoveLetter), $"Not expected myMoveLetter value: {myMoveLetter}")
};
}
public static GameScore GetGameScore(this string gameScoreLetter)
{
//X means you need to lose, Y means you need to end the round in a draw, and Z means you need to win.
return gameScoreLetter switch
{
"X" => GameScore.Loss,
"Y" => GameScore.Draw,
"Z" => GameScore.Win,
_ => throw new ArgumentOutOfRangeException(nameof(gameScoreLetter), $"Not expected gameScoreLetter value: {gameScoreLetter}")
};
}
public static GameScore GetMatchScore(this GameSymbols myMove, GameSymbols opMove)
{
if (myMove == opMove)
{
return GameScore.Draw;
}
if ((myMove == GameSymbols.Rock && opMove == GameSymbols.Scissor) ||
(myMove == GameSymbols.Paper && opMove == GameSymbols.Rock) ||
(myMove == GameSymbols.Scissor && opMove == GameSymbols.Paper))
{
return GameScore.Win;
}
return GameScore.Loss;
}
public static GameSymbols ComputeMyMove(this GameScore gameScore, GameSymbols opMove)
{
return gameScore switch
{
GameScore.Win => opMove.GetWinSymbol(),
GameScore.Draw => opMove,
GameScore.Loss => opMove.GetLossSymbol(),
};
}
public static GameSymbols GetWinSymbol(this GameSymbols opMove)
{
return opMove switch
{
GameSymbols.Rock => GameSymbols.Paper,
GameSymbols.Scissor => GameSymbols.Rock,
GameSymbols.Paper => GameSymbols.Scissor
};
}
public static GameSymbols GetLossSymbol(this GameSymbols opMove)
{
return opMove switch
{
GameSymbols.Rock => GameSymbols.Scissor,
GameSymbols.Scissor => GameSymbols.Paper,
GameSymbols.Paper => GameSymbols.Rock
};
}
}
+8
View File
@@ -0,0 +1,8 @@
namespace day02;
public enum GameScore
{
Win,
Loss,
Draw
}
+8
View File
@@ -0,0 +1,8 @@
namespace day02;
public enum GameSymbols
{
Rock = 1,
Paper = 2,
Scissor = 3
}
+63
View File
@@ -0,0 +1,63 @@
namespace day02;
public class Problem
{
public string Result1 { get; set; }
public string Result2 { get; set; }
public void ResolvePart1(string arg)
{
var lines = File.ReadAllLines(arg);
//A for Rock, B for Paper, and C for Scissors
//X for Rock, Y for Paper, and Z for Scissors
int totalScore = 0;
foreach (var line in lines)
{
var opMove = line[0].ToString();
var myMove = line[2].ToString();
totalScore += ComputeMatch(opMove.GetOpMoveSymbol(), myMove.GetMyMoveSymbol());
}
// System.Console.WriteLine($"totalScore: {totalScore}");
//13565
Result1 = totalScore.ToString();
}
public void ResolvePart2(string arg)
{
var lines = File.ReadAllLines(arg);
//X means you need to lose, Y means you need to end the round in a draw, and Z means you need to win.
int totalScoreStrat = 0;
foreach (var line in lines)
{
var opMoveLetter = line[0].ToString();
var opMove = opMoveLetter.GetOpMoveSymbol();
var matchScoreLetter = line[2].ToString();
var matchScore = matchScoreLetter.GetGameScore();
var myMove = matchScore.ComputeMyMove(opMove);
totalScoreStrat += ComputeMatch(opMove, myMove);
}
// System.Console.WriteLine($"totalScoreStrat: {totalScoreStrat}");
//12424
Result2 = totalScoreStrat.ToString();
}
static int ComputeMatch(GameSymbols opMove, GameSymbols myMove)
{
var localScore = 0;
switch (myMove.GetMatchScore(opMove))
{
case GameScore.Win:
localScore += 6;
break;
case GameScore.Draw:
localScore += 3;
break;
}
localScore += (int)myMove;
return localScore;
}
}
+44
View File
@@ -0,0 +1,44 @@
namespace day02;
class Program
{
static void Main(string[] args)
{
var inputFile = "input.txt";
var problem = new Problem();
problem.ResolvePart1(inputFile);
System.Console.WriteLine($"Result1: {problem.Result1}");
problem.ResolvePart2(inputFile);
System.Console.WriteLine($"Result2: {problem.Result2}");
// //A for Rock, B for Paper, and C for Scissors
// //X for Rock, Y for Paper, and Z for Scissors
// var lines = File.ReadAllLines("input01.txt");
// int totalScore = 0;
// foreach (var line in lines)
// {
// var opMove = line[0].ToString();
// var myMove = line[2].ToString();
// totalScore += ComputeMatch(opMove.GetOpMoveSymbol(), myMove.GetMyMoveSymbol());
// }
// System.Console.WriteLine($"totalScore: {totalScore}");
// //13565
// //X means you need to lose, Y means you need to end the round in a draw, and Z means you need to win.
// int totalScoreStrat = 0;
// foreach (var line in lines)
// {
// var opMoveLetter = line[0].ToString();
// var opMove = opMoveLetter.GetOpMoveSymbol();
// var matchScoreLetter = line[2].ToString();
// var matchScore = matchScoreLetter.GetGameScore();
// var myMove = matchScore.ComputeMyMove(opMove);
// totalScoreStrat += ComputeMatch(opMove, myMove);
// }
// System.Console.WriteLine($"totalScoreStrat: {totalScoreStrat}");
// //12424
}
}
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
File diff suppressed because it is too large Load Diff