From f0645a4d9034fe502f227840f0937a4f73c4fe60 Mon Sep 17 00:00:00 2001
From: = <=>
Date: Tue, 6 Feb 2024 13:00:52 +0100
Subject: [PATCH] setup structure for rewrite
---
CubeShapeCounting.sln | 25 ----
CubeShapeCounting/CubeShapeCounting.csproj | 14 --
CubeShapeCounting/Program.cs | 39 -----
CubeShapeCounting/Shape.cs | 141 ------------------
.../CubeShapeCounting.code-workspace | 0
.../ImmutableOrientedPolyCube.jl | 0
{julia => julia_old}/Plot.jl | 0
{julia => julia_old}/Polycube.jl | 0
{julia => julia_old}/PolycubeCounting.jl | 0
{julia => julia_old}/Rotations.jl | 0
{julia => julia_old}/background-error.wav | Bin
11 files changed, 219 deletions(-)
delete mode 100644 CubeShapeCounting.sln
delete mode 100644 CubeShapeCounting/CubeShapeCounting.csproj
delete mode 100644 CubeShapeCounting/Program.cs
delete mode 100644 CubeShapeCounting/Shape.cs
rename {julia => julia_old}/CubeShapeCounting.code-workspace (100%)
rename {julia => julia_old}/ImmutableOrientedPolyCube.jl (100%)
rename {julia => julia_old}/Plot.jl (100%)
rename {julia => julia_old}/Polycube.jl (100%)
rename {julia => julia_old}/PolycubeCounting.jl (100%)
rename {julia => julia_old}/Rotations.jl (100%)
rename {julia => julia_old}/background-error.wav (100%)
diff --git a/CubeShapeCounting.sln b/CubeShapeCounting.sln
deleted file mode 100644
index 5a76496..0000000
--- a/CubeShapeCounting.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.6.33829.357
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CubeShapeCounting", "CubeShapeCounting\CubeShapeCounting.csproj", "{922321A0-14E9-4BED-9E4D-8A8DD12E17CB}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {922321A0-14E9-4BED-9E4D-8A8DD12E17CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {922321A0-14E9-4BED-9E4D-8A8DD12E17CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {922321A0-14E9-4BED-9E4D-8A8DD12E17CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {922321A0-14E9-4BED-9E4D-8A8DD12E17CB}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {2C62E5D9-6E88-44D3-8756-535F580C5B8E}
- EndGlobalSection
-EndGlobal
diff --git a/CubeShapeCounting/CubeShapeCounting.csproj b/CubeShapeCounting/CubeShapeCounting.csproj
deleted file mode 100644
index a4742e5..0000000
--- a/CubeShapeCounting/CubeShapeCounting.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- Exe
- net7.0
- enable
- enable
-
-
-
-
-
-
-
diff --git a/CubeShapeCounting/Program.cs b/CubeShapeCounting/Program.cs
deleted file mode 100644
index fd06869..0000000
--- a/CubeShapeCounting/Program.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace CubeShapeCounting {
- internal class Program {
- private int _numBlocks = 0;
- private Dictionary[] _knownShapes;
-
- public Program(int numBlocks) {
- _numBlocks = numBlocks;
- _knownShapes = new Dictionary[numBlocks - 1];
- for (int i = 0; i < _numBlocks - 1; i++)
- _knownShapes[i] = new Dictionary();
- }
-
- public void Start() {
- Stack shapes = new Stack();
- shapes.Push(Shape.GetCube());
- while (shapes.Count > 0) {
- Shape shape = shapes.Pop();
- List<(int, int, int)> next_spaces = shape.GetGrowableSpaces();
-
- }
- }
-
- static void Main(string[] args) {
- if (args.Length != 1) {
- Console.WriteLine("Expected 1 argument");
- return;
- }
- int numBlocks;
- try {
- numBlocks = Int32.Parse(args[0]);
- } catch {
- Console.WriteLine("Cannot parse" + args[0] + "as an Int32.");
- return;
- }
- Program P = new Program(numBlocks);
- P.Start();
- }
- }
-}
\ No newline at end of file
diff --git a/CubeShapeCounting/Shape.cs b/CubeShapeCounting/Shape.cs
deleted file mode 100644
index dbf95b1..0000000
--- a/CubeShapeCounting/Shape.cs
+++ /dev/null
@@ -1,141 +0,0 @@
-using System.Buffers.Binary;
-using System.Collections.Immutable;
-using System.IO.Hashing;
-
-public class Shape {
- private int _size;
- private (int, int, int) _minp;
- private (int, int, int) _maxp;
- private (int, int, int)[] _newest;
- private SortedDictionary<(int, int, int), int>[] _data;
- public bool this[int x, int y, int z] {
- get {
- if (x <= _maxp.Item1 && y <= _maxp.Item2 && z <= _maxp.Item3 && x >= _minp.Item1 && y >= _minp.Item2 && z >= _minp.Item3) {
- return _data[0].ContainsKey((x, y, z));
- } else
- throw new IndexOutOfRangeException();
- }
- }
-
- private Shape((int, int, int) minp, (int, int, int) maxp, (int, int, int)[] newest, SortedDictionary<(int, int, int), int>[] D) {
- _minp = minp;
- _maxp = maxp;
- _newest = newest;
- _data = D;
- _size = D[0].Count;
- }
-
- public List<(int, int, int)> GetGrowableSpaces() {
- List<(int, int, int)> L = new List<(int, int, int)>();
- foreach ((int x, int y, int z) in _newest) {
- if (!_data[0].ContainsKey((x + 1, y, z)) && !L.Contains((x + 1, y, z)))
- L.Add((x + 1, y, z));
- if (!_data[0].ContainsKey((x - 1, y, z)) && !L.Contains((x - 1, y, z)))
- L.Add((x - 1, y, z));
- if (!_data[0].ContainsKey((x, y + 1, z)) && !L.Contains((x, y + 1, z)))
- L.Add((x, y + 1, z));
- if (!_data[0].ContainsKey((x, y - 1, z)) && !L.Contains((x, y - 1, z)))
- L.Add((x, y - 1, z));
- if (!_data[0].ContainsKey((x, y, z + 1)) && !L.Contains((x, y, z + 1)))
- L.Add((x, y, z + 1));
- if (!_data[0].ContainsKey((x, y, z - 1)) && !L.Contains((x, y, z - 1)))
- L.Add((x, y, z - 1));
- }
- return L;
- }
-
- public Shape Grow((int, int, int)[] newPs) {
- SortedDictionary<(int, int, int), int> D = this._data[0];
- for (int i = 0; i < newPs.Length; i++) {
- (int x, int y, int z) = newPs[i];
- if (D.ContainsKey(newPs[i]) ||
- (!D.ContainsKey((x + 1, y, z))
- && !D.ContainsKey((x - 1, y, z))
- && !D.ContainsKey((x, y + 1, z))
- && !D.ContainsKey((x, y - 1, z))
- && !D.ContainsKey((x, y, z + 1))
- && !D.ContainsKey((x, y, z - 1))))
- throw new InvalidOperationException();
- }
- SortedDictionary<(int, int, int), int>[] newD = new SortedDictionary<(int, int, int), int>[24];
- for (int i = 0; i < 24; i++) {
- int rot = i % 3;
- int corner = (i / 3) % 8;
- bool apos = corner % 2 != 0;
- bool bpos = (corner / 2) % 2 != 0;
- bool cpos = (corner / 4) % 2 != 0;
- Comparison<(int, int, int)> comparer = ((int, int, int) A, (int, int, int) B) => {
- int[] d = new int[3];
- d[0] = (apos ? 1 : -1) * (B.Item1 - A.Item1);
- d[1] = (bpos ? 1 : -1) * (B.Item2 - A.Item2);
- d[2] = (cpos ? 1 : -1) * (B.Item3 - A.Item3);
- return d[(2 + rot) % 3] != 0 ? d[(2 + rot) % 3] : (d[(1 + rot) % 3] != 0 ? d[(1 + rot) % 3] : d[rot]);
- };
- newD[i] = new SortedDictionary<(int, int, int), int>(D, Comparer<(int, int, int)>.Create(comparer));
- }
- (int, int, int) newminp = this._minp;
- (int, int, int) newmaxp = this._maxp;
- for (int i = 0; i < newPs.Length; i++) {
- for (int j = 0; j < newPs.Length; j++)
- newD[i].Add(newPs[i], 0);
- newminp = (Math.Min(newminp.Item1, newPs[i].Item1), Math.Min(newminp.Item2, newPs[i].Item2), Math.Min(newminp.Item3, newPs[i].Item3));
- newmaxp = (Math.Max(newmaxp.Item1, newPs[i].Item1), Math.Max(newmaxp.Item2, newPs[i].Item2), Math.Max(newmaxp.Item3, newPs[i].Item3));
- }
- return new Shape(newminp, newmaxp, newPs, newD);
- }
-
- public ImmutableOrientedShape[] GetOrientations() {
- ImmutableOrientedShape[] S = new ImmutableOrientedShape[24];
- for (int i = 0; i < 24; i++) {
- S[i] = new ImmutableOrientedShape(_data[i]);
- }
- return S;
- }
-
- public class ImmutableOrientedShape {
- public readonly ImmutableSortedDictionary<(int, int, int), int> Dict;
- public readonly int Hash;
-
- internal ImmutableOrientedShape(SortedDictionary<(int, int, int), int> D) {
- Dict = D.ToImmutableSortedDictionary();
- XxHash64 H = new XxHash64(0);
- IEnumerable<(int, int, int)> keys = Dict.Keys;
- (int a, int b, int c) = keys.First();
- Span s = new byte[12];
- foreach ((int x, int y, int z) in keys) {
- BinaryPrimitives.WriteInt32BigEndian(s.Slice(0), x - a);
- BinaryPrimitives.WriteInt32BigEndian(s.Slice(4), y - b);
- BinaryPrimitives.WriteInt32BigEndian(s.Slice(8), z - c);
- H.Append(s.ToArray());
- }
- Hash = BinaryPrimitives.ReadInt32BigEndian(H.GetCurrentHash());
- }
-
- public override int GetHashCode() {
- return Hash;
- }
-
- public override bool Equals(object? obj) {
- if (!(obj is ImmutableOrientedShape))
- return false;
- ImmutableOrientedShape o = (ImmutableOrientedShape)obj;
- IEnumerable<(int, int, int)> K1 = Dict.Keys;
- IEnumerable<(int, int, int)> K2 = o.Dict.Keys;
- if (K1.Count() != K2.Count())
- return false;
- foreach (((int a1, int a2, int a3), (int b1, int b2, int b3)) in K1.Zip(K2))
- if (a1 != b1 || a2 != b2 || a3 != b3)
- return false;
- return true;
- }
- }
-
- public static Shape GetCube() {
- SortedDictionary<(int, int, int), int>[] newD = new SortedDictionary<(int, int, int), int>[24];
- for (int i = 0; i < 24; i++) {
- newD[i] = new SortedDictionary<(int, int, int), int>();
- newD[i].Add((0, 0, 0), 0);
- }
- return new Shape((0, 0, 0), (0, 0, 0), new (int, int, int)[] { (0, 0, 0) }, newD);
- }
-}
diff --git a/julia/CubeShapeCounting.code-workspace b/julia_old/CubeShapeCounting.code-workspace
similarity index 100%
rename from julia/CubeShapeCounting.code-workspace
rename to julia_old/CubeShapeCounting.code-workspace
diff --git a/julia/ImmutableOrientedPolyCube.jl b/julia_old/ImmutableOrientedPolyCube.jl
similarity index 100%
rename from julia/ImmutableOrientedPolyCube.jl
rename to julia_old/ImmutableOrientedPolyCube.jl
diff --git a/julia/Plot.jl b/julia_old/Plot.jl
similarity index 100%
rename from julia/Plot.jl
rename to julia_old/Plot.jl
diff --git a/julia/Polycube.jl b/julia_old/Polycube.jl
similarity index 100%
rename from julia/Polycube.jl
rename to julia_old/Polycube.jl
diff --git a/julia/PolycubeCounting.jl b/julia_old/PolycubeCounting.jl
similarity index 100%
rename from julia/PolycubeCounting.jl
rename to julia_old/PolycubeCounting.jl
diff --git a/julia/Rotations.jl b/julia_old/Rotations.jl
similarity index 100%
rename from julia/Rotations.jl
rename to julia_old/Rotations.jl
diff --git a/julia/background-error.wav b/julia_old/background-error.wav
similarity index 100%
rename from julia/background-error.wav
rename to julia_old/background-error.wav