diff --git a/AdventOfCode2023.sln b/AdventOfCode2023.sln
index 59eeff0..1d197bb 100644
--- a/AdventOfCode2023.sln
+++ b/AdventOfCode2023.sln
@@ -5,6 +5,8 @@ VisualStudioVersion = 17.4.33110.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode2023", "AdventOfCode2023\AdventOfCode2023.csproj", "{415F4228-5CB8-4CD6-9707-52042645DF48}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode2023Tests", "AdventOfCode2023Tests\AdventOfCode2023Tests.csproj", "{F6BDFA63-5763-4D29-865F-A997A5855C5D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
{415F4228-5CB8-4CD6-9707-52042645DF48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{415F4228-5CB8-4CD6-9707-52042645DF48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{415F4228-5CB8-4CD6-9707-52042645DF48}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F6BDFA63-5763-4D29-865F-A997A5855C5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6BDFA63-5763-4D29-865F-A997A5855C5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6BDFA63-5763-4D29-865F-A997A5855C5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F6BDFA63-5763-4D29-865F-A997A5855C5D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/AdventOfCode2023/AdventOfCode2023.csproj b/AdventOfCode2023/AdventOfCode2023.csproj
index f02677b..76409b3 100644
--- a/AdventOfCode2023/AdventOfCode2023.csproj
+++ b/AdventOfCode2023/AdventOfCode2023.csproj
@@ -7,4 +7,12 @@
enable
+
+
+
+
+
+
+
+
diff --git a/AdventOfCode2023/Day1/Day1_1.cs b/AdventOfCode2023/Day1/Day1_1.cs
new file mode 100644
index 0000000..cac1ed8
--- /dev/null
+++ b/AdventOfCode2023/Day1/Day1_1.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace AdventOfCode2023.Day1
+{
+ public class Day1_1 : DayBase
+ {
+ string input = string.Empty;
+ Regex singleDigit = new Regex(@"\d");
+
+ public Day1_1()
+ {
+ input = GetInput("Day1.txt");
+ }
+
+ public Day1_1(string testInput)
+ {
+ input = testInput;
+ }
+
+ public override string Execute()
+ {
+ var segmentedInput = input.Split("\r\n");
+ int calibrationSum = 0;
+
+ foreach (var segment in segmentedInput)
+ {
+ if (!singleDigit.IsMatch(segment))
+ {
+ return $"segment: {segment} does not contain a digit!";
+ }
+
+ var matches = Regex.Matches(segment, @"\d");
+ if (int.TryParse(string.Join("", matches.FirstOrDefault()?.Value ?? "", matches.LastOrDefault()?.Value ?? ""), out var calibrationValue))
+ {
+ calibrationSum += calibrationValue;
+ }
+ else
+ {
+ return $"Could not parse segment: {segment} to int!";
+ }
+ }
+
+ return calibrationSum.ToString();
+ }
+ }
+}
diff --git a/AdventOfCode2023/Day1/Day1_2.cs b/AdventOfCode2023/Day1/Day1_2.cs
new file mode 100644
index 0000000..4084cbc
--- /dev/null
+++ b/AdventOfCode2023/Day1/Day1_2.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace AdventOfCode2023.Day1
+{
+ public class Day1_2 : DayBase
+ {
+ string input = string.Empty;
+ Regex leftSingleDigit = new Regex(@"\d|one|two|three|four|five|six|seven|eight|nine");
+ Regex rightSingleDigit = new Regex(@"\d|one|two|three|four|five|six|seven|eight|nine", RegexOptions.RightToLeft);
+ Dictionary map = new Dictionary() {
+ { "one", "1" },
+ { "two", "2" },
+ { "three", "3" },
+ { "four", "4" },
+ { "five", "5" },
+ { "six", "6" },
+ { "seven", "7" },
+ { "eight", "8" },
+ { "nine", "9" },
+ };
+
+ public Day1_2()
+ {
+ input = GetInput("Day1.txt");
+ }
+
+ public Day1_2(string testInput)
+ {
+ input = testInput;
+ }
+
+ public override string Execute()
+ {
+ var segmentedInput = input.Split("\r\n");
+ int calibrationSum = 0;
+
+ foreach (var segment in segmentedInput)
+ {
+ if (!leftSingleDigit.IsMatch(segment))
+ {
+ return $"segment: {segment} does not contain a digit!";
+ }
+
+ var leftMatch = leftSingleDigit.Match(segment);
+ var rightMatch = rightSingleDigit.Match(segment);
+
+ var joinedString = string.Join("", leftMatch.Value ?? "", rightMatch.Value ?? "");
+ var digitizedString = joinedString;
+ foreach (var item in map)
+ {
+ digitizedString = digitizedString.Replace(item.Key, item.Value);
+ }
+
+ if (int.TryParse(digitizedString, out var calibrationValue))
+ {
+ calibrationSum += calibrationValue;
+ }
+ else
+ {
+ return $"Could not parse segment: {digitizedString} to int!";
+ }
+ }
+
+ return calibrationSum.ToString();
+ }
+ }
+}
diff --git a/AdventOfCode2023/DayBase.cs b/AdventOfCode2023/DayBase.cs
new file mode 100644
index 0000000..213a206
--- /dev/null
+++ b/AdventOfCode2023/DayBase.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AdventOfCode2023
+{
+ public abstract class DayBase
+ {
+ public enum Encodings
+ {
+ Default,
+ UTF8,
+ ASCII
+ }
+
+ public static string GetInput(string fileName, Encodings encoding = Encodings.Default)
+ {
+ Encoding enc;
+
+ switch (encoding)
+ {
+ case Encodings.Default:
+ enc = Encoding.Default;
+ break;
+ case Encodings.UTF8:
+ enc = Encoding.UTF8;
+ break;
+ case Encodings.ASCII:
+ enc = Encoding.ASCII;
+ break;
+ default:
+ enc = Encoding.Default;
+ break;
+ }
+
+ var assembly = Assembly.GetExecutingAssembly();
+ var resourceName = $"AdventOfCode2023.Inputs.{fileName}";
+
+ string result = string.Empty;
+
+ using (Stream stream = assembly.GetManifestResourceStream(resourceName) ?? throw new FileNotFoundException($"Could not find resource: {resourceName}!"))
+ using (StreamReader reader = new StreamReader(stream, enc))
+ {
+ result = reader.ReadToEnd();
+ }
+
+ return result;
+ }
+
+ public abstract string Execute();
+ }
+}
diff --git a/AdventOfCode2023/Inputs/Day1.txt b/AdventOfCode2023/Inputs/Day1.txt
new file mode 100644
index 0000000..acb0c98
--- /dev/null
+++ b/AdventOfCode2023/Inputs/Day1.txt
@@ -0,0 +1,1000 @@
+9eightone
+hczsqfour3nxm5seven4
+9twopjqkghmbone
+rhrfthv886vflthreeztvzs
+tlbtwo62five
+ninetwonine234nvtlzxzczx
+28sevenseven
+2sevensxszqdhjg2threexzjj3
+2fvq
+781dk97eight26
+plfrsjtbl6
+sixglj13
+b3seven6817gjpcxseven
+3fivenlqcbszfoursixfive6sixfb
+zfxbzhczcx9eightwockk
+threedssqrlk2qnpkzpkdddt
+three67fourkbrlkf7mtbjprrth2
+seven3oneightp
+31three
+3894sevenfourfour
+3ghmqlnine
+7nine5zplh
+3three9
+ff6dhvzmdrgt
+3one3four
+fourvptdnbpqcxktwoone4oneone
+d6
+4kthx2
+ktjvrmdjf27five8one
+94gkvkghfjqpsix
+4gzstfpbqblqkxqrvd
+eight1nine
+8zgpptkqjdglpkssbpgzmn85
+sixpmfjrdmcj76
+six97
+ninesxs7
+one5lvxpfbnlfq
+jninepzpgtzq7four5
+fourvjjrttlvdtfour8qxdvlg22two
+7pqqdrrvcmvbr8nine57
+gvsdldqqxtjtsnnh147hxfour
+5nnph1three
+fkfzrdjvmnv9onemhlsjzrmxzzjfourjkvvgn
+ggxvcpfxlpjnbtmp3onecmgr
+three8rjm2
+88424four1
+jkgmcm7four63three
+9twotwo3
+skzzsfvhnine5dgzvdz
+eight71l1gthree
+shfrsdsgpsfpqgflvhdhsmlxvprqrplpmznfive3224
+2536sevensevenmqtrkzlfqkgp
+xnmfive8foursixsix8zjlczq
+7threekthree
+hcjeightone84qfjqkxxh9
+lnzkqfzmxonefourqsplvj6qthkx4fourpvrh
+76onejxthllvxrn82lddxx86
+5mdgxvpseveneightkxltknlz
+3sixnfourfourkdpfrgdsjhseventhree
+two72
+1781lcxvgz1sixrlxtdhgj
+three2kxrhnvkrsv9
+1bklbbkdh2sevenjkcckrkhm
+4txdqlj2qjjxxk
+zndcdgninethreekdspzsgf5ninetdx
+28hkvnlxeight
+rntmdthreeone7sixprqdtbsqs12
+fourqgbkxdj9eightthree
+eightntrlqffxzjjqrxvthree7eight
+threefourxtwo4six2
+nineeightptzqqqlfndtnq44dfhgnzbpjpkkjfkvseight
+three8three
+9mpjm
+twofive4xvxvhhfmqnfqtx3threetln
+8zpjkjmdjdclmlblsrqplh
+ninethree6seven9pqdbqll5xncgrvp
+ninebqczdbvshrsrlfiveonexjfdmxh1three
+lppfqnkgzpbc1nine6ninefninepgspdhvjtk
+7rbpjrhhrk
+nine6fourbztvbhpldcjs2vzvfxhfthsjlsvchfdftfive
+qthreegrq7sixvsrtztppnthree2five
+nvsvcds67seven6nine
+zgttjndqc34
+hdbr6jdknllngzdsevenpphrbdh
+jsnm7
+rmcbzk4sevennine12seven
+pdhzhfsvnbsbphcpfsbqceightmcqhxtgnine9six
+3three2eightsevenkrkhmsttxsix41
+5fournqxkbzthree
+one6four4
+2gfslqgszddk3crxtcv4njqn
+fourbzmcklqrtp3tgxcks
+vfsqvpjl7
+6zkmkm42hjrxlbjsixfoursixmbzsmm
+1mgmhtsjkfhgbrxcqlbfb
+5fiveeight8
+fourfourmcssix6two491
+6sixznqcronetrklkcmj
+ninefive1twothreenbjz6
+threeeightjmvvbbmpxkcb2six7
+hbgxxnthcrfndrncqseven2
+nine6twomlbkcgdfnjninetwoeight
+37
+878fivecxpdrbggkfktlghnnprghksz1
+pzpcpfour4nine3mxcfcscs8one
+cxklt1eight
+eightfivegxblrtcjgbdfourfsczgvm1pqpjz
+6eight2nbzbsqvdm9sixeight
+ftwone6nine686php
+16fivesxmpmkfzf
+vfmrtfhsrkpxkg897
+ksix77tzcmhbmnlqone
+hdpjfive4two7eightninexjmtxx
+sevenxcbbvccjtwo7rjdqmmtwossmqdz
+4791
+1dxddjrgeightonenlkrpffqtwofive
+qzjksevenninelsbvlczkdglgtlglcrfour6
+66smvxndcrb
+3mmthree
+291pbztnnmc
+oneeight32zzmsc
+sfnpmgh5
+4jtnlvgns4bpqbjteightfive
+fiveeightnine19mtxstlf
+sixrdzqlvndv71
+two2fourthreeqrtkvfqx
+nine5threeseven
+three6gt8vv1
+threecvrctmlsbgv8one48eighttwo
+none1hzlrptbxxh9clltwovnqxt
+37svfrkmzndz
+1snnmlmpgnine6gkxp9
+mxdspkhrgktmssk6
+vp3ninebqsevensevenpdlgldrrsixeight
+ninedvj637seven
+fivethree5eightseven6
+one6gzb9onesix8seven
+6fivexlnkmljfjfxpzljctwofour
+qsrkpdfourtmsmxcbq729lkkjndgvsv
+six6seven2seven6
+r9sstthc7kfhjfouronethree
+5threelfgmxk262
+pvfrx7one
+eightxnrmtjfcrzmflzjffone5htnine
+8three37psix5
+8nine1onetrhttvqfour393
+dbteightwobqbjzm4sldhhsix4
+3nphxlsfbjrstkzcsevenfivetbplknqmng
+fcctqjdtfgshjflnn82fivektzlvhm
+gdznbc758eight3twothree
+d9foureight6threencfgfivectl
+18xrgdprcvxstdonetwokllvznxffiveseven
+6vdtnrr
+5qmnmqbs89
+onellnghcl4
+six33
+9rfrqkjpbonelfqcpcvrqonesix
+four3brgjgdfs5ckccklxf147frfflvkvbf
+one6fourznsnzrdzql
+jkbzdjdnfh775
+1five1ssrmqpkpjsevenonertszt
+vrn3eight
+three3398threenksgf8two
+5jptbc
+9tfzqlqc7threemh71
+doneightfour1
+7nine9sevensixkcstwo
+eight42threefourvjfflgjpsix8
+nznsgzzbrpgphpfourzs72hfsixeight
+ninesix3
+rzp3kmjnbvjfbxrqftvjbckqxgh9fournine
+5srpnghlpgrleightwoc
+dfjsshvnqdbzttbmeighttwoonedvvnt4eight
+5eightcqtwoninehxmspsdglqkmttwo5
+ckhgxqvm6
+twoonec3threenine17
+bptqceightcvjxzngrsrhdvzvxhl8
+9sevenrkchssgltgthreetfthreeeight5
+5four1five4hqfournine
+81f9sevenjfgzjlbvzb9eight
+sixhscsfhtls58
+kbsrhhfjktwo6vksix6five
+f96xhv
+5seven7slxxbsjqktseven
+eighteightvvmdsknbfivegx82fvsnkkx
+2ztmbkmtmcdp4mnpfive2ckdlzk
+seven5prxngljdckzpdjttcjninenineseven1
+lxk24threekcftttdhg
+jjplbxkhxdninethzb12nine
+69gxmjk
+74vqnkxjmljtgdr
+six5mqtblgxddbkjczzv3
+nine98pflpm3qfrssixtwonttbg
+ktwoone61fourcnhl
+onekvvzbfvx6
+1gdsflnnssixrtnvlninefour9nxknine
+6vxdfblmtr32bzftmnsneightzbtcshp
+bpk1prxsj
+9fivefivercfd8
+svvlv3onepcrzrmmhvcjzxjlhznine
+zqffqvjdt5nine
+fqkhlcfhmmm4
+onetwo7
+nine37sevenninefive
+five3eight
+8onesctsrjrbfourfourxrckjkbsmhpsmlj1
+2foureightxcfnfs6
+2three9
+68onenjdjz3sevenfllzrxbmfonefvxrxs
+qkteightmss87khseightninetwo
+6tvpxrjtwo399eightone
+xsvdctmbhd3gtqxlkjkhf8
+qkxteight398vcbpgjz83
+npkqpeight79
+1lzqlvqzvvl
+ptk4dzfhhmxbqkeightninexsgjg3scgtjcxjfd
+5six8fivekrvkgsl7
+2s
+1322kth3
+9twoone4oneseven
+9fxnckqrmfive
+8xvkkzzkv48
+77one79seven2four
+ninetwo42
+vjdcxtpmbnineeight2
+ninetqsqdztthree96kkqzrqqsone
+brcbcqjdqzninetwodhxnbmppm1
+phsflcvsixqpgtqbpftz792tznzxfqnp
+goneight5eightfourbgjbl244
+8jpcvzxmchseven59eight65two
+vmjkgvnmbh63v
+gmvp7qhlsqqn5oneeight
+tgjprthree31fourdvs
+vkssixseven1mksmt3eight
+lqcfpbt2seventwo
+5zxjk1twopsrxpj1sixgjqbpzg
+vqp2threenktcrcnqreightfourtpqjrpnxeightnine
+318znqfivergd
+six92npqlvqpdmninethree2six
+dcsbjdfzthreelcrfmxzfjg18sevenqq
+eightsfdpdrp32two2zgkrmdbbrkdxbkpb
+8fournfngp9twotwo6three
+8nineplmkgqxkr373
+tkdctwo2bcknsclmm
+7threeeight83gnffnnvvmmfives8
+1cndhmeightjh8qnfhqnnbvbsrpvnbndqvxqd
+fivemddsffzmchtwo57
+two552ln9vrxzclqfckdzdblseight
+xbgtwone6hbhbhzqpvtt2jjjlcmbjrdeightnine
+1rshxbpeight3xhgb
+nine7slhsxqqs6threenine
+4one72b
+vqjdptqtvbksghfqsninesix9
+vgrdszz2gstfmxtt3
+1three6twoxqrhlrprvp47
+pjjhqxmmx199vdtsvkl3mmktp
+qrxqsqxklr6sixonextrbvsvbpxbqkmfmqh23
+5rvmcsfkgfour5hvrhfbcklr
+lfbhcszfjhdcmdnfgkjmlzggcxvqxmsznqhhmfourrqkhdzzqnn9twonezlp
+txp8cxftvdnb9three4
+3twothree
+9kqltlbdbv5jxfqh9mqsrfnccseven
+five74
+flqp55qconeeightthree
+twoeightsevenone9
+six627khhnzhjxddf4sixlspfmxtpx
+d3six
+314rcflrzpt6
+oneone7
+srbvrkhdz9sixtwo3fivefpttzvs9one
+9pfs
+697foursixgdfhdrxtwoninehgdznj
+five87
+5threeeight6fzrthree
+onecdtfnrljxdninethree4fivenine4qmcqtv
+2threeone92fzh
+fivesevenrn8
+1tjctrxfbdvtwonekkb
+jjcpppxztwo5
+eight4gbqxj4seven
+three4nine
+3nine2one
+eight94
+8xcseven8pjp36
+ninefour94
+5five2
+3ninek
+qndtpeight2
+kng8sevenpt
+6eightpthcstdvfchnszdlmkmtxndbptpm
+twofourthreesevennqcdnvmxgxhbfb6llqgnqn
+2gtbpdqj8ninec
+715threefour
+onebtshxmks8sixspzgdnfkrtljmg5
+jhpfgbvl1dccvsbzknteight5chccclvvczfiveddzx
+seveneightfour3three4one7six
+75rzsxmnhcn
+xh2
+dsvqrsix1nine
+6nfknvbxlfzbn7sixsix
+psjspjfp7fbhzldkjrjzgkmjqzpc
+trzpxxtpxb5onethqjpxgghbkbjqrrjtninetwo
+threeghgttkkjqjblld8mlngjtdzone
+grmjf4fivesix
+xlxfzcrvfvfkjvjprstlxrxndjx7kr2
+ldnspmtwo6bnxrvggp8pjgktbtmjc3
+gvj32
+sixnptnlsmxxrfive48vmrmseven
+qrmc1rgmck
+three3jpvqpsxqfour
+one8dkdhplflcl83twovpkfmzh
+beightwoxtjkxzfcqj9four
+fivetwo25seven9stznfdjng
+8nine6
+seven1six7
+69hkzgmfljnx9three
+sevensevenqgoneblnq9
+79one3mqnmonexhnkvphbgcvjzzrvlmh
+threezqnjvrpxhssklcpltwofoursix4seven
+53jntjrfdbf7tmtjmsqhxsix
+5rdfnnmnltwo
+35gzm
+hbgdptzxd55threenljvkcreighteightnbrlhgdtshtqvtzd
+46onedpxdfgjpl
+prl91917
+sixbgfjvnqhcqninetwo1one8seven
+tkcvr56hh
+bxqcqlsevenrzgnrfzz2grfqh2dgzlz
+fiveonevlhmmkrcsmzfdb5lbxrfivetwo
+nineseven4
+threebrgzvzhbk8cbrkkpmgv2
+clzkgsxrmnsqvvhfd55seven9three
+nplbth9cfzjqd6ggone
+9db
+rbnqzbsmdsixrmnqqdgmx1hx
+3xtwo9nine62
+6fvhbdfgfjsldtlvln4five6
+5jc5
+sevenjponethree8seven
+eight92rfh4nine1jtwooneightb
+qtzninetrnc32three3six
+fourhhlztg3foursix9stv
+seventqqgj81vvtc1five
+8nineoneightg
+twomtwo5rncmsr
+fournine7rhggqjthreetwoseven
+eight6qgnlxjssqqdlv1tlsxcpdbffxmjpptcpcdpzxzlqqtk
+ggdvhdfive6
+4bdfmbqthreeldmthreetwolntnbgvlldvszplfxpsdslqlh
+nine1five
+38fkd8z
+5twonmp5fivepmrkfhcgxbcpbjksxqvseven
+mjxjzfour3cdhmzbgvqtqxtdfivethree7cb
+nine9xrpsqhtftwothreesevennncsdlclttd
+6bfndjktxdtbgsgcncqxrqdrs3
+xvcgbgsevenfive6dpceight
+jhzonekvqsmtpsgbsrjs8six
+lbxlcdzptwothree5199threepxln
+two1rktj1eightqppcfdlm2
+336
+446four6seven
+threefiveone3hdxkgvdvtwo
+2klvktzjps4eightninehhmcdkrbtddclnfour
+fivethreejqsjhfd1
+qtgscf1424sevenfour
+eight2791sdvjbbt
+4one1qhlglzzpkkvtkfivegrjbhpz11
+eighttwodgqrlsfive24jldfhpx
+518three73jxfour
+four1six5sevennjcxj3
+1k
+8seven29
+7xpgfourcskxhftsfnzzr
+z16onethreenine
+phtqgpdkqzd8
+9tseventhree8tbkbpkzlcs
+7nhh7four
+7three1xrtcrxpnmk6djzktl
+489onenpbtghbv7
+6eightwogd
+2eight4hmjzchninejqjnnrrg
+kvpffsbghsnzzzlbhkkh3nine
+ninethreefour1nld
+1four36cjsscrbnv6qnlfivefhrd
+3sixone
+158hnljkbtrdx
+fseventwoeight64
+threeone3tmjntbxzninefives
+cqkcltng2nnine5sbmqfj
+seven6two1nzbonezn
+76onetkgbgdnnff
+43threes
+lkgncsjkgklnslrmvsevenseven6nine
+317ps7clxzs
+zmfoneightvxbchjhrzmqvxmkkbfgxnine11fnshxqrcqlkrfb
+6sixnine3
+1qttpkjghbr3nine
+six6fourfour
+eightqfpdlppsjpzjfive7
+67sevenlrqkzcsfvmrsnjpnkt2nxnsfvbn
+threethreetnmhkdfive9sfxzdjcdm
+nineone33tmgbcflbkgcnjdxk
+seven9lmjfbfvcjlfskrm5sevenfour
+tx4one8qsrxkxztpseven97
+mgsdjkntwopnvzrpmhgtwoxpskmlnsd7
+588
+4sevenmjqvqnrsixtncnfhlkmppqlxvhzhjkgd9eight
+5jgqvm
+onefivefour92
+xjbkceight3ctkdndmsh91
+2fcncvrvqfb2bkzgnt8seven7
+nggzzfgqfjrdbsjz7
+4nine5two5five6
+fivefivebzldqdgfsixeightfoursixthree7
+2xqxgg2three8vpvfcphxvthreegprqsjlfeightwogd
+nine63
+qoneightlndfive3nine
+lbcnltpbgthreefiveb8
+lqvrsjdgnseven83
+7shbfourffjgvpqxeight
+3rdxmr4vk7
+36three
+1qmvvhqpthtlzq1gmqtqm
+dvfctxszmqkpzj2812
+5rnzcjpcxgc2four
+twonineone5zbxsrcgndfour
+86threeonefourninezcfghkqthrrh
+5two1gnhsgzhvbb
+xsix1
+xgvjqqqggsix6four
+fiveonenineone4drmvcg6
+479bdhgzh6
+gkfrmlpc4fivefive3onetwo
+7xk355four1one8
+fivefivethreezxl1pxvxsfktvrseven6
+one8qpvchhggcfmthreeone2
+two575ph1
+four5jmcpmnvsvnsevennntmj
+8dcrbfs
+trbgp3dphtwoninetpnqrlhqq
+twogchrpfourthree6one2two1
+1eighttfcpxqqvndzmhrj61s2
+rdvbmsevennine56twothree93
+54xczjhghc
+cjlpbqlhfouronebrrmtxlcqprnbfn9
+tdcjgcdgfive82nine
+seven5eightpgmjzkmq1fiveeight
+two7qttwo
+rltbflkbhthreeeight1sevenklbntffk
+four85fivethreehxjgqrvm66kmjvljtd
+kbm3
+stdfsixpgtsh7qfvss7
+hvlgddtb3threezpfdeight4fourqbsxbbmone
+sixxqcdxxnlt4
+d659ninejtdjhmszl
+x8kloneeight1
+6c6
+threeone8fourl8oneseventwo
+eightdlhztztmpnzrseveneightltlczb1dkssbntzrnqbqtsskk
+hnrvdtwoh41rxppklxhqdqxd
+65xxzttvlvcb
+6ninexvxddmcr
+eighttwo9two2nrcfnfqddmmthc
+nine5jgksevensix9
+twothreebgrtdknine47
+hpsvckbfourseven722plpqvgrr
+kdqtskqp8bpfjgr2sevenzlhqcqfcchpm
+49threespvsqhcbkgfkptplseight4four3
+2lzj48four6nineonetwo
+7dfiverkr77sevenvfhrqvnr
+three7five5
+lgzmgjnr4
+seven4sbqronefivepptqkqbvntwohttvklqkkmzlv
+8sixtwo
+ctn4fcdxngvvbthreertnbncskgj
+8eightsix3
+two56x
+3gmlspbcdhs
+6ponesixmtsxmqctbv2kkpp
+three6two496
+1mkqhdbsdktwothree5
+bvp626v
+oneonerfgbtgf5
+8r7twotwo
+1drgmbtsc
+qsqb6pfxxvrbnhc7sevenzdzrtkzhjmchnrbzksmkrvcx
+hcfj8oneightxg
+seven5mgbkgdttnsixmncdtsfchsd4fdhvbpxtq
+sbqttjhfds8vcjmgsixfonesixnine
+twomggrdbvn4nineqbnqkdhgklcqtzh
+63four3nclcxrhdzrjpnb2
+9168
+fivejzzdhd3
+twothreekfddrbtk2fivem
+7bscsjdpfjchsxkrshjcrzcznine37eightnddl
+two16shfjsixglgvkjtxkvdlqtwotwo
+six6q
+fiveonethreefourgvtdhf259
+dhgnmprvmx21one
+4ninejpzpsgkskbkcfive25
+three2mksq
+7fgxztnxnlrsht6seven3ss4
+9ntqfq22eight758
+sevenlqrvsixninexzpx4
+one32rznklfb
+five1fourtwo9seven73
+3hhbfxone2eighttwo6pfsg
+nineonetwo9zsprntffive4gtn
+btsixeightone2xvnsix63
+4rlt3
+qfnhxxzhlninefivefour4rvnbdbzggqninedzshxnv
+gdqjzdxvs3threehhkm
+vnn185nine
+79sixsixfivethreevzskfnpspninesix
+two1611
+threethree1mqnfpfnsm1
+kdkxlxtqzqpsxtfj6svt
+1nptdgtdpct63vjtpxqf
+2four1eight
+sixseven2hcnjzbdfk
+6threembsdhhtcb9ndqjrgktf
+fourg9sixmgb5sixsix
+7six1xtwosixninenine
+rcvrmldhveight76
+twofbmfczz2fourkfgjcfqst5three
+fivesix29qltppptworflvjfggcvrgkfqgmtqjpsh
+seven4mdhpflzkkfznmlrc
+sevenqtgfpcznnxslptdtwosixzkplmzqbxxll7svgxqjlhlv
+qrssxmxsxsixone38hcqnb727
+lrfour9bdlfjcsonefourk
+83fiveseven
+28qnine4kbeight
+seven8five22two
+twotpxzbbmztone2ncr2tsixone
+eightcsjrqsscfour5
+8rjdsq4lsix3
+bclxzxxqbv7ldgdtq2
+four5xfpztvttd
+ninen7flpbfzpone63twohzj
+five721
+6gqcxpb
+58kphone
+five1oneone3rgzhmdbdgqfmvm
+jfsphkspl2k2gflslvtwov
+889nbcbhgdh48
+vlgsixsevenddzxeight7fsc4
+71ninethree7six
+zbvgthreefivefivelpp5
+nkpqfsh8fivethree392
+two6cshbcj97j4lqgjvgl3
+sixone2
+oneeighthscfdlgsg8
+ptlkdqs94bnbtzxpqpqzg
+znf8three
+eight5qkckqbjdqsxsixpvphcqbvfxsix
+fcvbjnvninezsjxfxmplpbbdkdxv2r
+vlgbhsjleightkjlgsix4six
+htwone7htwotrstvbvnldgct
+eightrshrg743998
+3nsrtlmhmz9qzbqkrpnh1fourfive46
+onen8
+fourrbjgknhnthree7
+zb79three3qslrsglbrpsjrqmdrmrlone
+hhlqztk22qczrcqnxrtfourtwo3oneightsck
+jnrqxrclgn7
+5ninelfqcxfkfive
+6fivemtqcmcqbtwo6
+onekdxzcdbjgzkhnhsjnjvxgx3fivesixseven
+nhqcx14fourfive3
+45kljxlbzdkbfour96fourone
+5975r5txqqltj
+vhv88
+6onet25five
+4two72nineeight
+2foursevenonegcdqz
+353v7sixsevensixeightwobk
+vsqsxgqxn8xkxftpmtrtssxgnfqcqdnsixdsxhhxgonefive
+3four716seven6xmrmhv
+one4553two
+hqlpmone4rvj
+pp7mpsrrxcnkseven3twop
+nine8bfkgjkhjqc8ggponefivemkeight
+fournlh9sxbvjqmfourtwo
+cncvbjvzmcthreesix3d
+five8vlsix5qfkfdhjcghcvgz99
+tvxsrmnpsx3rkmxfqg6thkrtbmt
+6nine5threeeightsixgvxrmbb8
+mgvxxkkxltwobgghk6
+fkqghfour896bfpvshmsjrbpsz
+5twoprnfh3fvsrzgcdqv72
+5ninekbf
+tlcmtb78
+smkqlqxrglktzn24four
+onengbqghkzxlmbjltndnrq3fouronefourz
+bthreetwooneeightdsm1
+hfdskdkqtcsthxcfheight3five
+41two
+tfourtnmxjsmzclfmbmhjrjln57five
+p6six
+onethree855
+sixccdpqbkbbxdxcckbvtwo8rsixfdntfqseven
+one4863one8
+nine29fourfourqljfour
+61bshj
+eight7zmtgeight7gkrkdjc
+pgcxxjfourrbtzgmphl83
+vbb426seven
+7two47ztfhll
+5five4
+ninesix64nine
+7dtvvlkq9threesevenzlfznvninezxpk
+5threebgsv
+59threeninethreeccb
+295fivegdsgnsixsevenfive
+eighthqrxpsvksixgn1
+fiveeight8sixfivelt
+threenine2
+zgjlcxttjkjd5threefivefive7
+fivetwo444six
+nbcsc6eightsvflh
+tsdoneightnjbvfktxvvc2
+zhlctqxqxfp8two1eightrnqsq
+82kxfsxnvfour
+six2cpvmz4three
+twollqjbjs366
+seven7threesjlbcznntzkfljxqsfoureight96
+dxsnlhveightnmxone6hzgntkqbfhkdvxg6
+five8fjfzzntklkdgbplpnvdcpdcd2btnphjnbm2
+1six5drpzsx933one
+bqffgcnvp5
+pbjktxtslbbdgq6ninetwobrvbbzhrtsevenc7
+9kprctdnpzone56three
+twogbdvsdvzp1
+fnczdrvgzngt9
+three56gsljqzxgnzqpvh17threecvtgpshf
+ghlksix3fourfiveeight
+one95twotwoonet
+twoonesixnmfvtqsd8sixfour8p
+eight6twojzd
+6fourtwodbzrdghsgngljtj
+seven971nbrzgmnine5six
+lxskt34sixz271eight
+hv7one4five1xfdzxgbbsgml
+sevenfourxtccpbxfcnnpxxl7fiveone
+onerpvsvrgcn8kclkdgqjlsixfive
+mtthreeclxhfivep8threelh
+9sevensevenqxhhkonefour4four4
+fivesixsixmxnxg5pxjd
+zdkzqtjgsevenseven5zkqslxpll
+4sbbltdfvskrnxmlj8
+7fktr
+mmdhfmchmb1bqdtsmqzrlqxr
+3fbzrj5five
+threetwotwonine8
+one7bzxkqkflmksixnine9fourtwo6
+pdcfjzttllhsix3
+51fivercdkdrnine8vhckbxsrvg
+rskjjchgone71frdxpsqpmxfrsggmsjspklthree
+s6eighteight
+j1eight
+bjxznqjvneightff5twofjjxtrjlm
+fqsdttjbsmjf24cxseven6
+seven1srptcft
+tdqeightwo9rcncnqgfoursevenpzknnc4
+4eightone2mdfp
+gdxgnnfl3fzxqnvntzpzfcxtwoseven
+45khpg2gtnplgrdc28seven6
+twoxcspzzmhj77two
+three1blbrqddthree
+eight6eightthree
+8nine4
+eight82six85nine3
+6eightthree5
+sjplthreev6rqqone
+rgzdkzbsnvhd33six5
+vxdkzjprsxf2zpblslcpr
+vzfourseventhree7
+five72
+7ssbcsmt4nhbczngjmvdlxrdmkjxxzcczf5
+eightrbtvglxstscklzbfive65eightseven
+threethreeqggdxdqrfgpl542ngcvzsvgn
+qq7llbmzf6five5one7
+5zhnkvdfzlfpqgfvdpqrcdtvkp
+3eightthreeninethreeoneightf
+one8six52eighttwoseven
+93ggfqxzjzksjtwoonethreefive
+7twothreeone
+zmkrnqfgpvlfknseven555oneightrgp
+jhpkdgppzthreeonetwo6
+qcxtwo1onefivetwo
+one3tzsnfive3one
+cnbhxfour9kttkpgtr
+7bvgbgnlkkhknkghtdpnfourtwonetxb
+5nine5
+91one14three
+48sevenpqvxdz
+fivepmlhzfnmr8sdqhzrdkxeight763
+xtjpzzfn4dshfdqfzpcthreenjnine
+nbtdqthreexjsg9
+nkgthgfjm583
+ssixtwo1
+155fiverhvj
+onesevennine9
+six9rfjqlglsevenoneseven
+8jxktrjzqhhmbtmj
+qfpfcl7six
+7threelqxspxrl3vcjfltpskxsix5
+1seven1xnltmssnskqxqvjrpsdrqxls
+seven9sixninedldsrp8
+twolpfb6
+sixsixmdxvkmnzthreekhftctrvlzvfqthree8
+one1sixfive7
+vd3xxvhvszpnine
+75bp63
+six55onetbnxg4
+5five2twoone
+threemvptgnhxr69nine5
+2fivepgzbmgdhtgcjh
+glsbcqm4six1njjbkslthreeseventhree
+4onetwoccjtjqfmb
+threetwoonenine6346sjbpznqfr
+zb599sevennine
+sevenone988
+xkgssdsdftzsevenfour144qvszn
+nine9sixthreesevensix1threejfggcrbc
+pscvksl685
+1gpdvtwotwo
+mlvntk4
+onelblcmxhklxcfxm1
+4onexrngzrfive
+eight9nine8
+tbdcd4bmxftnlvc
+ninesevenrdpj13
+vxdhgcfdkvgztbhxqh3fmsrnkjheight
+sbjpgsjtmgninexkv4
+fourldgztjqnzlktxhmncdnfmdlzzsrrtbfhtc1
+jgmzmvqmrbdfjrtzbtzgxbcbq2ctvxjstzsixnine5
+666six9
+6gxhfive9xxthree5pqf
+four394
+lzqone8t95
+2cqhpgmszthreeddkkmleighttwofoursix5
+9sevensixsevendhb869
+2foursix
+fivetwobqlbgttxkqkmzxfn6fivejbv1
+8fivesteighttwonine
+nine83fkjmmnrzgjtdsmrqtktfvcsevennrqctstwo
+eight7gx
+jbdpffour68eightfoursix5
+ninesevenmnzmxpxcjjl2one3
+fourtjvtmbxlqnjdrjmgrzrh7rfjtkeight9
+three3twonine32
+fcfourfourmgtsv5
+42foureight8grczvgbg
+5eight7fiveeight77five
+seven6threeqrvtg
+eight2ztmqdjhjtqxhvfiveeight
+3dx4eight8nineone
+fivethree5drcmbgmntxqqf8pdhtfh
+eightdfphzlptxsix81seven
+4qhsvhplpn9smqnfgd41
+z18ls7
+threesix8bseven4
+19five57threeseven
+ctqfqseven8
+15six88
+oneppbxscshpm2nine6xljmsfpqqcsixeight
+one5threexntbrf
+nineone6qll2jfhdtvvnrhsgdscxb
+87vjlvndc8svdkn
+sixlqnfpc2prglgeightfour54eightwoll
+6btprcqftmthree5xxntlgrcone5
+blzmjpqkcrfour84xkhqk8kdcrjcksnb
+5fivetwothree685sevenkfloneightj
+bdthrfmz87four342eight
+7zbtbdmfbxgsevenfdlleightnfddrld4
+sixpsixpkvtxgsgbz35
+17fourbjf
+6chsffs6fddcftznsix1
+77two16nineeightfour
+8nvhfv3two
+nkdtwone8gcnjnfgsxtjjmt
+onethree79tjlnvgqf
+276lxfqrrsxjqbbllthree8
+hhdtmpdpdztcp4threehchrvhtxvbssgpvqk
+nine8fivevncfslncdn665
+cltgddlcqt83bnktpsixfour
+9lssevenqznhgqvvpp5sjlninebkkpmgmkk
+5khrnfzfkkcqnmpfour
+8ninerf7rnrh
+3hdpvpbrtn
+522onehvzjv
+7xvhxqcpgd
+82rxljgfour6
+gztjs8g5
+mhbtwoneznkzfztm2twooneninethreextttcheightnine
+9vrlllbqcnpb7drtcxcpsbz4
+73hqmcgkc273
+mqmc1
+foursix31eightsix
+sixeighthkpxg5pqqpfbfcmhjskqqkbtqzsix
+4pthsjjkfsr11ghfp56two
+threeninebsvtkcrn7eightwos
+1bbfmrf67four88four
+3vh
+three851two3qrtpqseight2
+four56sksixone1nineoneightvtc
+six349eight5jtxdc8
+ntvjdm1rhxbqdgsbqpvbdb
+21five4six
+fivefgnnlbrdjsix1two
+nine3eightthreenineseven
+75rmqtnqrgnmeight
+four5rfgldltfkhtjqjfbxfhhmdd9fourbxvpdcgx
+onesixtwoqcbqndpgt72three
+2xtsgslrgrf1
+psmhzczsonenine8fznbt6stvcsszlrsccfmgcpf
+38sbpzgfvjtwo3
+two1threecjmgjsm
+nine19
+nine2lchndsevensix99dh
+qbknlrd5rsone
+264gzqrvckzvnsevenxdj
+6jzppeightgcljcnnkgxhbmbv2gsrzszbdrmvzdxhktjmdr
+426twoc2twothree5
+sevenfour3sixsixqncc
+zfjtprrs89
+99threedbknkl
+vrpfjvveightgd4gpvnpdbp46three7
+8ninejttx
+gxdmgseveneightgncxrxdtx9threeseven
+two9fivenine283xxtwo
+four5four91vbqvfhggzjd
+9seventhreegrkm9vb2rmvhseven
+8gqftwonexp
+fourqnvdshvfive7
+dstmqp6hgzqldhxkncjbxh
+31nine
+nine84fourpnhxltmb7onesix
+19pseven7four
+foneightfourfour8cvbl
+four9qldqps
+4tgrjglvtgghvkhtttwossgrfbvlpbxlhfmq
+7fouronehjdmx
+6ninevvrfqntzmjxpc
+ninedfmxcnhth1279one
+7gzjmbgonebjxmrvhjxrone
+fivelpsstxjllxfive5sevenkbqmgbn
+2three81zxvtvnjqfsb
+four9threesixzlknkxz8one1pvxff
+seven33219
+dlnvxppbzrlczfqrcbzcvfour7seventgnn
+26tzzcmlpxfour1rq5jzmssgxhvrzbk
+1threekjvfnxvrk7bhljthreenine1
+98nine
+9one56six5seven5
+27three18
+7smbbsvxbvs
+717one5eightninegnine
+fcpnvdkp6twonez
+85dgdlfive
+pmtzmsjblninevpvcsz9mq75
+4ninepnsdmjkx3four7three
+563nine
+oneoneeight8twomrxprgdtxm7eight
+1fivefivekkqhrzqjjklq
+6hhthnkdonehlrvc81three
+jtwonetwothree5znqsvfour5czgsqvvtgg
+fcfskbfive9eight
+221frgs5nineeightwojj
+jdmgmsglmpl3
+479
+fltqdrksdzvdmkfive86
+ssnnvxfourthree5
+95jcfrtfbr
+56941ninethree
+rsfeightwo8seven78kmvdzbrmthree
+xpjqjknchcv8twojzone5sevenone
+61sixninekzkgnlmd
+41gpbxsk8qz
+four5pjsix5bdfbsixone8
+fiveeightlpghqqnjdfivetwo7vtgkjtwo6
+sevenninexxvjnvvhqfiveeight46qtfour
+8znvhldrsdfqpnhccthree1
+fvoneglhqtvfbr3four
+eightdhcngdmvnklgsix47
+6zcqb
+bkkvhbvgsixgdgckjzsj5
+gtjckhq73495fq3
+rgrrkksdcftpkkrpssgfjtv7twonine
+sixsix31
+5mfd3kjvhmvbhfive9pb2
+8six6xqvvxtbmqqninefourlpzmmhdsk4
+two3sixxtjrl8
+1jhtknlffcjr27
+1fivebnvbqt6
+8ninerdphtvbk11sixrkzszcdngt
+sixsevenfour53sixbqhcjcthree
+dcpninebpbxdrdtqpm933six
+1eightsix4659rtgbcgb
+two84pslqtrslbxqnksxcxhqrcmonencxqffmt
+ftzzgbzvvbj562cffcvncsbhrzzv
+two6gmjd
+jlfgq31four9seven194
+dzeightwotwofour39eightcgthzhp
+6sbgbqbb5onegxkrcfiveninephshfrftwo
+46lgnjvfjt9vjtqmjl18
+mcrsjvfive2
+45gbrpfgttwo5threejlksix
+1rpmkjxsdeight7hnpjjkthree
+9vvcchtxdltmfnxtqmp1mdntlj
+eight8mkzgsdrdhthree6four
+33lfivepcthfgfivethreeffftjmgsxl
+9bhmz8btcklgsixjdfxlfour
+vchvmnn7pk
+sevensix4
+3fourthree4seven
+oneeightfournine7
+p1one8zcsd1seven9
+32t1fhjzbkmfrgmtwofive6
+1fivelxjmvstxnblxlqdxvmbqcpdzzr7eightone
+mktoneightskrgbvmptm89cxv3
+geightwodd88ctqzfourfivesix1six
+one6seven2n
+9nine8dngqbrp
+h5dtnqzhpqjnnrxxcrjc7nineeight
+four2prxrhrcvfour
+2onexdnj7
+7xdnndpzsbplfrfxdglrsqrc4
+chbmstkhdfdmqsevenone31
+fourthree99
+44fflxqlxjr9pcsthrjt9
+7rdfour24sixbk8
+vnhfzbr4nine2qgoneseven
+5h8ntz8jscjpkhg2
+tcsz9ninelbfsxppbjpp8tbxctrtpfz
+three4nineeightgfl715
+1tdhxlqbkx69ninenine8
+46ninerjqfivenhcdgprl
+199mhhsixdplthqpthree7
+eightfourxjjgrhmdmddzclgbseven9nine
+19three
+ckqzd2twomdxz
+7jxtpmnhtwo6
+tgclgnineone4qqcjgsix4
+fourjvxcmqpvxtsevenznlgdx13twohghrxdp
+sjtp5nine4gcrdxscxxtgvscnthree7
+3two5czdn1sixbpzzsfhdhqfour
+xflzgzcm7ninepcvfpmssixtbjzb
+7zmlcpsjneight7pbtqbkgl
+sixdsvgjqfseven7czsthree
+twopgmndmtzzsmxcjptg4sqslhkseight9one
+2threexgbtcjp
+twonfknjvlks5mcpmjcqjfsnfbfivetvzprlx22
+3threefoursevenrkqfrxgx
+fiveqpstwo4rnxd75fjgpv
+82sglxctseven
+fourmxnrhzx8xkzvgtrdlzbzmlhfbf1
+1fivejqvrtl47tshfgrc3
+97twoonerntrscpb
+2ljplbrsgrjnlktngjd
+854rmtrkhjzrx2nine9ldqrqq
+onejmrcmphzksixfbbftwo7
+sevenkncjddrlsixzmb94one
+twolgqcnh6
+6oneightsr
+jjl4seven
+23eight4
+8eight277kts7
+8937
+9cbphfncslbvn23dzcpz4pqzlgfjl8
+zqkhnb7hm7grdpnq
+blczr9nineseven
+2mxzhtxbjjq56onexrssstc71
+vkvmmgreightgdbqq6six
+1six8sixsevengnqbqgxtwofivem
+741tfbvpnfour1sgone
+glvctfourgmlrqbpsevenvksevensix9
+49four
+six9five2sevenrone
+fournvrctlkztwosixsevensixvrz1one
+ffjl5gztldndtqnb5vjp
+bjckqhbnthreethreeonervtkdvxkgf43
+mhrckkcgqdms1rvrfcvpsn3trmfltvbhr4sixlpslr
+tffxs4sevenzsdxz
+onetgj2mtrdqnsixfzvcscfourn
+3jsdxk
+flhmdp6eighteightmcxcvffive
+bxbzngmpds28
+onexlqp3bhh
+jlsjbs2
+1twoonefivenvvhjf
+864two7ninejzmpzp
+eightthreeseven2nnkvlzxkvhszfpqzhl37ddqvnxg
+xkkkskcvsscmmgc2ninephntx6
+lpklkskgcsr8eightsbxcjx
+4threelfvzndfive
+nx9ninekvzzdlncblkdqbgspdfkcx
+tfn5kx6twojmzgbdznc2
+5bszzkpcdxqkvkf7tgcone2
\ No newline at end of file
diff --git a/AdventOfCode2023/Program.cs b/AdventOfCode2023/Program.cs
index df1408e..12f032f 100644
--- a/AdventOfCode2023/Program.cs
+++ b/AdventOfCode2023/Program.cs
@@ -1,10 +1,28 @@
-namespace AdventOfCode2023
+using AdventOfCode2023.Day1;
+
+namespace AdventOfCode2023
{
internal class Program
{
+ private static List days = new List() {
+ new Day1_1(),
+ new Day1_2(),
+ };
+
+ private static void ListDays()
+ {
+ Console.WriteLine("Select Day:");
+ Console.WriteLine();
+
+ int index = 0;
+ days.ForEach(item => Console.WriteLine($"{index++} - {item.GetType().Name}"));
+ }
+
static void Main(string[] args)
{
- Console.WriteLine("Hello, World!");
+ ListDays();
+ Console.WriteLine(days[int.Parse(Console.ReadLine() ?? "")].Execute());
+ Console.ReadLine();
}
}
}
\ No newline at end of file
diff --git a/AdventOfCode2023Tests/AdventOfCode2023Tests.csproj b/AdventOfCode2023Tests/AdventOfCode2023Tests.csproj
new file mode 100644
index 0000000..bc4c339
--- /dev/null
+++ b/AdventOfCode2023Tests/AdventOfCode2023Tests.csproj
@@ -0,0 +1,23 @@
+
+
+
+ net7.0
+ enable
+ enable
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AdventOfCode2023Tests/UnitTests.cs b/AdventOfCode2023Tests/UnitTests.cs
new file mode 100644
index 0000000..af6ce43
--- /dev/null
+++ b/AdventOfCode2023Tests/UnitTests.cs
@@ -0,0 +1,26 @@
+namespace AdventOfCode2023Tests
+{
+ public class Tests
+ {
+ [Test]
+ public void Day1_1Test()
+ {
+ var day1_1 = new Day1_1("1abc2\r\npqr3stu8vwx\r\na1b2c3d4e5f\r\ntreb7uchet");
+ Assert.That(day1_1.Execute(), Is.EqualTo("142"));
+ }
+
+ [Test]
+ public void Day1_2Test()
+ {
+ var day1_2 = new Day1_2("two1nine\r\neightwothree\r\nabcone2threexyz\r\nxtwone3four\r\n4nineeightseven2\r\nzoneight234\r\n7pqrstsixteen");
+ Assert.That(day1_2.Execute(), Is.EqualTo("281"));
+ }
+
+ [Test]
+ public void Day1_2CustomTest()
+ {
+ var day1_2 = new Day1_2("1oneight");
+ Assert.That(day1_2.Execute(), Is.EqualTo("18"));
+ }
+ }
+}
\ No newline at end of file
diff --git a/AdventOfCode2023Tests/Usings.cs b/AdventOfCode2023Tests/Usings.cs
new file mode 100644
index 0000000..2273eb6
--- /dev/null
+++ b/AdventOfCode2023Tests/Usings.cs
@@ -0,0 +1,3 @@
+global using NUnit.Framework;
+global using AdventOfCode2023;
+global using AdventOfCode2023.Day1;
\ No newline at end of file