public static void TestSomething10() { HashSet <int> seenAmplitudes = new HashSet <int>(); Queue <PendulumSwing> queue = new Queue <PendulumSwing>(); int startingAmplitude = -43470; // index 315 PendulumSwing startingPendulumSwing = new PendulumSwing(startingAmplitude, 0, null); queue.Enqueue(startingPendulumSwing); seenAmplitudes.Add(startingPendulumSwing.Amplitude); while (queue.Count > 0) { PendulumSwing dequeue = queue.Dequeue(); List <PendulumSwing> successors = dequeue.GetSuccessors(); foreach (PendulumSwing pendulumSwing in successors) { if (pendulumSwing.Amplitude == -57330) { InfoForm.ShowValue(pendulumSwing); return; } if (seenAmplitudes.Contains(pendulumSwing.Amplitude)) { continue; } queue.Enqueue(pendulumSwing); seenAmplitudes.Add(pendulumSwing.Amplitude); } } }
// Start is called before the first frame update void Start() { pendulum = this.gameObject.GetComponent <PendulumSwing>(); gm = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>(); target = this.transform.position - 3 * Vector3.up; //timeToMove = 0.5f; }
public PendulumSwing( int amplitude, int acceleration, PendulumSwing predecessor, int primaryIndex, int secondaryIndex) { Amplitude = amplitude; Acceleration = acceleration; Predecessor = predecessor; PrimaryIndex = primaryIndex; SecondaryIndex = secondaryIndex; }
public void FillInExtended() { int range = 100; // 2000; List <int> startingIndexes = new List <int>(); for (int i = 0; i < range; i++) { startingIndexes.Add(289 + i); } for (int i = 0; i < range; i++) { startingIndexes.Add(-382 - i); } List <PendulumSwing> startingSwings = startingIndexes.ConvertAll( index => new PendulumSwing(GetPendulumAmplitude(index), 0, null, index, 0)); Queue <PendulumSwing> queue = new Queue <PendulumSwing>(); foreach (PendulumSwing swing in startingSwings) { List <PendulumSwing> successors = swing.GetSuccessors(); successors.ForEach(successor => queue.Enqueue(successor)); } while (queue.Count > 0) { PendulumSwing dequeue = queue.Dequeue(); if (GetPendulumSwingIndexExtended(dequeue.Amplitude) != Double.NaN.ToString()) { continue; } if (dequeue.SecondaryIndex > range) { continue; } string extendedIndex = dequeue.PrimaryIndex + "+" + dequeue.SecondaryIndex; _extendedAmplitudeDictionary[dequeue.Amplitude] = extendedIndex; List <PendulumSwing> successors = dequeue.GetSuccessors(); successors.ForEach(successor => queue.Enqueue(successor)); } }
public PendulumSwing(int amplitude, int acceleration, PendulumSwing predecessor) { Amplitude = amplitude; Acceleration = acceleration; Predecessor = predecessor; }