summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2021-04-18 23:54:35 +0000
committerToby Vincent <tobyv13@gmail.com>2021-04-18 23:54:35 +0000
commitcf192cef8e969c00b6d243f76e5a20b326ec59e1 (patch)
treef8930b980dd9a9e151249bc991f5cd708febdbe3
parent57492674a247337ced3db690fdcdb965a205ed34 (diff)
build scafolding and inital logic
-rw-r--r--.vscode/launch.json19
-rw-r--r--.vscode/settings.json9
-rw-r--r--.vscode/tasks.json42
-rw-r--r--CS340-P6.sln99
m---------src/CS340.Extensions0
-rw-r--r--src/CS340.TSP/CS340.TSP.csproj20
-rw-r--r--src/CS340.TSP/Program.cs35
-rw-r--r--src/CS340.TSP/graphs/graph1.txt13
8 files changed, 237 insertions, 0 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..87630ac
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,19 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": ".NET Core Launch (console)",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ "program": "${workspaceFolder}/src/CS340.TSP/bin/Debug/net5.0/CS340.TSP.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/src/CS340.TSP",
+ "console": "internalConsole",
+ "stopAtEntry": false
+ }
+ ]
+} \ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..5ef1024
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,9 @@
+{
+ "files.exclude": {
+ "**/.gitattributes": true,
+ "**/.gitignore": true,
+ "**/*.csproj": true,
+ "**/bin": true,
+ "**/obj": true
+ }
+} \ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..0cf25e7
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,42 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "build",
+ "${workspaceFolder}/src/CS340.TSP/CS340.TSP.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "publish",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "publish",
+ "${workspaceFolder}/src/CS340.TSP/CS340.TSP.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "watch",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "watch",
+ "run",
+ "${workspaceFolder}/src/CS340.TSP/CS340.TSP.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+} \ No newline at end of file
diff --git a/CS340-P6.sln b/CS340-P6.sln
new file mode 100644
index 0000000..b330857
--- /dev/null
+++ b/CS340-P6.sln
@@ -0,0 +1,99 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.6.30114.105
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS340.Graph", "src\CS340.Graph\CS340.Graph.csproj", "{D2383783-7EAB-4E7F-B9A6-33702BA8E919}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS340.TSP", "src\CS340.TSP\CS340.TSP.csproj", "{1ED43E67-3A64-47DF-9730-A9203443F3AB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS340.Interfaces", "src\CS340.Interfaces\CS340.Interfaces.csproj", "{2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS340.Extensions", "src\CS340.Extensions\CS340.Extensions.csproj", "{D94E98AE-9D02-4532-AD8E-DFD118039775}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS340.PriorityQueue", "src\CS340.PriorityQueue\CS340.PriorityQueue.csproj", "{A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|x64.Build.0 = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Debug|x86.Build.0 = Debug|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|x64.ActiveCfg = Release|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|x64.Build.0 = Release|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|x86.ActiveCfg = Release|Any CPU
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919}.Release|x86.Build.0 = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|x64.Build.0 = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Debug|x86.Build.0 = Debug|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|x64.ActiveCfg = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|x64.Build.0 = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|x86.ActiveCfg = Release|Any CPU
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB}.Release|x86.Build.0 = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|x64.Build.0 = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Debug|x86.Build.0 = Debug|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|x64.ActiveCfg = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|x64.Build.0 = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|x86.ActiveCfg = Release|Any CPU
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB}.Release|x86.Build.0 = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|x64.Build.0 = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Debug|x86.Build.0 = Debug|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|x64.ActiveCfg = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|x64.Build.0 = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|x86.ActiveCfg = Release|Any CPU
+ {D94E98AE-9D02-4532-AD8E-DFD118039775}.Release|x86.Build.0 = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|x64.Build.0 = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Debug|x86.Build.0 = Debug|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|x64.ActiveCfg = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|x64.Build.0 = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|x86.ActiveCfg = Release|Any CPU
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D2383783-7EAB-4E7F-B9A6-33702BA8E919} = {D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}
+ {1ED43E67-3A64-47DF-9730-A9203443F3AB} = {D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}
+ {2BF6C193-197B-4C49-AE0C-7C8682F1F0CB} = {D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}
+ {D94E98AE-9D02-4532-AD8E-DFD118039775} = {D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}
+ {A8E26365-D1A6-4E9C-9524-D7CFC3E41C76} = {D035EDB3-98C7-4A59-8C2F-5BD5BB9E83DA}
+ EndGlobalSection
+EndGlobal
diff --git a/src/CS340.Extensions b/src/CS340.Extensions
-Subproject f817a61f57c04d6b27bf0b13d6bdaf38b5a43c6
+Subproject 73579373cb6596e21037cc2e70a0e4c84556c26
diff --git a/src/CS340.TSP/CS340.TSP.csproj b/src/CS340.TSP/CS340.TSP.csproj
new file mode 100644
index 0000000..d3419d7
--- /dev/null
+++ b/src/CS340.TSP/CS340.TSP.csproj
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>net5.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Content Include="graphs\*.*">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\CS340.Graph\CS340.Graph.csproj" />
+ <ProjectReference Include="..\CS340.Interfaces\CS340.Interfaces.csproj" />
+ <ProjectReference Include="..\CS340.Extensions\CS340.Extensions.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/src/CS340.TSP/Program.cs b/src/CS340.TSP/Program.cs
new file mode 100644
index 0000000..3dfe855
--- /dev/null
+++ b/src/CS340.TSP/Program.cs
@@ -0,0 +1,35 @@
+using System;
+using System.IO;
+using System.Linq;
+using Extensions;
+using Graph;
+using Graph.IO;
+using Interfaces;
+
+namespace TSP
+{
+ using Graph = Graph<double>;
+ class Program
+ {
+
+ // https://swharden.com/CsharpDataVis/drawing/3-drawing-in-wpf.md.html
+ static void Main(string[] args)
+ {
+ foreach (var item in Directory.GetFiles("graphs/"))
+ {
+ Graph graph = GraphFile.Read(new FileReader(item));
+ Graph mst = graph.MST(0);
+ GraphFile.Print(mst, new ConsoleWriter());
+ Console.WriteLine(
+ graph.Vertices.Sum(vertex =>
+ vertex.Edges.FirstOrDefault(edge => edge.V == vertex.Parent).Weight));
+ }
+ }
+ }
+
+ class ConsoleWriter : IFileWriter
+ {
+ public void WriteAllLines(string[] lines) =>
+ Array.ForEach(lines, line => Console.WriteLine(line));
+ }
+}
diff --git a/src/CS340.TSP/graphs/graph1.txt b/src/CS340.TSP/graphs/graph1.txt
new file mode 100644
index 0000000..f31c4fd
--- /dev/null
+++ b/src/CS340.TSP/graphs/graph1.txt
@@ -0,0 +1,13 @@
+0 1 78.85429601486528 2 64.62197768561404 3 59.135437767890075 4 71.84705978674423 5 54.08326913195984 6 8.602325267042627 7 50.695167422546305 8 75.69015788066504 9 46.09772228646444 10 79.37883848986453 11 19.209372712298546 12 83.18653737234169
+1 0 78.85429601486528 2 93.47726996441435 3 21.095023109728988 4 28.635642126552707 5 102.55242561733974 6 72.69112738154499 7 46.861498055439924 8 76.21679604916491 9 50.20956084253277 10 9.219544457292887 11 89.02246907382428 12 55.08175741568164
+2 0 64.62197768561404 1 93.47726996441435 3 85.23496934944014 4 67.89698078707183 5 21.840329667841555 6 69.6419413859206 7 47.01063709417264 8 28.442925306655784 9 44.77722635447622 10 99.98499887483122 11 83.19254774317228 12 54.62600113499065
+3 0 59.135437767890075 1 21.095023109728988 2 85.23496934944014 4 33.54101966249684 5 90.21086409075129 6 52.392747589718944 7 39.05124837953327 8 74.10802925459562 9 40.496913462633174 10 20.248456731316587 11 68.11754546370561 12 59.77457653551382
+4 0 71.84705978674423 1 28.635642126552707 2 67.89698078707183 3 33.54101966249684 5 80.45495634204272 6 68.41052550594829 7 25.298221281347036 8 47.92702786528704 9 30.083217912982647 10 37.21558813185679 11 86.97700845625813 12 27.16615541441225
+5 0 54.08326913195984 1 102.55242561733974 2 21.840329667841555 3 90.21086409075129 4 80.45495634204272 6 61.032778078668514 7 56.22277118748239 8 49.01020301937138 9 52.40229002629561 10 107.62899237658968 11 70.61161377563892 12 72.78049189171504
+6 0 8.602325267042627 1 72.69112738154499 2 69.6419413859206 3 52.392747589718944 4 68.41052550594829 5 61.032778078668514 7 49.39635614091387 8 77.80102827083971 9 45.221676218380054 10 72.53275122315436 11 18.788294228055936 12 82.37718130647589
+7 0 50.695167422546305 1 46.861498055439924 2 47.01063709417264 3 39.05124837953327 4 25.298221281347036 5 56.22277118748239 6 49.39635614091387 8 36.345563690772494 9 5.0 10 53.0 11 68.09552114493287 12 33.015148038438355
+8 0 75.69015788066504 1 76.21679604916491 2 28.442925306655784 3 74.10802925459562 4 47.92702786528704 5 49.01020301937138 6 77.80102827083971 7 36.345563690772494 9 37.36308338453881 10 84.20213774008353 11 94.847245611035 12 27.80287754891569
+9 0 46.09772228646444 1 50.20956084253277 2 44.77722635447622 3 40.496913462633174 4 30.083217912982647 5 52.40229002629561 6 45.221676218380054 7 5.0 8 37.36308338453881 10 55.80322571321482 11 63.812224534175265 12 37.21558813185679
+10 0 79.37883848986453 1 9.219544457292887 2 99.98499887483122 3 20.248456731316587 4 37.21558813185679 5 107.62899237658968 6 72.53275122315436 7 53.0 8 84.20213774008353 9 55.80322571321482 11 87.69264507357501 12 64.00781202322104
+11 0 19.209372712298546 1 89.02246907382428 2 83.19254774317228 3 68.11754546370561 4 86.97700845625813 5 70.61161377563892 6 18.788294228055936 7 68.09552114493287 8 94.847245611035 9 63.812224534175265 10 87.69264507357501 12 101.01980003939822
+12 0 83.18653737234169 1 55.08175741568164 2 54.62600113499065 3 59.77457653551382 4 27.16615541441225 5 72.78049189171504 6 82.37718130647589 7 33.015148038438355 8 27.80287754891569 9 37.21558813185679 10 64.00781202322104 11 101.01980003939822