Delete Lists.cs
This commit is contained in:
parent
4ad51fffcb
commit
8b42bea8ac
694
Lists.cs
694
Lists.cs
@ -1,694 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Nerd_STF.Mathematics;
|
||||
|
||||
namespace Nerd_STF.Lists
|
||||
{
|
||||
public class Matrix<T>
|
||||
{
|
||||
internal List<List<T>> lists;
|
||||
|
||||
public Vector2 Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return new(lists.Get(0).Length, lists.Length);
|
||||
}
|
||||
}
|
||||
public int LengthX
|
||||
{
|
||||
get
|
||||
{
|
||||
return lists.Get(0).Length;
|
||||
}
|
||||
}
|
||||
public int LengthY
|
||||
{
|
||||
get
|
||||
{
|
||||
return lists.Length;
|
||||
}
|
||||
}
|
||||
|
||||
public static Matrix<T> Empty
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Matrix<T> { lists = List<List<T>>.Empty };
|
||||
}
|
||||
}
|
||||
|
||||
public Matrix()
|
||||
{
|
||||
lists = new List<List<T>>(1, new List<T>(1, default));
|
||||
}
|
||||
public Matrix(int lengthX, int lengthY)
|
||||
{
|
||||
if (lengthX < 1) throw new ArgumentOutOfRangeException(nameof(lengthX), "Do not include a length of less than 1");
|
||||
if (lengthY < 1) throw new ArgumentOutOfRangeException(nameof(lengthY), "Do not include a width of less than 1");
|
||||
lists = new List<List<T>>(lengthY, new List<T>(lengthX));
|
||||
}
|
||||
public Matrix(int lengthX, int lengthY, T inputAll)
|
||||
{
|
||||
if (lengthX < 1) throw new ArgumentOutOfRangeException(nameof(lengthX), "Do not include a length of less than 1");
|
||||
if (lengthY < 1) throw new ArgumentOutOfRangeException(nameof(lengthY), "Do not include a width of less than 1");
|
||||
lists = new List<List<T>>(lengthY, new List<T>(lengthX, inputAll));
|
||||
}
|
||||
public T this[int indexX, int indexY]
|
||||
{
|
||||
get
|
||||
{
|
||||
return Get(indexX, indexY);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
Set(indexX, indexY, value);
|
||||
}
|
||||
}
|
||||
|
||||
public void Add(Matrix<T> input, DirectionType addDir)
|
||||
{
|
||||
if (addDir == DirectionType.y)
|
||||
{
|
||||
foreach (List<T> list in input.lists)
|
||||
{
|
||||
AddY(list);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (List<T> list in input.lists)
|
||||
{
|
||||
AddX(list);
|
||||
}
|
||||
}
|
||||
public void AddX()
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
list.Add();
|
||||
}
|
||||
}
|
||||
public void AddX(T input)
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
list.Add(input);
|
||||
}
|
||||
}
|
||||
public void AddX(T[] input)
|
||||
{
|
||||
foreach (T t in input)
|
||||
{
|
||||
AddX(t);
|
||||
}
|
||||
}
|
||||
public void AddX(List<T> input)
|
||||
{
|
||||
foreach (T t in input)
|
||||
{
|
||||
AddX(t);
|
||||
}
|
||||
}
|
||||
public void AddY()
|
||||
{
|
||||
lists.Add(new List<T>(lists.Get(0).Length));
|
||||
}
|
||||
public void AddY(T input)
|
||||
{
|
||||
lists.Add(new List<T>(lists.Get(0).Length, input));
|
||||
}
|
||||
public void AddY(T[] input)
|
||||
{
|
||||
if (input.Length > lists.Get(0).Length) throw new OverflowException();
|
||||
lists.Add(new List<T>(input));
|
||||
}
|
||||
public void AddY(List<T> input)
|
||||
{
|
||||
if (input.Length > lists.Get(0).Length) throw new OverflowException();
|
||||
lists.Add(input);
|
||||
}
|
||||
public bool Check(int placeX, int placeY)
|
||||
{
|
||||
return lists.Get(placeY).Get(placeX) != null;
|
||||
}
|
||||
public bool Compare(T input)
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
if (list.Compare(input)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public void Convert(T input)
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
list.Convert(input);
|
||||
}
|
||||
}
|
||||
public void Convert(T[] input)
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
list.Convert(input);
|
||||
}
|
||||
}
|
||||
public void Convert(List<T> input)
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
list.Convert(input);
|
||||
}
|
||||
}
|
||||
public void Convert(Matrix<T> input)
|
||||
{
|
||||
lists = input.lists;
|
||||
}
|
||||
public int Count()
|
||||
{
|
||||
int returned = 0;
|
||||
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
returned += list.Count();
|
||||
}
|
||||
|
||||
return returned;
|
||||
}
|
||||
public int Count(DirectionType type)
|
||||
{
|
||||
if (type == DirectionType.y) return LengthY;
|
||||
return LengthX;
|
||||
}
|
||||
public Vector2 CountXY()
|
||||
{
|
||||
return Length;
|
||||
}
|
||||
public T Get(int placeX, int placeY)
|
||||
{
|
||||
return lists.Get(placeY).Get(placeX);
|
||||
}
|
||||
public void Get(int placeX, int placeY, out T output)
|
||||
{
|
||||
output = Get(placeX, placeY);
|
||||
}
|
||||
public List<T> GetAll()
|
||||
{
|
||||
List<T> returned = new();
|
||||
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
returned.Add(list);
|
||||
}
|
||||
|
||||
return returned;
|
||||
}
|
||||
public void GetAll(out List<T> output)
|
||||
{
|
||||
List<T> returned = new();
|
||||
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
returned.Add(list);
|
||||
}
|
||||
|
||||
output = returned;
|
||||
}
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
foreach (List<T> list in lists)
|
||||
{
|
||||
foreach (T t in list)
|
||||
{
|
||||
yield return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void Remove(int placeX, int placeY)
|
||||
{
|
||||
lists.Get(placeY).Remove(placeX);
|
||||
}
|
||||
public void Set(int placeX, int placeY, T input)
|
||||
{
|
||||
lists.Get(placeY).Set(placeX, input);
|
||||
}
|
||||
public void SetAll(T input)
|
||||
{
|
||||
for (int i = 0; i < lists.Length; i++)
|
||||
{
|
||||
for (int j = 0; j < lists.Get(i).Length; j++)
|
||||
{
|
||||
lists.Get(i).Set(j, input);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Matrix<T> AllDefault(int lengthX, int lengthY)
|
||||
{
|
||||
return new(lengthX, lengthY, default);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return base.Equals(obj);
|
||||
}
|
||||
public bool Equals(Matrix<T> other)
|
||||
{
|
||||
return GetAll() == other.GetAll();
|
||||
}
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return lists.ToString();
|
||||
}
|
||||
public string ToString(bool showAll)
|
||||
{
|
||||
if (showAll)
|
||||
{
|
||||
string r = "";
|
||||
for (int i = 0; i < lists.Length; i++)
|
||||
{
|
||||
for (int j = 0; j < lists.Get(i).Length; j++)
|
||||
{
|
||||
r += lists.Get(i).Get(j);
|
||||
if (j != lists.Get(i).Length - 1) r += ", ";
|
||||
}
|
||||
if (i != lists.Length - 1) r += "\n";
|
||||
}
|
||||
return r;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public static bool operator ==(Matrix<T> a, Matrix<T> b)
|
||||
{
|
||||
return a.Equals(b);
|
||||
}
|
||||
public static bool operator !=(Matrix<T> a, Matrix<T> b)
|
||||
{
|
||||
return !a.Equals(b);
|
||||
}
|
||||
|
||||
public enum DirectionType
|
||||
{
|
||||
x,
|
||||
y,
|
||||
}
|
||||
}
|
||||
|
||||
public class List<T>
|
||||
{
|
||||
internal T[] list;
|
||||
|
||||
public int Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return list.Length;
|
||||
}
|
||||
}
|
||||
public T this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
return Get(index);
|
||||
}
|
||||
set
|
||||
{
|
||||
Set(index, value);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<T> Empty
|
||||
{
|
||||
get
|
||||
{
|
||||
return new List<T>(Array.Empty<T>());
|
||||
}
|
||||
}
|
||||
|
||||
public List()
|
||||
{
|
||||
list = Array.Empty<T>();
|
||||
}
|
||||
public List(int length)
|
||||
{
|
||||
list = new T[length];
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
list[i] = default;
|
||||
}
|
||||
}
|
||||
public List(int length, T inputAll)
|
||||
{
|
||||
list = new T[length];
|
||||
for (int i = 0; i < list.Length; i++)
|
||||
{
|
||||
list[i] = inputAll;
|
||||
}
|
||||
}
|
||||
public List(T[] input)
|
||||
{
|
||||
list = Array.Empty<T>();
|
||||
if (input != default) list = input;
|
||||
}
|
||||
public List(List<T> input)
|
||||
{
|
||||
list = Array.Empty<T>();
|
||||
if (input.list != default) list = input.list;
|
||||
}
|
||||
|
||||
public void Add()
|
||||
{
|
||||
T[] before = list;
|
||||
|
||||
if (before.Length == 0)
|
||||
{
|
||||
list = new T[1];
|
||||
list[0] = default;
|
||||
}
|
||||
else
|
||||
{
|
||||
list = new T[before.Length + 1];
|
||||
int place = 0;
|
||||
while (place < before.Length)
|
||||
{
|
||||
list[place] = before[place];
|
||||
place++;
|
||||
}
|
||||
list[place] = default;
|
||||
}
|
||||
}
|
||||
public void Add(T add)
|
||||
{
|
||||
T[] before = list;
|
||||
|
||||
if (before.Length == 0)
|
||||
{
|
||||
list = new T[1];
|
||||
list[0] = add;
|
||||
}
|
||||
else
|
||||
{
|
||||
list = new T[before.Length + 1];
|
||||
int place = 0;
|
||||
while (place < before.Length)
|
||||
{
|
||||
list[place] = before[place];
|
||||
place++;
|
||||
}
|
||||
list[place] = add;
|
||||
}
|
||||
}
|
||||
public void Add(T[] add)
|
||||
{
|
||||
foreach (T input in add)
|
||||
{
|
||||
Add(input);
|
||||
}
|
||||
}
|
||||
public void Add(List<T> add)
|
||||
{
|
||||
Add(add.list);
|
||||
}
|
||||
public bool Check(int place)
|
||||
{
|
||||
return list[place] != null;
|
||||
}
|
||||
public bool Compare(T input)
|
||||
{
|
||||
foreach (T place in list)
|
||||
{
|
||||
if (place == null) continue;
|
||||
if (place.Equals(input)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public void Convert(T input)
|
||||
{
|
||||
for (int i = 0; i < list.Length; i++)
|
||||
{
|
||||
list[i] = input;
|
||||
}
|
||||
}
|
||||
public void Convert(T[] input)
|
||||
{
|
||||
list = input;
|
||||
}
|
||||
public void Convert(List<T> input)
|
||||
{
|
||||
Convert(input.list);
|
||||
}
|
||||
public int Count()
|
||||
{
|
||||
int returned = 0;
|
||||
foreach (T _ in list)
|
||||
{
|
||||
returned++;
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public T Get(int place)
|
||||
{
|
||||
return list[place];
|
||||
}
|
||||
public void Get(int place, out T output)
|
||||
{
|
||||
output = Get(place);
|
||||
}
|
||||
public T[] GetAll()
|
||||
{
|
||||
return list;
|
||||
}
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
return list.GetEnumerator();
|
||||
}
|
||||
public void Remove(int place)
|
||||
{
|
||||
list[place] = default;
|
||||
}
|
||||
public void Remove(int place, bool shift)
|
||||
{
|
||||
list[place] = default;
|
||||
if (shift)
|
||||
{
|
||||
for (int i = place; i < list.Length - 1; i++)
|
||||
{
|
||||
list[i] = list[i + 1];
|
||||
}
|
||||
T[] save = list;
|
||||
list = new T[save.Length - 1];
|
||||
for (int i = 0; i < save.Length - 1; i++)
|
||||
{
|
||||
list[i] = save[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
public void Set(int place, T input)
|
||||
{
|
||||
list[place] = input;
|
||||
}
|
||||
public void Set(T[] input)
|
||||
{
|
||||
list = input;
|
||||
}
|
||||
public void Set(List<T> input)
|
||||
{
|
||||
Set(input.list);
|
||||
}
|
||||
public void SetAll(T input)
|
||||
{
|
||||
for (int i = 0; i < list.Length; i++)
|
||||
{
|
||||
list[i] = input;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<T> AllDefault(int length)
|
||||
{
|
||||
return new(length, default);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return base.Equals(obj);
|
||||
}
|
||||
public bool Equals(List<T> other)
|
||||
{
|
||||
bool returned = true;
|
||||
if (Length == other.Length)
|
||||
{
|
||||
for (int i = 0; i < Length; i++)
|
||||
{
|
||||
returned &= Get(i).Equals(other.Get(i));
|
||||
}
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public bool Equals(T[] other)
|
||||
{
|
||||
bool returned = true;
|
||||
if (Length == other.Length)
|
||||
{
|
||||
for (int i = 0; i < Length; i++)
|
||||
{
|
||||
returned &= Get(i).Equals(other[i]);
|
||||
}
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return list.ToString();
|
||||
}
|
||||
public string ToString(bool showAll)
|
||||
{
|
||||
if (showAll)
|
||||
{
|
||||
string r = "";
|
||||
for (int i = 0; i < list.Length; i++)
|
||||
{
|
||||
r += list[i].ToString();
|
||||
if (i != list.Length - 1) r += "\n";
|
||||
}
|
||||
return r;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<T> operator +(List<T> a, List<T> b)
|
||||
{
|
||||
a.Add(b);
|
||||
return a;
|
||||
}
|
||||
public static List<T> operator +(List<T> a, T[] b)
|
||||
{
|
||||
a.Add(b);
|
||||
return a;
|
||||
}
|
||||
public static List<T> operator +(T[] a, List<T> b)
|
||||
{
|
||||
List<T> returned = new(a);
|
||||
returned.Add(b);
|
||||
return returned;
|
||||
}
|
||||
public static List<T> operator +(List<T> a, int add)
|
||||
{
|
||||
List<T> returned = new(a.Length + add);
|
||||
int i = 0;
|
||||
while (i < a.Length)
|
||||
{
|
||||
returned.Set(i, a.Get(i));
|
||||
i++;
|
||||
}
|
||||
while (i < returned.Length)
|
||||
{
|
||||
returned.Set(i, default);
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public static List<T> operator +(List<T> a, T b)
|
||||
{
|
||||
a.Add(b);
|
||||
|
||||
return a;
|
||||
}
|
||||
public static List<T> operator +(T a, List<T> b)
|
||||
{
|
||||
b.Add(a);
|
||||
|
||||
return b;
|
||||
}
|
||||
public static List<T> operator -(List<T> a, int remove)
|
||||
{
|
||||
List<T> returned = new(a.Length - remove);
|
||||
for (int i = 0; i < returned.Length; i++)
|
||||
{
|
||||
returned.Set(i, a.Get(i));
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public static List<T> operator -(List<T> a, int[] removes)
|
||||
{
|
||||
foreach (int remove in removes)
|
||||
{
|
||||
a.Remove(remove);
|
||||
}
|
||||
return a;
|
||||
}
|
||||
public static List<T> operator -(List<T> a, List<int> removes)
|
||||
{
|
||||
foreach (int remove in removes)
|
||||
{
|
||||
a.Remove(remove);
|
||||
}
|
||||
return a;
|
||||
}
|
||||
public static List<T> operator *(List<T> a, int multiplier)
|
||||
{
|
||||
List<T> returned = new(a.Length * multiplier);
|
||||
int i = 0;
|
||||
while (i < a.Length)
|
||||
{
|
||||
returned.Set(i, a.Get(i));
|
||||
i++;
|
||||
}
|
||||
while (i < returned.Length)
|
||||
{
|
||||
returned.Set(i, default);
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
public static bool operator ==(List<T> a, List<T> b)
|
||||
{
|
||||
return a.Equals(b);
|
||||
}
|
||||
public static bool operator ==(List<T> a, T[] b)
|
||||
{
|
||||
return a.Equals(b);
|
||||
}
|
||||
public static bool operator ==(T[] a, List<T> b)
|
||||
{
|
||||
return b.Equals(a);
|
||||
}
|
||||
public static bool operator !=(List<T> a, List<T> b)
|
||||
{
|
||||
return !a.Equals(b);
|
||||
}
|
||||
public static bool operator !=(List<T> a, T[] b)
|
||||
{
|
||||
return !a.Equals(b);
|
||||
}
|
||||
public static bool operator !=(T[] a, List<T> b)
|
||||
{
|
||||
return !b.Equals(a);
|
||||
}
|
||||
|
||||
public static explicit operator T[](List<T> list)
|
||||
{
|
||||
return list.list;
|
||||
}
|
||||
public static explicit operator List<T>(T[] list)
|
||||
{
|
||||
return new List<T>(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user