bastien.monsarrat 7 лет назад
Родитель
Сommit
47e18b7d97
6 измененных файлов с 228 добавлено и 16 удалено
  1. 9 3
      Adv2018.sln
  2. 0 13
      D6.Bonus/Program.cs
  3. 9 0
      D7.1/D07.1.csproj
  4. 101 0
      D7.1/Program.cs
  5. 8 0
      D7.1/Properties/launchSettings.json
  6. 101 0
      D7.1/input.txt

+ 9 - 3
Adv2018.sln

@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28307.136
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28315.86
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D01.1", "D1.1\D01.1.csproj", "{75F7258F-26A1-40DD-BF7C-68BE0A79AD46}"
 EndProject
@@ -27,7 +27,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D06.1", "D6.1\D06.1.csproj"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D06.2", "D6.2\D06.2.csproj", "{BC77C593-1F13-42F9-BC0D-D706CB87BE1A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D06.Bonus", "D6.Bonus\D06.Bonus.csproj", "{A14766AE-E4A7-442E-809D-EE1938B3B1BF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D06.Bonus", "D6.Bonus\D06.Bonus.csproj", "{A14766AE-E4A7-442E-809D-EE1938B3B1BF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D07.1", "D7.1\D07.1.csproj", "{223AFFCA-23D6-4370-A95C-AFA55741CE63}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -87,6 +89,10 @@ Global
 		{A14766AE-E4A7-442E-809D-EE1938B3B1BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A14766AE-E4A7-442E-809D-EE1938B3B1BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A14766AE-E4A7-442E-809D-EE1938B3B1BF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{223AFFCA-23D6-4370-A95C-AFA55741CE63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{223AFFCA-23D6-4370-A95C-AFA55741CE63}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{223AFFCA-23D6-4370-A95C-AFA55741CE63}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{223AFFCA-23D6-4370-A95C-AFA55741CE63}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 0 - 13
D6.Bonus/Program.cs

@@ -93,19 +93,6 @@ namespace D6.Bonus
             bmp.Save("result.bmp");
         }
 
-        private static int FindMaxCoveredArea(List<((uint x, uint y) coord, bool isInfinite)> coordinates, int[] area)
-        {
-            int maxArea = 0;
-            for (int i = 0; i < area.Length; ++i)
-            {
-                if (coordinates.ElementAt(i).isInfinite) continue;
-
-                if (area[i] > maxArea) maxArea = area[i];
-            }
-
-            return maxArea;
-        }
-
         private static void FlagPointOnEdges(uint size, List<((uint x, uint y) coord, bool isInfinite)> coordinates)
         {
             for (uint i = 0; i < size; ++i)

+ 9 - 0
D7.1/D07.1.csproj

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

+ 101 - 0
D7.1/Program.cs

@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace D7._1
+{
+    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 builder = new Dictionary<char, Node>();
+
+            do
+            {
+                var line = file.ReadLine();
+                if (line == null) break;
+
+                AddDependency(builder, line);
+
+            } while (true);
+
+            string path = GetPath(builder);
+
+            Console.WriteLine(path);
+        }
+
+        private static string GetPath(Dictionary<char, Node> builder)
+        {
+            List<Node> possibleValues = builder.Select(s => s.Value).ToList();
+
+            string path = "";
+            while (possibleValues.Count() > 0)
+            {
+                var first = possibleValues
+                    .OrderBy(c => c.Name)
+                    .FirstOrDefault(c => c.Dependences.Count == 0);
+
+                path += first.Name;
+
+                RemoveDependency(possibleValues, first);
+            }
+
+            return path;
+        }
+
+        private static void RemoveDependency(List<Node> possibleValues, Node first)
+        {
+            possibleValues.Remove(first);
+            foreach (var next in possibleValues)
+                next.Dependences.Remove(first);
+        }
+
+        private static void AddDependency(Dictionary<char, Node> builder, string line)
+        {
+            var left = line.Substring(5, 1)[0];
+            var right = line.Substring(36, 1)[0];
+
+            if (builder.ContainsKey(left) == false)
+                builder.Add(left, new Node
+                {
+                    Name = left,
+                    Dependences = new List<Node>()
+                });
+
+            if (builder.ContainsKey(right) == false)
+                builder.Add(right, new Node
+                {
+                    Name = right,
+                    Dependences = new List<Node>()
+                });
+
+            var nleft = builder[left];
+            var nright = builder[right];
+
+            nright.Dependences.Add(nleft);
+        }
+
+        public class Node
+        {
+            public char Name { get; set; }
+
+            public List<Node> Dependences { get; set; }
+
+            public override int GetHashCode()
+            {
+                return Name.GetHashCode();
+            }
+
+            public override bool Equals(object obj)
+            {
+                var o = obj as Node;
+                return Name.Equals(o.Name);
+            }
+        }
+    }
+}

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

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

+ 101 - 0
D7.1/input.txt

@@ -0,0 +1,101 @@
+Step I must be finished before step Q can begin.
+Step B must be finished before step O can begin.
+Step J must be finished before step M can begin.
+Step W must be finished before step Y can begin.
+Step U must be finished before step X can begin.
+Step T must be finished before step Q can begin.
+Step G must be finished before step M can begin.
+Step K must be finished before step C can begin.
+Step F must be finished before step Z can begin.
+Step D must be finished before step A can begin.
+Step N must be finished before step Y can begin.
+Step Y must be finished before step Q can begin.
+Step Q must be finished before step Z can begin.
+Step V must be finished before step E can begin.
+Step A must be finished before step X can begin.
+Step E must be finished before step C can begin.
+Step O must be finished before step R can begin.
+Step P must be finished before step L can begin.
+Step H must be finished before step R can begin.
+Step M must be finished before step R can begin.
+Step C must be finished before step Z can begin.
+Step R must be finished before step L can begin.
+Step L must be finished before step S can begin.
+Step S must be finished before step X can begin.
+Step Z must be finished before step X can begin.
+Step T must be finished before step O can begin.
+Step D must be finished before step Z can begin.
+Step P must be finished before step R can begin.
+Step M must be finished before step Z can begin.
+Step L must be finished before step Z can begin.
+Step W must be finished before step N can begin.
+Step Q must be finished before step R can begin.
+Step P must be finished before step C can begin.
+Step U must be finished before step O can begin.
+Step F must be finished before step O can begin.
+Step K must be finished before step X can begin.
+Step G must be finished before step K can begin.
+Step M must be finished before step C can begin.
+Step Y must be finished before step Z can begin.
+Step A must be finished before step O can begin.
+Step D must be finished before step P can begin.
+Step K must be finished before step S can begin.
+Step I must be finished before step E can begin.
+Step G must be finished before step F can begin.
+Step S must be finished before step Z can begin.
+Step N must be finished before step V can begin.
+Step F must be finished before step D can begin.
+Step A must be finished before step Z can begin.
+Step F must be finished before step X can begin.
+Step T must be finished before step Y can begin.
+Step W must be finished before step H can begin.
+Step D must be finished before step H can begin.
+Step W must be finished before step G can begin.
+Step J must be finished before step X can begin.
+Step T must be finished before step X can begin.
+Step U must be finished before step R can begin.
+Step O must be finished before step P can begin.
+Step L must be finished before step X can begin.
+Step I must be finished before step B can begin.
+Step M must be finished before step L can begin.
+Step C must be finished before step R can begin.
+Step R must be finished before step X can begin.
+Step F must be finished before step N can begin.
+Step V must be finished before step H can begin.
+Step K must be finished before step A can begin.
+Step W must be finished before step O can begin.
+Step U must be finished before step Q can begin.
+Step O must be finished before step C can begin.
+Step K must be finished before step V can begin.
+Step R must be finished before step S can begin.
+Step E must be finished before step S can begin.
+Step J must be finished before step A can begin.
+Step E must be finished before step X can begin.
+Step K must be finished before step Y can begin.
+Step Y must be finished before step X can begin.
+Step P must be finished before step Z can begin.
+Step W must be finished before step X can begin.
+Step Y must be finished before step A can begin.
+Step V must be finished before step X can begin.
+Step O must be finished before step M can begin.
+Step I must be finished before step J can begin.
+Step W must be finished before step L can begin.
+Step I must be finished before step G can begin.
+Step D must be finished before step O can begin.
+Step D must be finished before step N can begin.
+Step M must be finished before step X can begin.
+Step I must be finished before step R can begin.
+Step Y must be finished before step M can begin.
+Step F must be finished before step M can begin.
+Step U must be finished before step M can begin.
+Step Y must be finished before step H can begin.
+Step K must be finished before step D can begin.
+Step N must be finished before step O can begin.
+Step H must be finished before step S can begin.
+Step G must be finished before step L can begin.
+Step T must be finished before step D can begin.
+Step J must be finished before step N can begin.
+Step K must be finished before step M can begin.
+Step K must be finished before step P can begin.
+Step E must be finished before step R can begin.
+Step N must be finished before step H can begin.