From dcf5cc7650f43740add6da0a868ebba5bbce676b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gr=C3=A9gory=20Burri?= Date: Fri, 1 Dec 2017 11:34:55 +0100 Subject: [PATCH] Day 1. --- .gitignore | 6 ++ AdventOfCode2017.sln | 25 +++++++ AdventOfCode2017/AdventOfCode2017.fsproj | 84 ++++++++++++++++++++++++ AdventOfCode2017/App.config | 6 ++ AdventOfCode2017/AssemblyInfo.fs | 41 ++++++++++++ AdventOfCode2017/Day1.fs | 8 +++ AdventOfCode2017/Program.fs | 16 +++++ AdventOfCode2017/packages.config | 4 ++ 8 files changed, 190 insertions(+) create mode 100644 .gitignore create mode 100644 AdventOfCode2017.sln create mode 100644 AdventOfCode2017/AdventOfCode2017.fsproj create mode 100644 AdventOfCode2017/App.config create mode 100644 AdventOfCode2017/AssemblyInfo.fs create mode 100644 AdventOfCode2017/Day1.fs create mode 100644 AdventOfCode2017/Program.fs create mode 100644 AdventOfCode2017/packages.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a6c7e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +bin/ +obj/ +packages/ +.vs +*.exe +*.suo \ No newline at end of file diff --git a/AdventOfCode2017.sln b/AdventOfCode2017.sln new file mode 100644 index 0000000..956f4d7 --- /dev/null +++ b/AdventOfCode2017.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2010 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "AdventOfCode2017", "AdventOfCode2017\AdventOfCode2017.fsproj", "{D3555943-8102-43D1-B3CB-570A4E4EC513}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3555943-8102-43D1-B3CB-570A4E4EC513}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3555943-8102-43D1-B3CB-570A4E4EC513}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3555943-8102-43D1-B3CB-570A4E4EC513}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3555943-8102-43D1-B3CB-570A4E4EC513}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1DAC18E9-E52B-45B9-AB96-686277B1EB81} + EndGlobalSection +EndGlobal diff --git a/AdventOfCode2017/AdventOfCode2017.fsproj b/AdventOfCode2017/AdventOfCode2017.fsproj new file mode 100644 index 0000000..6b02c2a --- /dev/null +++ b/AdventOfCode2017/AdventOfCode2017.fsproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + 2.0 + d3555943-8102-43d1-b3cb-570a4e4ec513 + Exe + AdventOfCode2017 + AdventOfCode2017 + v4.6.2 + true + 4.4.1.0 + AdventOfCode2017 + + + true + full + false + false + bin\$(Configuration)\ + DEBUG;TRACE + 3 + AnyCPU + bin\$(Configuration)\$(AssemblyName).XML + true + + + pdbonly + true + true + bin\$(Configuration)\ + TRACE + 3 + AnyCPU + bin\$(Configuration)\$(AssemblyName).XML + true + + + 11 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + + + + + + + + + + FSharp.Core + FSharp.Core.dll + $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\$(TargetFSharpCoreVersion)\FSharp.Core.dll + + + + + + ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll + + + + \ No newline at end of file diff --git a/AdventOfCode2017/App.config b/AdventOfCode2017/App.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/AdventOfCode2017/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AdventOfCode2017/AssemblyInfo.fs b/AdventOfCode2017/AssemblyInfo.fs new file mode 100644 index 0000000..3e9afcd --- /dev/null +++ b/AdventOfCode2017/AssemblyInfo.fs @@ -0,0 +1,41 @@ +namespace AdventOfCode2017.AssemblyInfo + +open System.Reflection +open System.Runtime.CompilerServices +open System.Runtime.InteropServices + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[] +[] +[] +[] +[] +[] +[] +[] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [] +[] +[] + +do + () \ No newline at end of file diff --git a/AdventOfCode2017/Day1.fs b/AdventOfCode2017/Day1.fs new file mode 100644 index 0000000..5cd821d --- /dev/null +++ b/AdventOfCode2017/Day1.fs @@ -0,0 +1,8 @@ +module AdventOfCode2017.Day1 + +let readDigit d = int d - 48 + +let solveCaptcha (captcha : string) = + let numbers = captcha.ToCharArray () |> List.ofArray |> List.map readDigit + (List.last numbers :: numbers) |> List.pairwise |> List.map (fun (a, b) -> if a = b then a else 0) |> List.sum + diff --git a/AdventOfCode2017/Program.fs b/AdventOfCode2017/Program.fs new file mode 100644 index 0000000..12bcc70 --- /dev/null +++ b/AdventOfCode2017/Program.fs @@ -0,0 +1,16 @@ +module AdventOfCode2017.Main + +let day1 () = + let captcha = "9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349" + Day1.solveCaptcha captcha |> string + +let printDay (n : int) (f : unit -> string) = + printfn "Result of day %i: %s" n (f ()) + +[] +let main _argv = + printfn "https://adventofcode.com/2017" + + printDay 1 day1 + + 0 diff --git a/AdventOfCode2017/packages.config b/AdventOfCode2017/packages.config new file mode 100644 index 0000000..222429d --- /dev/null +++ b/AdventOfCode2017/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file -- 2.45.2