Compare commits
2 Commits
2k23
...
33dd47128b
| Author | SHA1 | Date | |
|---|---|---|---|
| 33dd47128b | |||
| a4f35a77ca |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,5 +4,3 @@ obj/
|
|||||||
riderModule.iml
|
riderModule.iml
|
||||||
/_ReSharper.Caches/
|
/_ReSharper.Caches/
|
||||||
.idea/.idea.AdventOfCode/.idea
|
.idea/.idea.AdventOfCode/.idea
|
||||||
AdventOfCode.sln.DotSettings.user
|
|
||||||
BenchmarkDotNet.Artifacts
|
|
||||||
|
|||||||
@@ -2,19 +2,13 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.2" />
|
|
||||||
<PackageReference Include="Spectre.Console" Version="0.45.0" />
|
<PackageReference Include="Spectre.Console" Version="0.45.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<None Remove="Inputs\Day1.txt" />
|
|
||||||
<EmbeddedResource Include="Inputs\Day1.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
using AdventOfCode.Days;
|
|
||||||
using BenchmarkDotNet.Attributes;
|
|
||||||
|
|
||||||
namespace AdventOfCode;
|
|
||||||
|
|
||||||
[ShortRunJob]
|
|
||||||
[MemoryDiagnoser(false)]
|
|
||||||
public class DayBenchmark
|
|
||||||
{
|
|
||||||
private Day Day { get; } = new Day1();
|
|
||||||
|
|
||||||
[GlobalSetup]
|
|
||||||
public void Setup()
|
|
||||||
{
|
|
||||||
Day.ReadInput();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Benchmark]
|
|
||||||
public void Part1()
|
|
||||||
{
|
|
||||||
Day.RunPart1(display: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Benchmark]
|
|
||||||
public void Part2()
|
|
||||||
{
|
|
||||||
Day.RunPart2(display: false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
16
Days/Day.cs
16
Days/Day.cs
@@ -1,5 +1,3 @@
|
|||||||
using System.Reflection;
|
|
||||||
|
|
||||||
namespace AdventOfCode.Days;
|
namespace AdventOfCode.Days;
|
||||||
|
|
||||||
public abstract class Day
|
public abstract class Day
|
||||||
@@ -7,18 +5,8 @@ public abstract class Day
|
|||||||
public abstract int Number { get; }
|
public abstract int Number { get; }
|
||||||
public abstract string Name { get; }
|
public abstract string Name { get; }
|
||||||
|
|
||||||
protected string Input { get; private set; } = null!;
|
public abstract void RunPart1();
|
||||||
|
public abstract void RunPart2();
|
||||||
public abstract void RunPart1(bool display = true);
|
|
||||||
public abstract void RunPart2(bool display = true);
|
|
||||||
|
|
||||||
public void ReadInput()
|
|
||||||
{
|
|
||||||
using var inputStream = Assembly.GetExecutingAssembly()
|
|
||||||
.GetManifestResourceStream($"AdventOfCode.Inputs.Day{Number}.txt")!;
|
|
||||||
|
|
||||||
Input = new StreamReader(inputStream).ReadToEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|||||||
2366
Days/Day1.cs
2366
Days/Day1.cs
File diff suppressed because it is too large
Load Diff
2610
Days/Day2.cs
Normal file
2610
Days/Day2.cs
Normal file
File diff suppressed because it is too large
Load Diff
363
Days/Day3.cs
Normal file
363
Days/Day3.cs
Normal file
@@ -0,0 +1,363 @@
|
|||||||
|
using Spectre.Console;
|
||||||
|
|
||||||
|
namespace AdventOfCode.Days;
|
||||||
|
|
||||||
|
public class Day3 : Day
|
||||||
|
{
|
||||||
|
public override int Number => 3;
|
||||||
|
public override string Name => "Rucksack Reorganization";
|
||||||
|
|
||||||
|
public override void RunPart1()
|
||||||
|
{
|
||||||
|
long sum = 0;
|
||||||
|
|
||||||
|
foreach (var line in Input.ReadAllLines())
|
||||||
|
{
|
||||||
|
var middle = line.Length / 2;
|
||||||
|
var firstCompartment = line[..middle];
|
||||||
|
var secondCompartment = line[middle..];
|
||||||
|
|
||||||
|
var common = firstCompartment.Intersect(secondCompartment).First();
|
||||||
|
|
||||||
|
sum += CharToPriority(common);
|
||||||
|
}
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine($"[green]Sum of priorities is: [yellow]{sum}[/][/]");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void RunPart2()
|
||||||
|
{
|
||||||
|
long sum = 0;
|
||||||
|
|
||||||
|
foreach (var group in Input.ReadAllLines().Chunk(3))
|
||||||
|
{
|
||||||
|
var firstBag = group[0];
|
||||||
|
var secondBag = group[1];
|
||||||
|
var thirdBag = group[2];
|
||||||
|
|
||||||
|
var common = firstBag.Intersect(secondBag).Intersect(thirdBag).First();
|
||||||
|
|
||||||
|
sum += CharToPriority(common);
|
||||||
|
}
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine($"[green]Sum of priorities is: [yellow]{sum}[/][/]");
|
||||||
|
}
|
||||||
|
|
||||||
|
private int CharToPriority(char c)
|
||||||
|
{
|
||||||
|
if (char.IsLower(c))
|
||||||
|
{
|
||||||
|
return c - 'a' + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return c - 'A' + 27;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Input
|
||||||
|
|
||||||
|
public const string Input =
|
||||||
|
"""
|
||||||
|
DsPhSBQQQhqmBDhPDsFwjwsLjlRjlttvjvvtRb
|
||||||
|
rNJMNNbrHrtjHLHjvwtg
|
||||||
|
fNbNzZdrZnMnMPnQShFPDmnqFm
|
||||||
|
QWVCFfQffgQCVZzVVpHsHJBqtpspJFRHqq
|
||||||
|
mwDbmnnGNlNcwNDDNRbnNDlJTpBJBtJGtPTLsBGqTqqsqp
|
||||||
|
MlSdnScRnnmmDjSdNSdCzvggWzrgzjvfvrgVzW
|
||||||
|
gsMljbrjlZlWcWMJrWwTwbmwQbmmLDQQLhwL
|
||||||
|
CdgpzdgpgnfThHfFRwhfRf
|
||||||
|
SptgpSpnCNpVSGNPvPGSddcMWjMrjqBsJcWqMcBWcVlZ
|
||||||
|
JcJLQQFWhQJPJpWcwjHvMQvnnlMvzBHd
|
||||||
|
tCtGZrmVRmVGTVTtCfRTCHHNNvdNzmdMvMlNzvwdvw
|
||||||
|
CTGGRftfSGtGTGDLbFchSgSWWWcM
|
||||||
|
QcMFQrvrQbvtczbVbjbMzZzRpqmDDmqqnNzCDCDC
|
||||||
|
SHHfPJssGLPSdHThLhHdRmqNmNssnNmNCNnpjmsn
|
||||||
|
LhLJfTdLJwfgPTdfGccrtjcMrccwvcrrFr
|
||||||
|
jFLLLqDGjbtqLCChpMMhMBvpwMTmffpZ
|
||||||
|
ZnJHRncHHgnrsrZffTdMdMBfmMvfvR
|
||||||
|
NWWPnZrVHrZPCDDQtzDCPLCq
|
||||||
|
jpFjvBZhDFHZdwcmslcslBLLNl
|
||||||
|
dVtTVVCzzfrrMPNLLcnVcPLRns
|
||||||
|
CrzWzTqdWtGCzJtbJCrMjjDFHZQjZSpvFGFgHhHp
|
||||||
|
JjJqMctnhtDZDQtf
|
||||||
|
TrFFlrrCCHPwHwlPHFPzDhsffQQDsVfWwVJQJB
|
||||||
|
HHHGdFlHldTpCCFFlLHdCRJccMnqvqMgnNjjMjjvLMLcSv
|
||||||
|
cMfFcMFcrqgJLFZdrTDdthPGsGmtGs
|
||||||
|
WwjNwnjjBQzVVQHwRDnmtPGhPPsPnnTGld
|
||||||
|
bWHBjWVzpbRzbmScqgZMFcqf
|
||||||
|
RJjPTBJhTNNjfPhRBdqtlgdbGldwtCPgdb
|
||||||
|
ZmrHHmzpvSvvpzvmvDVCGlWVwCWtGtWCddggqf
|
||||||
|
QQpzFrHHQnzHvfTcNshcLRNFJhcR
|
||||||
|
QrPQDrppBQmCmFQm
|
||||||
|
TzqzsLfmsfSTfqzVLftNdJJNJGCwwGdgCwSGNC
|
||||||
|
TVHTfzWsfftsZstnbvrbWbrbppPbrmmP
|
||||||
|
BQrfqrLtJnttqqtQBJDDtBnDzRgldhVVpJlgzpzhpzsgslhV
|
||||||
|
TTNcPZCvZjmPFZjvPHLlWdNLghVhzzlllpVd
|
||||||
|
jcFPbTcZTFcmcjMjjFjbLwbnDBtfqbtBwfwSBnrbGw
|
||||||
|
SZJNJtrNzjjNCzlBBmqmQDBBmDBBjB
|
||||||
|
PGPbGwhLsnvwnVbGPVMZsDsTBBgcZgBBDBfDBf
|
||||||
|
pnnhhvphGVpvRPnJlSFRNNJHZHSdSR
|
||||||
|
hbmDDmwnnVGbhmjNrrWwLNLsWBrw
|
||||||
|
dMrgvcQqdjlBLlfW
|
||||||
|
HzzPSrcHqFHQgzpPcMpQqrtmbbbRhHHVGnZDnVHhVbVZ
|
||||||
|
RwtvdPRvSlTQmHHBQBRL
|
||||||
|
FjVSjrsFVnFQnTHmnT
|
||||||
|
VCVVMrWWjVGgbcNVGCCVdlvfdqfvwbSzwqfwZzwv
|
||||||
|
fmPDwJPDFRmRgPdwwwDNwgwPzhSQzVSzVTQdzHZzHhzQMQzQ
|
||||||
|
sWtGCWtpcqqpNnQjjzhVTTVQczhj
|
||||||
|
tWBGntsCNlqrWswDRfFrbFrPDbPf
|
||||||
|
dmzmjcbQjjQztFNqsqBcMJqNPF
|
||||||
|
nlTWnClWwQDTVnTrsMsCRBPZRJRJqRJq
|
||||||
|
wTrhwpVVvgvlDpTvVWVDdLfzgbLtbzSQLSzzjzLz
|
||||||
|
RWZdHvRdBRGbbvCjJnbn
|
||||||
|
pqqpSwzpSSbCwPwjlwjl
|
||||||
|
gDzzqSVzqrThpDBtRtCZdQRQLrQQ
|
||||||
|
GRqTGqtmTVdGHHVVNNlhPlMqbNqNDbqW
|
||||||
|
LzQSdFnfznfwBcLcnFppBBDDMPMPhDbhlwbWPlbWMjrD
|
||||||
|
QznFnLZFvVvHRgsddG
|
||||||
|
BBHBfBHFdSltmWJvqtNtHq
|
||||||
|
TQDrrVMzVDnWnNZDJc
|
||||||
|
gWzprTCrCMQzGGjjhwFwdffjfl
|
||||||
|
LLLSSSzBBlBLsszncCBZSPSMMMpdWTdrmmnfVGVmMfmrmm
|
||||||
|
DghttvwhHRvjJthNJwhVtDHGpddMWdMmrMmfGdppjWTfpq
|
||||||
|
gbJRthQDDRvwtDhQhDFPcVcbPczLzPBScBBF
|
||||||
|
sZsZpTtLCsbspZtTwrCwrwtDmNNdJmmqSJfqmfNGNmHqGdqb
|
||||||
|
nQvjTcjQglFVlllMFMVFqWfNqnNHHHdfSfHqfSJq
|
||||||
|
hFvvgFcFVzphpTrrwZDp
|
||||||
|
qJqfhsBpfSpchpqcrqwCDvvCDQndmpwDtnRQ
|
||||||
|
jWHPZWWjZsCmCWRDmQ
|
||||||
|
PPzMGHlzMNsPLPlZsllgsNrhNVBqhFVBbBSqFFBFrV
|
||||||
|
RnRsFFdSzmgwvQsqwc
|
||||||
|
lbgHGMBHlWWWlfWGGBtGwqDpDwmcpMrrqrQDZrMZ
|
||||||
|
GGJLBVJbVGjGtHVfJtWGHBLLPdzdCghnRnRnSShgNnhnddhj
|
||||||
|
VgzLFjjwhhSwFhVZgRhRgHHCCvdZdrqqCTvBCrqvvr
|
||||||
|
ncnNbGMcPpvHFrssdBHM
|
||||||
|
cnctcNNbQGWFJctftgVmzShzzwwVwgmwfR
|
||||||
|
pFWmSSFGQlvTbwWTwH
|
||||||
|
jdBgNhRgMftNBhPbhHnZHlTTZcwZ
|
||||||
|
lfBNRjCtCfMjsBfCjgfNBRMppGpJqsJQGrrmmJDpGmDDFG
|
||||||
|
GznngnhzccVdgjbbVjVjVbVLwwQJmQMrLTZhJmZLQTJWmm
|
||||||
|
pDBSslPCFPCpvCqvpPBQTlQLrdlJWrLJLmrlrr
|
||||||
|
psSsBptpCBdjtcjNVcGG
|
||||||
|
sssppsmchwspFLtvHhQJMtFb
|
||||||
|
rRLDqRVLNSMvFSSV
|
||||||
|
WDrLnzrDqzRqRzzfLgRnzrnsssZZZsZBgCwwmBppwBspZc
|
||||||
|
MtPbwvzzVtzfsqGGVpdSjsLd
|
||||||
|
DnNRCDJBnHJDHDnrDTRcnNZpZSsSLqjpdqqqSMqdddTj
|
||||||
|
CFRFRFHgDRnRgMtfFvvwzwvwvzWv
|
||||||
|
PNpFPncvvchPpNjpFhvPhPLmBwMgDRRwRgMDhBmLzBDD
|
||||||
|
trHSrdTtslWrSWmfzgmMnfBzmn
|
||||||
|
JsrQsJHHlsVqTjjpbbNnQNNpGG
|
||||||
|
sVQCdsmGlnlCmnGmQQhGCJJNvNjpgqhqhvPgpgPqjpcpcW
|
||||||
|
DMSfSbHLHbSDBBzLNvccWRcddvPjNj
|
||||||
|
FSwHfTFdFsmJlnTTmV
|
||||||
|
FctwtTTCScvShFqtwScrcTSCJQGNndGHWJNQHWHZdgJrJgGN
|
||||||
|
jspLlfPlpfsDjBspfllWgdWHQggZHngHNGdsWJ
|
||||||
|
lRMpBlPmSFRTcvZv
|
||||||
|
TVZpRRVvFRVpTZRfFhFvvzGVwrwwwdDBMwQrgcDtMtDDwZrL
|
||||||
|
jsNsWqWjNQCNWbjPMcBLPgBtrdMwdrdL
|
||||||
|
SJSsmqlSNljbmlNjsbQVffzGRvzmmVhQpVGz
|
||||||
|
BFFMvcwMwwpFFfpbDMqPVgLVgmLDPR
|
||||||
|
JtSsSzJssQJJWjRZzgLnDgqLPZgzbg
|
||||||
|
dsdtWQWdRGjTRNQNQvGfHCCFpvfGwlCfCp
|
||||||
|
zzWGqWnqnwWCvCrHffHRpBpBBRSJzRFFDhSQFR
|
||||||
|
VPVsZMNTLsMvPsmBJhllFpFBTJFQpl
|
||||||
|
sZtsNsZtdZgjbwggjnbvqr
|
||||||
|
QpTvrphmDvvddfcJJHTTncMlMG
|
||||||
|
bRZZPRwjgzzlSSjGlnlSJS
|
||||||
|
BZzBzssWgwzzwNBsgsPBgszmQptqrrGdvdWmqdhhFQDpQF
|
||||||
|
FfMtzSqlDlzfMhPFhPtffNRsCgSgCCGspRpRGSsgsg
|
||||||
|
WTcWLTTVnWmrVdLrcHmNGNCZwCCggpgDRwpCnR
|
||||||
|
JcdWJHTJWdJdjJccrLvlFltFQQvPFDMjqqlP
|
||||||
|
NfjFNNZPDQVJVWpCbQpJ
|
||||||
|
lcmdzlmzBtRSTlTTcncsVSbhpLWpWgsWghgsVS
|
||||||
|
mBTRRmGccRtBwDbrGPbrMMrF
|
||||||
|
VVQqlsGrVsMWBNFNMQHF
|
||||||
|
TfzZfDgjgnLGjjztTncCFwwNmdvNcwwNBvHNFwvd
|
||||||
|
jzjDgZzjntGJZzCnhrrSlPVsJslpslPq
|
||||||
|
dVhpjGPdjHhqHgtHJJ
|
||||||
|
sFzrzllQswDwFbcmBlgvZTCgvqTCfgHQJtqT
|
||||||
|
nDbBsFzzrrtFrlwzPdSVMWMVVMSnGNLd
|
||||||
|
wqJCjqChmwMLmMmprNgG
|
||||||
|
DNTtdsdWcHdNspGQggnrgLnQpc
|
||||||
|
SZvFftdddDsDTtttTDJNCCwJJZzbbCjwwVPj
|
||||||
|
VstwZCwslBZQDBjfDDBDfS
|
||||||
|
rvHnmMRrTzmMrmhRppbhDfpjfbjbctjD
|
||||||
|
rPFLRLmFvvLvHvTCtqsVVwldGZGPGV
|
||||||
|
SNZDJGfvwgMgfgmLmLcmBqgWgQWr
|
||||||
|
hPnPTnVGsPRqLWpTmQqQ
|
||||||
|
tsbnFhhjhSdGJNCjSf
|
||||||
|
QSbGgBjfTCMWFNPFFtDghPrP
|
||||||
|
JqHqJVzZzwJJHLlqQptDhPrctpPDtnLF
|
||||||
|
zZmwJwdwdvHddVJvZqdzHlfGBbsCmMTsWCBCjsGGBbMQ
|
||||||
|
gVmLtpWrFTFBLtpcFNbvhNNnTnvnQRlQQv
|
||||||
|
GHjjqsMqwZZJdqGfZjfZGjQDDhvQNzznzRzRwDNbvgzv
|
||||||
|
sZGPgssMqHZpPptmCcpCrP
|
||||||
|
CZCNNLmwzwCGMZQMQsFNWplvpsJBWpFHBp
|
||||||
|
SPbSbDRRbnDqggnbVbVrbRWHJFTlBBcTvWvsPvFpHTcl
|
||||||
|
tVgSvqVbnqDdgQzMQMGMmzthCw
|
||||||
|
mpbPQlblbwSlfSPGBpBGPpBFgMMtLFSHMLVVDVdtHLNctF
|
||||||
|
WnhZsrJhTnWrgZdZgHNLcLtt
|
||||||
|
hjCsCWRhjzhTjnWnQBbmPQQPLBGfqjwQ
|
||||||
|
BFrzdtmRmpFtFwwmjjzNQllPshqHvjNh
|
||||||
|
fWCLLCMJnCDbgfMJhPsPHvqvqVsssQ
|
||||||
|
WbLnCZnvprpmZrGd
|
||||||
|
gjMzTGBjWFBCCSSrBC
|
||||||
|
bddJJndbdJfwPPthrrSSSsFSSg
|
||||||
|
NJHbZbbvvWGgjWgT
|
||||||
|
dpfphMggHdQcwftMMgdtzWGfGWnDBnmvnVJVvfmn
|
||||||
|
CqPFTZPSNCTsZZZRLzGmcGVzDLGvLWBWJm
|
||||||
|
TCrTNSScPlplpHrQrQ
|
||||||
|
lqrCvhWFvMGWgfHPgLfjfdgG
|
||||||
|
zjmbjSnzRzVVRmzBRtwjVQnNLfdPgfLdfTtNLPHTNNpppf
|
||||||
|
mbSZRzQRBnnzbQJbmjmSbmVhlslZMrclWFrrqWCWsFhchF
|
||||||
|
mpfNshshflNthWfJCBBdmnQbQBZQdn
|
||||||
|
VFVRccgGTqTrHTbWBFjJBCFFJCCQ
|
||||||
|
PvTDHqHqPPGVqqhwfNlWlDhMltlh
|
||||||
|
HmLLgWVjJwhwWLgjjhmVHLLLlSzBlBlSvBvBFGvtdStJSSvq
|
||||||
|
TRRrPMsfQTbRRCZRnTMRZZTCcvSccqBqBBlzdFvBqFsGBcts
|
||||||
|
bRNPbRCZMCrQNfPLdhVpLDVgDhNHWV
|
||||||
|
sPJFDsSsVLgHjLHPbj
|
||||||
|
vCnRQhhRQdVQZlZdbHNMlqNNjgjbpbBL
|
||||||
|
ChhCCCWTWnnmvmGtztStzScwrcVcFW
|
||||||
|
NRBTNDBglSSgDwCClQQSFFHdLLsFbPFFLt
|
||||||
|
McpmWccMWHZPcLstbt
|
||||||
|
MWnWphVMvvzJzpWJWmVphjrDDBBTRwRDDDRRCnPDnqgg
|
||||||
|
hsnnhhLljLPTmZwvdZdZjmmz
|
||||||
|
RQNNDpNMSZwvsmqstN
|
||||||
|
QFMFRDVDsHSpRpHSMRHfGGGTLhCChBGhBhBFBJ
|
||||||
|
TTbltCvClzvzCZtwtwLTtQQQgjNgmjgQRRRQSjQLjR
|
||||||
|
HPpnZHcJsdnnfsdVHHSSqghhmqBSSqSmBfNj
|
||||||
|
VMJJdnMPrMGVrzvCZwZWCzCt
|
||||||
|
CcQnBBCfBvRzDlsS
|
||||||
|
PdbPPCbhGGpDSDlDDhvDJl
|
||||||
|
HmHWPWdbHnCwCHCr
|
||||||
|
JHlmJcMWHQcPmlmJMmMZPfwTTRDfgdDBfRtgQgdfBw
|
||||||
|
zVvFrqGjzWGVrqvjvNFpspvVBgNNddtTgghhRTwgdDwwwBfT
|
||||||
|
bVFrrvsvjWGVsCsqpSHZmMPJlJnCcLcPZZ
|
||||||
|
QrrQZFZnRtnFRTrnlFTtRZwpGGwzGszhjzbsGzzhmjjhhmhf
|
||||||
|
SgvpDSJSgPBSDPDNgpggmsMhMmffsMmzfJmzHHMj
|
||||||
|
WNVcCPgSSDCddSdWCpNBclCQQFRQQlnTLFLRZQnLtt
|
||||||
|
tgvqWqzvntdlzNzzHrbPrMhHMhhrVrjPmC
|
||||||
|
FGTGGRGTffcJRpQcJJwmjhPLhjnCQPrLPVQrMr
|
||||||
|
SppRSDRwFnJJwwswTDdtzBzqWWzZDldNgtvl
|
||||||
|
sjzPjLphMSrlppSp
|
||||||
|
fbGqgwTqgVTFFcgGTTGcQvfHQZRlSrSlSmMNMBRNNNrZmm
|
||||||
|
MVcFGTFtqjsJLjjtCd
|
||||||
|
jVJqTRHjjtDjZnVJVVjnNdwfCFPZmPgCCgCZGCFFrrFg
|
||||||
|
LSLBMBWsbBBCgfdrFd
|
||||||
|
ShbbzdzQRNNNVhDN
|
||||||
|
JwbSRqmSwRwcpmbSSVfhNBTVGGRnNNzRNh
|
||||||
|
ZPfQPjZZrffQZszhzTnVGBvntsNz
|
||||||
|
rLjggjQgQgFdPQjLFQZgwLMbWccLSwWHqHfSqpwc
|
||||||
|
cBhzNpztzHNrpHSHQrhZjZqdJRRgPqjhjqqP
|
||||||
|
bQwsMTswwVjdZMVRJM
|
||||||
|
vGWCTDCTQvvtlvQQ
|
||||||
|
mHVmTTsmzRmRHffmmfMGBzSPMhSWWdDWDSGB
|
||||||
|
VNcnNbtqqJbcbvgvWhShDBDPhjgPhSjB
|
||||||
|
FrrbCnqJcbCJcFFbnqJlppCTfQmfmZQTLVswRLZp
|
||||||
|
rWWppSStfRBLfHPdHHDzlldZ
|
||||||
|
QrTnQmmVCqvrvJvzJZPHvzHsDs
|
||||||
|
qgMMmrTTCcnQQmCNQNQmgTpwRWRtwtpcBWwjSRSSpttW
|
||||||
|
SzWQwwqVbQzwGSfVwffVwbqhFGFFMgGLGMlNMcnNgcvlMg
|
||||||
|
ddZHHsrCdBssDsHmChFLNNnMvmNnnnFncL
|
||||||
|
rpJJdHZJdZHQSRJbSfVhww
|
||||||
|
jLtFhNwNNvHnjFVvQLQLHhfbGDMPfffpllpttZMPPZZb
|
||||||
|
VmrqszVmgCWWggbPGclPlZbcZCbf
|
||||||
|
JdrTmVTVsqsRJHvQnnhwhBLH
|
||||||
|
vpdBvsvdVvSPhvQFCgrRmhjqqRgWcWWgmf
|
||||||
|
tJDGbZHbjRHNrrBj
|
||||||
|
DnMnzGJJwtzVSzzBzTBSTF
|
||||||
|
hZMDbQhMhlMDJrDrPMJRRqGJSvFvSwFSVdvGvwSFqq
|
||||||
|
HjjzcRTnpGVSGGFWHH
|
||||||
|
pssmjctLzpsRRnhlQbPfPrgDbZls
|
||||||
|
FJMhPhnTMGmBFdnmlrfqfCcwlwCwCv
|
||||||
|
pjHLsLbjjRHsHsjDjVsgDRjzCnfCfzqrqvwgflcvcvvgqz
|
||||||
|
njtpHZnLLQGhTtTWSSSh
|
||||||
|
NMddMTDrrjNnrnMWMrlnPwNwftBtGvptGjBHgBgpfCCSfgvf
|
||||||
|
mqRqLFZRVFbtgBSCbGWWHp
|
||||||
|
LZZRmQhVLLFzZdTQPndPNTTnQW
|
||||||
|
CprQrcpqhHhpppchpphdcdpLMRMGsVGGsMsLbZbtbfMRmtbG
|
||||||
|
DzlgTjwPTlSSSCDSlggNmMRtbsstsMfbwtVssMmt
|
||||||
|
TNCNSBNJJTNPJjCTBDzjlJrvvcQrrhphWBqHhHdqrnrr
|
||||||
|
ScbcbglMPRSmvclTlzMTdhVHhhjfdsdhrVDzfjrD
|
||||||
|
LJGtpQwpQBBCttJLGqtqGHhPfDdHwjjhrVrhdrdshr
|
||||||
|
WCpZQCGqtqQWtQWplZPcvMmgmvPccbvT
|
||||||
|
tGWqthqGVdzBWwdd
|
||||||
|
BZvZHFFHZrHZvZNRRHHZNHrMMTzRMTdTzbgDVMVssTDTwg
|
||||||
|
JnNmrHHNrCGBPPnGGc
|
||||||
|
wvFvZBmppBdSLcvshcLrgl
|
||||||
|
bTQqJJHJzJjDQjQtzRVJztDHslgNNVLcgSrsSsWrSslWgrgL
|
||||||
|
TqHHjQnbHTbbmZBBcFMpmBwn
|
||||||
|
ZFCqSlCPdCRTLWWTQQLLQS
|
||||||
|
GjggHcvsggHVTVBLnlcpBQ
|
||||||
|
hvGhlrtjmjrHHhjsMPFNPdtqMPqqRfCf
|
||||||
|
cgRwVfVzrgqqwZctTztFMFMTCdPmmF
|
||||||
|
bWJsSJHpTDRDTWMC
|
||||||
|
sHHNbshnlJhJjBsjsbnBHbZcqrZZQwqvvZcrwwvRcZnr
|
||||||
|
ttgVBtMbttngmHJVpzlzZlppzw
|
||||||
|
cPcsRPmPPQfGcccRQSSZzzvzlflzZHvJppzJzT
|
||||||
|
sQPSCPPWccWWWqsQqRCQFNRMmnbnjjNbgDdBjhBrdbdDbd
|
||||||
|
gSsZDSgdQZgWSgddwLDLLfCDBqvlhBlClqtqjhvBhB
|
||||||
|
RMcsVMcsbVsrPrmJcPHHVvfjjCnvvfCqhlqvqqqq
|
||||||
|
NFMRRpHPgzszGppG
|
||||||
|
WmmZZNJCgCBZCzPvmBCmjWjjqFtFqjFjbVwqwjtt
|
||||||
|
ppDMpdMfSfSSNtlwqbqwwq
|
||||||
|
dTGDhdnfLMLhfDDpQvZNZgmrmrQJgrLQ
|
||||||
|
jrqRqfNNhrVvcTVdpTscpd
|
||||||
|
tGWBlLggWGddTspZZd
|
||||||
|
JJzWtQgQsDbBgDWsgbFrPrRJNMJMPqMNfHjH
|
||||||
|
GdvVbbWsWdvWGDvWZcbFBTBZCzCjwzrhPBJjzF
|
||||||
|
nQPfSHnglfpnMSngnMgJTprJCCwwrwCwpTpCFj
|
||||||
|
SQQHSttRqggmlVsNcvWdRvbWPN
|
||||||
|
WLNLCWLsSJgHFrSHrM
|
||||||
|
gDbzRTcmbzPPgPPdtBctfHfrMMQfGFJrhQnMfGJR
|
||||||
|
dmmzzqZdDqqTLLwjgZgNljws
|
||||||
|
TCqsDHssmDsDGVGlVcMccGDV
|
||||||
|
FLntWWnnFzFgzzbtbznLBtlfjGZmcfFGVNFGlVZcMNlN
|
||||||
|
PpbLLmpgbRzqpCHwChQqwh
|
||||||
|
lVBPVgflgBVVrVTTwgwBPmgflDQjnnGvqjGDDFjGlGnvqHHJ
|
||||||
|
ScCLzdCZdbLSbFdFqvDDdGMQGQ
|
||||||
|
bchNCLRWSbzCbNRzbWRmsrhQwVVwBhmQpPwpgV
|
||||||
|
GmfHCCPqWqHLWLCfRJpbrrbQphwZbZ
|
||||||
|
STVDQzNnzMzNdstMDzzNtZwFhrlwVJJrJlFFJRFwFR
|
||||||
|
DzSvzstnszMnjQcqggjPqQBcqq
|
||||||
|
BzNwLTqwTjrBrljWpBlrQpBpsCGGCtpssCMttDtHsttMDCHp
|
||||||
|
mnrJVmRhhvJVcHtsGHMCnZCPZM
|
||||||
|
bvSmVbRhbgmmSJflzNLrzqzfWfqBWr
|
||||||
|
qsZLqqFNhfrGnJFv
|
||||||
|
DVjVmWlcjVjdDTDlbbTDTzmrCnMmJGnHnmCHfJGfvnfM
|
||||||
|
lVRdDglTlTgVlVjbWWVzVjvNZqSBsLZNtqRsLBqLqQtL
|
||||||
|
ffRRfLVHZHfJHVJcMrMZZwwTzGBBzBTBjGTwrwdSCj
|
||||||
|
qmWbWQbqnbvWhbQPGnGNnpvwSzltpBldtSdzllptCSjTTt
|
||||||
|
vWsbnbWnNvQQQQvsRRLfJRRVGfDcfV
|
||||||
|
PpqrvswPvvvPsNqmDLDttCCcHHZVrCtW
|
||||||
|
hgSddBhghQMdbhbwhgSdQgCCctZcDtLntLttCVLtSLCc
|
||||||
|
dGzdQMFzQMdgGGlGJMzBgBwRqNNfmmTsvfRfJTpwjmpP
|
||||||
|
pcphpdrWDmTgHWMtRWqHRVVH
|
||||||
|
SbGcGGQnvNQGvsjBtVHBLjvqVPVB
|
||||||
|
lzbQCzbZllSzQslpCJpJJDggcggfDT
|
||||||
|
ffrTlhrVrfCsDVTsWzGBBZcBRBqRBWtGtZcq
|
||||||
|
QNFmFHrHNSSmSLJdJrNGZLbGjbcBjBGjqcbgjc
|
||||||
|
ddQvPnHddnQJHSHSFPdnFfDDTfDMMCrwMlPTwDCsrC
|
||||||
|
NBnrNHQHBscvhfBM
|
||||||
|
bbGtgWWWqZFmnZGZbmVCdMzvvShfzfGcdcfMSS
|
||||||
|
WqbjnmbnjWgmFFgtWVbWZwNTNLjNprNwQLDwrTrHQr
|
||||||
|
lwwlcjlzQRBcBccbdLCVnNVWJJzfLndd
|
||||||
|
pZDMtZpSDMZpMZMsPtHVNJVfRCRddVndnJLSJd
|
||||||
|
mDTZvTqtDDHttRPcqhQlwgGlghbqBh
|
||||||
|
DTspTqssqTbdmCMwVmnmlfCD
|
||||||
|
PLPWjjrSjvPzqZvjvRqjLtPwnnHCmWVcncMnnwmncHcHll
|
||||||
|
RFztFjjqjQFQTbdTbQ
|
||||||
|
hTFSVSdhMMVMFjjgbthcbzczcg
|
||||||
|
DvwCJVJWWJDRnfmbDmccfmmgfb
|
||||||
|
QrJvPGWWnpVMqdZsZpqM
|
||||||
|
gRLcHbgnfpgpJjlqqp
|
||||||
|
SFwrTHFBqlZtBPZq
|
||||||
|
HTzDwmSvCvCmsmmvTSwvFwcfRRNRLcQRWNssNNbRWLWL
|
||||||
|
PpMgDMDnsWSnjBQnrjbn
|
||||||
|
LFcVVGChCFdhdVFZVpVCdVbvQbRrbvBBbBjQSJZrrJrR
|
||||||
|
FNwGNCCFHcVTHcFdHHHTDzMzfsgzwpPWMmPflmtt
|
||||||
|
""";
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
namespace AdventOfCode;
|
|
||||||
|
|
||||||
public static class EnumerableExtensions
|
|
||||||
{
|
|
||||||
public static IEnumerable<TSource> Flatten<TSource>(this TSource root, Func<TSource, IEnumerable<TSource>> flattener)
|
|
||||||
{
|
|
||||||
var toVisit = new Stack<TSource>();
|
|
||||||
toVisit.Push(root);
|
|
||||||
|
|
||||||
while (toVisit.TryPop(out var node))
|
|
||||||
{
|
|
||||||
yield return node;
|
|
||||||
|
|
||||||
foreach (var child in flattener(node))
|
|
||||||
{
|
|
||||||
toVisit.Push(child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue)
|
|
||||||
{
|
|
||||||
return dictionary.TryGetValue(key, out var value) ? value : defaultValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1000
Inputs/Day1.txt
1000
Inputs/Day1.txt
File diff suppressed because it is too large
Load Diff
BIN
Preview.png
BIN
Preview.png
Binary file not shown.
|
Before Width: | Height: | Size: 80 KiB |
60
Program.cs
60
Program.cs
@@ -1,74 +1,22 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using AdventOfCode;
|
|
||||||
using AdventOfCode.Days;
|
using AdventOfCode.Days;
|
||||||
using BenchmarkDotNet.Running;
|
|
||||||
using Spectre.Console;
|
using Spectre.Console;
|
||||||
|
|
||||||
// Benchmark
|
|
||||||
if (args is ["--bench" or "-b"])
|
|
||||||
{
|
|
||||||
BenchmarkRunner.Run<DayBenchmark>();
|
|
||||||
Environment.Exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Normal run
|
|
||||||
var days = Assembly.GetAssembly(typeof(Day))!.GetTypes()
|
var days = Assembly.GetAssembly(typeof(Day))!.GetTypes()
|
||||||
.Where(t => t.IsAssignableTo(typeof(Day)) && t.GetConstructor(Type.EmptyTypes) != null && !t.IsAbstract)
|
.Where(t => t.IsAssignableTo(typeof(Day)) && t.GetConstructor(Type.EmptyTypes) != null && !t.IsAbstract)
|
||||||
.Select(t => (Day)Activator.CreateInstance(t)!);
|
.Select(t => (Day)Activator.CreateInstance(t)!);
|
||||||
|
|
||||||
var select = new SelectionPrompt<Day>()
|
var select = new SelectionPrompt<Day>()
|
||||||
.Title("[cyan]Select a [yellow]day[/] to run:[/]")
|
.Title("[cyan]Select a [yellow]day[/] to run:[/]")
|
||||||
.AddChoices(days.OrderByDescending(d => d.Number));
|
.AddChoices(days);
|
||||||
|
|
||||||
var selectedDay = AnsiConsole.Prompt(select);
|
var selectedDay = AnsiConsole.Prompt(select);
|
||||||
|
|
||||||
var stopWatch = new Stopwatch();
|
|
||||||
|
|
||||||
// Read input
|
|
||||||
try
|
|
||||||
{
|
|
||||||
selectedDay.ReadInput();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
AnsiConsole.WriteException(e);
|
|
||||||
|
|
||||||
Environment.Exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Part 1
|
|
||||||
AnsiConsole.MarkupLine($"[cyan]Running [yellow]{selectedDay}[/]...[/]\n");
|
AnsiConsole.MarkupLine($"[cyan]Running [yellow]{selectedDay}[/]...[/]\n");
|
||||||
|
|
||||||
AnsiConsole.MarkupLine("[cyan]Part [yellow]1[/] result:[/]");
|
AnsiConsole.MarkupLine("[cyan]Part [yellow]1[/] result:[/]");
|
||||||
|
selectedDay.RunPart1();
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
stopWatch.Start();
|
|
||||||
selectedDay.RunPart1();
|
|
||||||
stopWatch.Stop();
|
|
||||||
|
|
||||||
AnsiConsole.MarkupLine($"[red]Approximate run time: [yellow]{stopWatch.ElapsedTicks / (double)Stopwatch.Frequency * 1000:F3} ms[/][/]");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
AnsiConsole.WriteException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
stopWatch.Reset();
|
|
||||||
|
|
||||||
// Part 2
|
|
||||||
AnsiConsole.MarkupLine("\n[cyan]Part [yellow]2[/] result:[/]");
|
AnsiConsole.MarkupLine("\n[cyan]Part [yellow]2[/] result:[/]");
|
||||||
|
selectedDay.RunPart2();
|
||||||
try
|
|
||||||
{
|
|
||||||
stopWatch.Start();
|
|
||||||
selectedDay.RunPart2();
|
|
||||||
stopWatch.Stop();
|
|
||||||
|
|
||||||
AnsiConsole.MarkupLine($"[red]Approximate run time: [yellow]{stopWatch.ElapsedTicks / (double)Stopwatch.Frequency * 1000:F3} ms[/][/]");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
AnsiConsole.WriteException(e);
|
|
||||||
}
|
|
||||||
15
README.md
15
README.md
@@ -1,15 +0,0 @@
|
|||||||
# Advent of Code
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Advent of Code made in **C#**, using **[Spectre.Console](https://spectreconsole.net/)** for **console display** and **[BenchmarkDotNet](https://benchmarkdotnet.org/)** for **benchmarks**
|
|
||||||
|
|
||||||
## Build and run
|
|
||||||
|
|
||||||
- **Install [.Net 7 SDK](https://dotnet.microsoft.com/en-us/download)** if needed
|
|
||||||
- **Clone** the repository
|
|
||||||
- In a shell, execute `dotnet run`
|
|
||||||
|
|
||||||
## Benchmarks
|
|
||||||
|
|
||||||
> Todo...
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace AdventOfCode;
|
namespace AdventOfCode;
|
||||||
|
|
||||||
public static partial class StringExtensions
|
public static class StringExtensions
|
||||||
{
|
{
|
||||||
public static IEnumerable<string> ReadAllLines(this StringReader reader)
|
public static IEnumerable<string> ReadAllLines(this StringReader reader)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user