bastien.monsarrat 6 жил өмнө
parent
commit
6aca885c51

+ 24 - 12
Adv2015.sln

@@ -3,29 +3,33 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
 VisualStudioVersion = 15.0.28307.329
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D01.1", "D01.1\D01.1.csproj", "{4F8C0427-49D7-41ED-A7FC-490C79560CBA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D01.1", "D01.1\D01.1.csproj", "{4F8C0427-49D7-41ED-A7FC-490C79560CBA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D01.2", "D01.2\D01.2.csproj", "{60B353FD-B5F9-4DE0-8D76-5E3F8BAD463B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D01.2", "D01.2\D01.2.csproj", "{60B353FD-B5F9-4DE0-8D76-5E3F8BAD463B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D02.1", "D02.1\D02.1.csproj", "{63C94AB1-2D4C-4175-A5A8-8C198F400CD1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D02.1", "D02.1\D02.1.csproj", "{63C94AB1-2D4C-4175-A5A8-8C198F400CD1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D02.2", "D02.2\D02.2.csproj", "{4B0A16C9-9318-41A0-B1A0-793EA4933B3B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D02.2", "D02.2\D02.2.csproj", "{4B0A16C9-9318-41A0-B1A0-793EA4933B3B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D03.1", "D03.1\D03.1.csproj", "{410E977E-7901-4BBC-9C5B-1102D5681CC1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D03.1", "D03.1\D03.1.csproj", "{410E977E-7901-4BBC-9C5B-1102D5681CC1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D03.2", "D03.2\D03.2.csproj", "{FBD5B3A5-4090-46DF-A513-FF463E8AB8DC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D03.2", "D03.2\D03.2.csproj", "{FBD5B3A5-4090-46DF-A513-FF463E8AB8DC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D04.1", "D04.1\D04.1.csproj", "{D2A43230-DD77-407B-9503-05203D5CD3F6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D04.1", "D04.1\D04.1.csproj", "{D2A43230-DD77-407B-9503-05203D5CD3F6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D04.2", "D04.2\D04.2.csproj", "{3CD7AE1C-5114-4D29-AF54-1449110CB481}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D04.2", "D04.2\D04.2.csproj", "{3CD7AE1C-5114-4D29-AF54-1449110CB481}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D05.1", "D05.1\D05.1.csproj", "{F3959229-49BD-46AB-B2AE-78ED593521C7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D05.1", "D05.1\D05.1.csproj", "{F3959229-49BD-46AB-B2AE-78ED593521C7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D05.2", "D05.2\D05.2.csproj", "{BBE378B5-9E10-456A-A02B-2C17CB9F2898}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D05.2", "D05.2\D05.2.csproj", "{BBE378B5-9E10-456A-A02B-2C17CB9F2898}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D06.1", "D06.1\D06.1.csproj", "{E2801AEA-7720-48FA-B57A-55E7CEF5A0E7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D06.1", "D06.1\D06.1.csproj", "{E2801AEA-7720-48FA-B57A-55E7CEF5A0E7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D06.2", "D06.2\D06.2.csproj", "{66DBE805-EA51-414B-9847-EB0C96570457}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D06.2", "D06.2\D06.2.csproj", "{66DBE805-EA51-414B-9847-EB0C96570457}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D07.1", "D07.1\D07.1.csproj", "{F5F1A7EC-E3F0-44A0-B278-8E431C1618B0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D07.2", "D07.2\D07.2.csproj", "{ACA9F286-1BB5-4E05-92BB-7C3E5CE8DC15}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -81,6 +85,14 @@ Global
 		{66DBE805-EA51-414B-9847-EB0C96570457}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{66DBE805-EA51-414B-9847-EB0C96570457}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{66DBE805-EA51-414B-9847-EB0C96570457}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F5F1A7EC-E3F0-44A0-B278-8E431C1618B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F5F1A7EC-E3F0-44A0-B278-8E431C1618B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F5F1A7EC-E3F0-44A0-B278-8E431C1618B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F5F1A7EC-E3F0-44A0-B278-8E431C1618B0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{ACA9F286-1BB5-4E05-92BB-7C3E5CE8DC15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{ACA9F286-1BB5-4E05-92BB-7C3E5CE8DC15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{ACA9F286-1BB5-4E05-92BB-7C3E5CE8DC15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{ACA9F286-1BB5-4E05-92BB-7C3E5CE8DC15}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

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

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

+ 170 - 0
D07.1/Program.cs

@@ -0,0 +1,170 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace D07._1
+{
+    public class Program
+    {
+        public interface In { }
+
+        public class Wire : In
+        {
+            public string Name;
+        }
+
+        public class Signal : In
+        {
+            public ushort Value;
+        }
+
+        public class Gate
+        {
+            public In L1;
+            public In L2;
+            public Wire R;
+
+            public string Op;
+        }
+
+        public static Signal TestCircuit(List<Gate> gates, Gate gate)
+        {
+            if (gate.Op is null && gate.L1 is Signal s)
+                return s;
+
+            if (gate.L1 is Wire w1)
+            {
+                var l1g = gates.Where(g => g.R.Name == w1.Name).First();
+                gate.L1 = TestCircuit(gates, l1g);
+            }
+
+            if (gate.L2 is Wire w2)
+            {
+                var l2g = gates.Where(g => g.R.Name == w2.Name).First();
+                gate.L2 = TestCircuit(gates, l2g);
+            }
+
+            if (gate.R.Name == "a") return gate.L1 as Signal;
+            if (gate.R.Name == "b") return new Signal() { Value = 956 };
+
+            var result = operators[gate.Op]((gate.L1 as Signal)?.Value, (gate.L2 as Signal).Value);
+            return new Signal() { Value = result };
+        }
+
+        static Dictionary<string, Func<ushort?, ushort, ushort>> operators = new Dictionary<string, Func<ushort?, ushort, ushort>>
+            {
+                { "AND", (a, b) => (ushort)(a & b) },
+                { "OR", (a, b) => (ushort)(a | b) },
+                { "NOT", (a, b) => (ushort)(~ b) },
+                { "LSHIFT", (a, b) => (ushort)(a << b) },
+                { "RSHIFT", (a, b) => (ushort)(a >> b) }
+            };
+
+        static void Main(string[] args)
+        {
+            if (args.Length < 1) throw new ArgumentException();
+            if (File.Exists(args[0]) == false) throw new FileNotFoundException();
+
+            Signal answer = TestSignalP1(args[0]);
+
+            Console.WriteLine($"The answer is : {answer.Value}");
+        }
+
+        public static Signal TestSignalP1(string file)
+        {
+            List<Gate> gates = new List<Gate>();
+
+            ParseFile(file, gates);
+
+            var last = gates.Where(g => g.R.Name == "a").First();
+
+            var answer = TestCircuit(gates, last);
+            return answer;
+        }
+
+        public static void ParseFile(string f, List<Gate> gates)
+        {
+            using (var file = File.OpenText(f))
+            {
+                while (true)
+                {
+                    var line = file.ReadLine();
+                    if (line == null) break;
+
+                    ParseLine(gates, line);
+                }
+            }
+        }
+
+        private static void ParseLine(List<Gate> gates, string line)
+        {
+            var sp = line.Split(" -> ");
+            string lpart = sp[0], rpart = sp[1];
+
+            bool hasOp = false;
+
+            In L1 = null, L2 = null;
+            var gate = new Gate();
+
+            SearchOperator(operators, line, lpart, ref hasOp, ref L1, ref L2, gate);
+
+            if (hasOp == false)
+            {
+                if (ushort.TryParse(lpart, out ushort lv))
+                {
+                    L1 = new Signal() { Value = lv };
+                }
+                else
+                {
+                    L1 = new Wire() { Name = lpart };
+                }
+                gate.L1 = L1;
+            }
+
+            var R = new Wire() { Name = rpart };
+
+            gate.R = R;
+
+            gates.Add(gate);
+        }
+
+        private static void SearchOperator(Dictionary<string, Func<ushort?, ushort, ushort>> operators, string line, string lpart, ref bool hasOp, ref In L1, ref In L2, Gate gate)
+        {
+            foreach (var op in operators)
+            {
+                if (line.Contains(op.Key) == false) continue;
+
+                hasOp = true;
+
+                var lop = lpart.Split(op.Key);
+                var a = lop[0].Trim(' ');
+                var b = lop[1].Trim(' ');
+
+                if (ushort.TryParse(a, out ushort aa))
+                {
+                    L1 = new Signal() { Value = aa };
+                }
+                else if (a != string.Empty)
+                {
+                    L1 = new Wire() { Name = a };
+                }
+
+                if (ushort.TryParse(b, out ushort bb))
+                {
+                    L2 = new Signal() { Value = bb };
+                }
+                else
+                {
+                    L2 = new Wire() { Name = b };
+                }
+
+                gate.L1 = L1;
+                gate.L2 = L2;
+                gate.Op = op.Key;
+
+                break;
+            }
+        }
+    }
+}

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

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

+ 339 - 0
D07.1/input.txt

@@ -0,0 +1,339 @@
+af AND ah -> ai
+NOT lk -> ll
+hz RSHIFT 1 -> is
+NOT go -> gp
+du OR dt -> dv
+x RSHIFT 5 -> aa
+at OR az -> ba
+eo LSHIFT 15 -> es
+ci OR ct -> cu
+b RSHIFT 5 -> f
+fm OR fn -> fo
+NOT ag -> ah
+v OR w -> x
+g AND i -> j
+an LSHIFT 15 -> ar
+1 AND cx -> cy
+jq AND jw -> jy
+iu RSHIFT 5 -> ix
+gl AND gm -> go
+NOT bw -> bx
+jp RSHIFT 3 -> jr
+hg AND hh -> hj
+bv AND bx -> by
+er OR es -> et
+kl OR kr -> ks
+et RSHIFT 1 -> fm
+e AND f -> h
+u LSHIFT 1 -> ao
+he RSHIFT 1 -> hx
+eg AND ei -> ej
+bo AND bu -> bw
+dz OR ef -> eg
+dy RSHIFT 3 -> ea
+gl OR gm -> gn
+da LSHIFT 1 -> du
+au OR av -> aw
+gj OR gu -> gv
+eu OR fa -> fb
+lg OR lm -> ln
+e OR f -> g
+NOT dm -> dn
+NOT l -> m
+aq OR ar -> as
+gj RSHIFT 5 -> gm
+hm AND ho -> hp
+ge LSHIFT 15 -> gi
+jp RSHIFT 1 -> ki
+hg OR hh -> hi
+lc LSHIFT 1 -> lw
+km OR kn -> ko
+eq LSHIFT 1 -> fk
+1 AND am -> an
+gj RSHIFT 1 -> hc
+aj AND al -> am
+gj AND gu -> gw
+ko AND kq -> kr
+ha OR gz -> hb
+bn OR by -> bz
+iv OR jb -> jc
+NOT ac -> ad
+bo OR bu -> bv
+d AND j -> l
+bk LSHIFT 1 -> ce
+de OR dk -> dl
+dd RSHIFT 1 -> dw
+hz AND ik -> im
+NOT jd -> je
+fo RSHIFT 2 -> fp
+hb LSHIFT 1 -> hv
+lf RSHIFT 2 -> lg
+gj RSHIFT 3 -> gl
+ki OR kj -> kk
+NOT ak -> al
+ld OR le -> lf
+ci RSHIFT 3 -> ck
+1 AND cc -> cd
+NOT kx -> ky
+fp OR fv -> fw
+ev AND ew -> ey
+dt LSHIFT 15 -> dx
+NOT ax -> ay
+bp AND bq -> bs
+NOT ii -> ij
+ci AND ct -> cv
+iq OR ip -> ir
+x RSHIFT 2 -> y
+fq OR fr -> fs
+bn RSHIFT 5 -> bq
+0 -> c
+14146 -> b
+d OR j -> k
+z OR aa -> ab
+gf OR ge -> gg
+df OR dg -> dh
+NOT hj -> hk
+NOT di -> dj
+fj LSHIFT 15 -> fn
+lf RSHIFT 1 -> ly
+b AND n -> p
+jq OR jw -> jx
+gn AND gp -> gq
+x RSHIFT 1 -> aq
+ex AND ez -> fa
+NOT fc -> fd
+bj OR bi -> bk
+as RSHIFT 5 -> av
+hu LSHIFT 15 -> hy
+NOT gs -> gt
+fs AND fu -> fv
+dh AND dj -> dk
+bz AND cb -> cc
+dy RSHIFT 1 -> er
+hc OR hd -> he
+fo OR fz -> ga
+t OR s -> u
+b RSHIFT 2 -> d
+NOT jy -> jz
+hz RSHIFT 2 -> ia
+kk AND kv -> kx
+ga AND gc -> gd
+fl LSHIFT 1 -> gf
+bn AND by -> ca
+NOT hr -> hs
+NOT bs -> bt
+lf RSHIFT 3 -> lh
+au AND av -> ax
+1 AND gd -> ge
+jr OR js -> jt
+fw AND fy -> fz
+NOT iz -> ja
+c LSHIFT 1 -> t
+dy RSHIFT 5 -> eb
+bp OR bq -> br
+NOT h -> i
+1 AND ds -> dt
+ab AND ad -> ae
+ap LSHIFT 1 -> bj
+br AND bt -> bu
+NOT ca -> cb
+NOT el -> em
+s LSHIFT 15 -> w
+gk OR gq -> gr
+ff AND fh -> fi
+kf LSHIFT 15 -> kj
+fp AND fv -> fx
+lh OR li -> lj
+bn RSHIFT 3 -> bp
+jp OR ka -> kb
+lw OR lv -> lx
+iy AND ja -> jb
+dy OR ej -> ek
+1 AND bh -> bi
+NOT kt -> ku
+ao OR an -> ap
+ia AND ig -> ii
+NOT ey -> ez
+bn RSHIFT 1 -> cg
+fk OR fj -> fl
+ce OR cd -> cf
+eu AND fa -> fc
+kg OR kf -> kh
+jr AND js -> ju
+iu RSHIFT 3 -> iw
+df AND dg -> di
+dl AND dn -> do
+la LSHIFT 15 -> le
+fo RSHIFT 1 -> gh
+NOT gw -> gx
+NOT gb -> gc
+ir LSHIFT 1 -> jl
+x AND ai -> ak
+he RSHIFT 5 -> hh
+1 AND lu -> lv
+NOT ft -> fu
+gh OR gi -> gj
+lf RSHIFT 5 -> li
+x RSHIFT 3 -> z
+b RSHIFT 3 -> e
+he RSHIFT 2 -> hf
+NOT fx -> fy
+jt AND jv -> jw
+hx OR hy -> hz
+jp AND ka -> kc
+fb AND fd -> fe
+hz OR ik -> il
+ci RSHIFT 1 -> db
+fo AND fz -> gb
+fq AND fr -> ft
+gj RSHIFT 2 -> gk
+cg OR ch -> ci
+cd LSHIFT 15 -> ch
+jm LSHIFT 1 -> kg
+ih AND ij -> ik
+fo RSHIFT 3 -> fq
+fo RSHIFT 5 -> fr
+1 AND fi -> fj
+1 AND kz -> la
+iu AND jf -> jh
+cq AND cs -> ct
+dv LSHIFT 1 -> ep
+hf OR hl -> hm
+km AND kn -> kp
+de AND dk -> dm
+dd RSHIFT 5 -> dg
+NOT lo -> lp
+NOT ju -> jv
+NOT fg -> fh
+cm AND co -> cp
+ea AND eb -> ed
+dd RSHIFT 3 -> df
+gr AND gt -> gu
+ep OR eo -> eq
+cj AND cp -> cr
+lf OR lq -> lr
+gg LSHIFT 1 -> ha
+et RSHIFT 2 -> eu
+NOT jh -> ji
+ek AND em -> en
+jk LSHIFT 15 -> jo
+ia OR ig -> ih
+gv AND gx -> gy
+et AND fe -> fg
+lh AND li -> lk
+1 AND io -> ip
+kb AND kd -> ke
+kk RSHIFT 5 -> kn
+id AND if -> ig
+NOT ls -> lt
+dw OR dx -> dy
+dd AND do -> dq
+lf AND lq -> ls
+NOT kc -> kd
+dy AND ej -> el
+1 AND ke -> kf
+et OR fe -> ff
+hz RSHIFT 5 -> ic
+dd OR do -> dp
+cj OR cp -> cq
+NOT dq -> dr
+kk RSHIFT 1 -> ld
+jg AND ji -> jj
+he OR hp -> hq
+hi AND hk -> hl
+dp AND dr -> ds
+dz AND ef -> eh
+hz RSHIFT 3 -> ib
+db OR dc -> dd
+hw LSHIFT 1 -> iq
+he AND hp -> hr
+NOT cr -> cs
+lg AND lm -> lo
+hv OR hu -> hw
+il AND in -> io
+NOT eh -> ei
+gz LSHIFT 15 -> hd
+gk AND gq -> gs
+1 AND en -> eo
+NOT kp -> kq
+et RSHIFT 5 -> ew
+lj AND ll -> lm
+he RSHIFT 3 -> hg
+et RSHIFT 3 -> ev
+as AND bd -> bf
+cu AND cw -> cx
+jx AND jz -> ka
+b OR n -> o
+be AND bg -> bh
+1 AND ht -> hu
+1 AND gy -> gz
+NOT hn -> ho
+ck OR cl -> cm
+ec AND ee -> ef
+lv LSHIFT 15 -> lz
+ks AND ku -> kv
+NOT ie -> if
+hf AND hl -> hn
+1 AND r -> s
+ib AND ic -> ie
+hq AND hs -> ht
+y AND ae -> ag
+NOT ed -> ee
+bi LSHIFT 15 -> bm
+dy RSHIFT 2 -> dz
+ci RSHIFT 2 -> cj
+NOT bf -> bg
+NOT im -> in
+ev OR ew -> ex
+ib OR ic -> id
+bn RSHIFT 2 -> bo
+dd RSHIFT 2 -> de
+bl OR bm -> bn
+as RSHIFT 1 -> bl
+ea OR eb -> ec
+ln AND lp -> lq
+kk RSHIFT 3 -> km
+is OR it -> iu
+iu RSHIFT 2 -> iv
+as OR bd -> be
+ip LSHIFT 15 -> it
+iw OR ix -> iy
+kk RSHIFT 2 -> kl
+NOT bb -> bc
+ci RSHIFT 5 -> cl
+ly OR lz -> ma
+z AND aa -> ac
+iu RSHIFT 1 -> jn
+cy LSHIFT 15 -> dc
+cf LSHIFT 1 -> cz
+as RSHIFT 3 -> au
+cz OR cy -> da
+kw AND ky -> kz
+lx -> a
+iw AND ix -> iz
+lr AND lt -> lu
+jp RSHIFT 5 -> js
+aw AND ay -> az
+jc AND je -> jf
+lb OR la -> lc
+NOT cn -> co
+kh LSHIFT 1 -> lb
+1 AND jj -> jk
+y OR ae -> af
+ck AND cl -> cn
+kk OR kv -> kw
+NOT cv -> cw
+kl AND kr -> kt
+iu OR jf -> jg
+at AND az -> bb
+jp RSHIFT 2 -> jq
+iv AND jb -> jd
+jn OR jo -> jp
+x OR ai -> aj
+ba AND bc -> bd
+jl OR jk -> jm
+b RSHIFT 1 -> v
+o AND q -> r
+NOT p -> q
+k AND m -> n
+as RSHIFT 2 -> at

+ 13 - 0
D07.2/D07.2.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.1</TargetFramework>
+    <RootNamespace>D07._2</RootNamespace>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\D07.1\D07.1.csproj" />
+  </ItemGroup>
+
+</Project>

+ 37 - 0
D07.2/Program.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using static D07._1.Program;
+
+namespace D07._2
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            if (args.Length < 1) throw new ArgumentException();
+            if (File.Exists(args[0]) == false) throw new FileNotFoundException();
+
+            Signal answerP1 = TestSignalP1(args[0]);
+            Signal answer = TestSignalP2(args[0], answerP1);
+
+            Console.WriteLine($"The answer is : {answer.Value}");
+        }
+
+        static Signal TestSignalP2(string file, Signal answerP1)
+        {
+            List<Gate> gates = new List<Gate>();
+
+            ParseFile(file, gates);
+
+            var ga = gates.Where(g => g.R.Name == "a").First();
+
+            var gb = gates.Where(g => g.R.Name == "b").First();
+            gb.L1 = answerP1;
+
+            var answer = TestCircuit(gates, ga);
+            return answer;
+        }
+    }
+}

+ 8 - 0
D07.2/Properties/launchSettings.json

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