1
0
bastien.monsarrat 6 жил өмнө
parent
commit
dae94b85a3

+ 14 - 8
Adv2018.sln

@@ -33,21 +33,23 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D07.1", "D7.1\D07.1.csproj"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D07.2", "D7.2\D07.2.csproj", "{1FFA5ACA-AB3A-4858-A92D-D741853F7A89}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D08.1", "D8.1\D08.1.csproj", "{FF55594F-5EFF-4F7C-9882-34ED5F8E6EE0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D08.1", "D8.1\D08.1.csproj", "{FF55594F-5EFF-4F7C-9882-34ED5F8E6EE0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D08.2", "D8.2\D08.2.csproj", "{92230804-D08E-4AB9-9EA3-F3FA233854A3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D08.2", "D8.2\D08.2.csproj", "{92230804-D08E-4AB9-9EA3-F3FA233854A3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D09.1", "D9.1\D09.1.csproj", "{9101C358-8060-4626-B7AB-359A0BA3D494}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D09.1", "D9.1\D09.1.csproj", "{9101C358-8060-4626-B7AB-359A0BA3D494}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D09.2", "D9.2\D09.2.csproj", "{892458FC-C47F-4E0A-9603-4C3473321F25}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D09.2", "D9.2\D09.2.csproj", "{892458FC-C47F-4E0A-9603-4C3473321F25}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D10.1", "D10.1\D10.1.csproj", "{B50DA992-9316-4573-B0D2-5A4352EB3C4A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D10.1", "D10.1\D10.1.csproj", "{B50DA992-9316-4573-B0D2-5A4352EB3C4A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D10.2", "D10.2\D10.2.csproj", "{9A5878B7-51D8-432D-AD25-DF2DC5EEDDAF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D10.2", "D10.2\D10.2.csproj", "{9A5878B7-51D8-432D-AD25-DF2DC5EEDDAF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D11.1", "D11.1\D11.1.csproj", "{3413167A-CC8C-457E-B82E-4C5240AED0D1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D11.1", "D11.1\D11.1.csproj", "{3413167A-CC8C-457E-B82E-4C5240AED0D1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D11.2", "D11.2\D11.2.csproj", "{9CAA4935-5795-4D99-8557-53A8B1250477}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D11.2", "D11.2\D11.2.csproj", "{9CAA4935-5795-4D99-8557-53A8B1250477}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D12.1", "D12.1\D12.1.csproj", "{6DE5A0FF-CE37-4454-B6CE-7BA4CBFC4C69}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -147,6 +149,10 @@ Global
 		{9CAA4935-5795-4D99-8557-53A8B1250477}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{9CAA4935-5795-4D99-8557-53A8B1250477}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{9CAA4935-5795-4D99-8557-53A8B1250477}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6DE5A0FF-CE37-4454-B6CE-7BA4CBFC4C69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6DE5A0FF-CE37-4454-B6CE-7BA4CBFC4C69}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6DE5A0FF-CE37-4454-B6CE-7BA4CBFC4C69}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6DE5A0FF-CE37-4454-B6CE-7BA4CBFC4C69}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 9 - 0
D12.1/D12.1.csproj

@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.1</TargetFramework>
+    <RootNamespace>D12._1</RootNamespace>
+  </PropertyGroup>
+
+</Project>

+ 61 - 0
D12.1/Program.cs

@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+namespace D12._1
+{
+    class Rules : Dictionary<string, char> { }
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            if (args.Length < 1) return;
+            if (File.Exists(args[0]) == false) return;
+            var file = File.OpenText(args[0]);
+
+            var state = file.ReadLine().Substring(@"initial state: ".Length);
+            file.ReadLine();
+
+            var ruleset = new Rules();
+
+            do
+            {
+                var line = file.ReadLine();
+                if (line == null) break;
+
+                var s = line.Split(" => ");
+                ruleset.Add(s[0], s[1][0]);
+
+            } while (true);
+
+            int left = 0;
+            for (int i = 0; i < 20; ++i)
+            {
+                string nstate = "";
+
+                for (int j = -2; j < state.Length+2; ++j)
+                    nstate += getState(state, j, ruleset);
+
+                left -= 2;
+                state = nstate;
+            }
+
+            int result = 0;
+            foreach (char c in state)
+            {
+                if (c == '#') result += left;
+                left++;
+            }
+
+            Console.WriteLine(result);
+        }
+
+        static char getState(string state, int p, Rules rules)
+        {
+            var sb = "";
+            for (var i = -2; i <= 2; ++i)
+                sb += p + i < 0 || p + i >= state.Length ? '.' : state[p + i];
+            return rules[sb];
+        }
+    }
+}

+ 8 - 0
D12.1/Properties/launchSettings.json

@@ -0,0 +1,8 @@
+{
+  "profiles": {
+    "D12.1": {
+      "commandName": "Project",
+      "commandLineArgs": "\"D:\\adv\\Adv2018\\D12.1\\input.txt\" "
+    }
+  }
+}

+ 34 - 0
D12.1/input.txt

@@ -0,0 +1,34 @@
+initial state: #.####...##..#....#####.##.......##.#..###.#####.###.##.###.###.#...#...##.#.##.#...#..#.##..##.#.##
+
+.##.. => .
+..##. => #
+.#..# => #
+.#.#. => .
+..#.. => #
+###.. => #
+##..# => .
+##... => #
+#.### => #
+.##.# => #
+#.... => .
+###.# => .
+..... => .
+.#... => #
+....# => .
+#.#.. => .
+...#. => #
+#...# => .
+##.#. => .
+.#.## => #
+..#.# => #
+#.#.# => .
+.#### => .
+##### => .
+..### => .
+...## => .
+#..## => .
+#.##. => .
+#..#. => #
+.###. => #
+##.## => #
+####. => .