bastien.monsarrat 6 years ago
parent
commit
1b9c651152
3 changed files with 143 additions and 0 deletions
  1. 6 0
      Adv2018.sln
  2. 9 0
      D19.2/D19.2.csproj
  3. 128 0
      D19.2/Program.cs

+ 6 - 0
Adv2018.sln

@@ -81,6 +81,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D19.1", "D19.1\D19.1.csproj
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D17.Bonus", "D17.Bonus\D17.Bonus.csproj", "{B2F8CC8B-1A12-4778-BE51-14B32EBB2B89}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D19.2", "D19.2\D19.2.csproj", "{F1899F43-F7D2-493D-B23A-D07AFEC93495}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -243,6 +245,10 @@ Global
 		{B2F8CC8B-1A12-4778-BE51-14B32EBB2B89}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B2F8CC8B-1A12-4778-BE51-14B32EBB2B89}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B2F8CC8B-1A12-4778-BE51-14B32EBB2B89}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F1899F43-F7D2-493D-B23A-D07AFEC93495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F1899F43-F7D2-493D-B23A-D07AFEC93495}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F1899F43-F7D2-493D-B23A-D07AFEC93495}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F1899F43-F7D2-493D-B23A-D07AFEC93495}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 9 - 0
D19.2/D19.2.csproj

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

+ 128 - 0
D19.2/Program.cs

@@ -0,0 +1,128 @@
+// Traduction des OpCodes en version lisible
+/////////////////////////////////////////////////////////////////////////
+
+// #ip 3             | IP is reg 3
+
+// #0  addi 3 16 3   | IP + 16
+// #1  seti 1 0 4    | r4 = 1
+// #2  seti 1 7 2    | r2 = 1
+// #3  mulr 4 2 1    | r1 = r2 * r4
+// #4  eqrr 1 5 1    | r1 = r1 == r5
+// #5  addr 1 3 3    | IP + r1
+// #6  addi 3 1 3    | IP + 1
+// #7  addr 4 0 0    | r0 = r4 + r0
+// #8  addi 2 1 2    | r2 = r2 + 1
+// #9  gtrr 2 5 1    | r1 = r2 > r5
+// #10 addr 3 1 3    | IP + r1
+// #11 seti 2 6 3    | IP = 2
+// #12 addi 4 1 4    | r4 = r4 + 1
+
+// #13 gtrr 4 5 1    | r1 = r4 > r5
+// #14 addr 1 3 3    | IP + r1
+// #15 seti 1 3 3    | IP = 1
+// #16 mulr 3 3 3    | IP * IP -> 16 * 16 = 256 == OUT OF BOUNDS !
+
+// #17 addi 5 2 5    | r5 = r5 + 2
+// #18 mulr 5 5 5    | r5 = r5 * r5
+// #19 mulr 3 5 5    | r5 = IP * r5
+// #20 muli 5 11 5   | r5 = r5 * 11
+// #21 addi 1 6 1    | r1 = r1 + 6
+// #22 mulr 1 3 1    | r1 = r1 * IP
+// #23 addi 1 13 1   | r1 = r1 + 13 -> 145
+// #24 addr 5 1 5    | r5 = r5 + r1 -> 981
+
+// #25 addr 3 0 3    | IP + r0 -> r0 est 1 au 1er passage, 0 ensuite
+// #26 seti 0 6 3    | IP = 0
+
+// #27 setr 3 1 1    | r1 = 27
+// #28 mulr 1 3 1    | r1 = r1 * 28
+// #29 addr 3 1 1    | r1 = 29 + r1
+// #30 mulr 3 1 1    | r1 = 30 * r1
+// #31 muli 1 14 1   | r1 = r1 * 14
+// #32 mulr 1 3 1    | r1 = r1 * 32 -> 10550400
+// #33 addr 5 1 5    | r5 = r5 + r1 -> 10551381
+
+// #34 seti 0 0 0    | r0 = 0
+// #35 seti 0 3 3    | IP = 0
+
+
+// Traduction en caude haut-niveau
+/////////////////////////////////////////////////////////////////////////
+/*
+
+double r0 = 0;
+double r1 = 329700;
+double r2 = 0;
+//double r3 = IP;
+double r4 = 0;
+double r5 = 330681;
+
+r4 = 1;
+
+do
+{
+	
+r2 = 1;
+
+	do
+	{
+
+		if (r2 * r4 == r5)
+		{
+			r0 += r4;
+		}
+
+		r2++;
+
+	} while (r2 <= r5);
+
+	r4++;
+
+} while (r4 <= r5);
+
+return r0;
+
+*/
+
+// Transformation du code pour la compréhension
+/////////////////////////////////////////////////////////////////////////
+/*
+
+double r0 = 0;
+double r5 = 10551381;
+
+for (var r4 = 1; r4 <= r5 ; r4++)
+{
+	for (var r2 = 1 ; r2 <= r5 ; r2++)
+	{
+		if (r2 * r4 == r5) r0 += r4;
+	}
+}
+
+return r0;
+
+*/
+
+// CONCLUSION
+/////////////////////////////////////////////////////////////////////////
+// => C'est la somme de tous les facteurs de 10551381 !
+
+using System;
+
+namespace D19._2
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            double r0 = 0;
+            double r5 = 10551381;
+
+            for (int r4 = 1; r4 <= r5 / 2; r4++)
+                if (r5 % r4 == 0) r0 += r4;
+            if (r5 > 1) r0 += r5;
+
+            Console.WriteLine($"The answer is : {r0}");
+        }
+    }
+}