mirror of
https://github.com/neogeek23/Life.git
synced 2026-02-04 11:08:23 +00:00
Update Location.cs
This commit is contained in:
parent
5f262e0da6
commit
629a4b06fb
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.SqlTypes;
|
using System.Data.SqlTypes;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace N_Space {
|
namespace N_Space {
|
||||||
public class Location {
|
public class Location {
|
||||||
@ -30,20 +31,42 @@ namespace N_Space {
|
|||||||
|
|
||||||
private List<int[]> RemoveUndesirableNeighbors(List<int[]> seed, int maxSize) {
|
private List<int[]> RemoveUndesirableNeighbors(List<int[]> seed, int maxSize) {
|
||||||
bool shouldRemove;
|
bool shouldRemove;
|
||||||
foreach (int[] s in seed) {
|
List<int> indexToRemove = new List<int>();
|
||||||
shouldRemove = s.Equals(_coordinate);
|
|
||||||
|
for (int i=0; i < seed.Count; i++) {
|
||||||
|
shouldRemove = IntArrayConentCompare(seed[i], _coordinate);
|
||||||
if (!shouldRemove) {
|
if (!shouldRemove) {
|
||||||
foreach (int i in s) {
|
foreach (int j in seed[i]) {
|
||||||
shouldRemove = i < 0 || i > maxSize;
|
shouldRemove |= j < 0 || j > maxSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (shouldRemove) {
|
if (shouldRemove) {
|
||||||
seed.Remove(s);
|
indexToRemove.Add(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = indexToRemove.Count - 1; i >= 0; i--) {
|
||||||
|
seed.RemoveAt(indexToRemove[i]);
|
||||||
|
}
|
||||||
|
|
||||||
return seed;
|
return seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IntArrayConentCompare(int[] array1, int[] array2) {
|
||||||
|
bool result = true;
|
||||||
|
|
||||||
|
if (array1.Length == array2.Length) {
|
||||||
|
for (int i = 0; i < array1.Length; i++) {
|
||||||
|
result &= array1[i] == array2[i];
|
||||||
|
if (!result) {
|
||||||
|
i = array1.Length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private List<int[]> IndexEvaluationTrain(List<int[]> seed, int index) {
|
private List<int[]> IndexEvaluationTrain(List<int[]> seed, int index) {
|
||||||
if (index < _coordinate.Length) {
|
if (index < _coordinate.Length) {
|
||||||
return IndexEvaluationTrain(CoordinateMutator(seed, index), index + 1);
|
return IndexEvaluationTrain(CoordinateMutator(seed, index), index + 1);
|
||||||
@ -59,7 +82,7 @@ namespace N_Space {
|
|||||||
mutations[1] = 0;
|
mutations[1] = 0;
|
||||||
mutations[2] = 1;
|
mutations[2] = 1;
|
||||||
|
|
||||||
for (int i = 1; i < currentList.Count; i++) {
|
for (int i = 0; i < currentList.Count; i++) {
|
||||||
for (int j = 0; j < mutations.Length; j++) {
|
for (int j = 0; j < mutations.Length; j++) {
|
||||||
int[] tempCopy = (int[])currentList[i].Clone();
|
int[] tempCopy = (int[])currentList[i].Clone();
|
||||||
tempCopy[index] = tempCopy[index] + mutations[j];
|
tempCopy[index] = tempCopy[index] + mutations[j];
|
||||||
@ -69,6 +92,30 @@ namespace N_Space {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string NameNeighbors() {
|
||||||
|
string result = "{";
|
||||||
|
for (int i = 0; i < _neighbors.Count; i++) {
|
||||||
|
string indexes = "[";
|
||||||
|
for (int j = 0; j < _neighbors[i].Length; j++) {
|
||||||
|
indexes += _neighbors[i][j].ToString();
|
||||||
|
if (j == _neighbors[i].Length - 1) {
|
||||||
|
indexes += "]";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
indexes += ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result += indexes;
|
||||||
|
if (i == _neighbors.Count - 1) {
|
||||||
|
result += "}";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result += ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public State? GetPresentState() {
|
public State? GetPresentState() {
|
||||||
return _present;
|
return _present;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user