public int Run(int[] memory, PhaseSettings phaseSettings, bool feedback = false) { int final = -1; var a = new Amplifier("A", memory, () => phaseSettings.A); var b = new Amplifier("B", memory, () => phaseSettings.B); a.Linkto(b); var c = new Amplifier("C", memory, () => phaseSettings.C); b.Linkto(c); var d = new Amplifier("D", memory, () => phaseSettings.D); c.Linkto(d); var e = new Amplifier("E", memory, () => phaseSettings.E) { IsFinalStage = true }; d.Linkto(e); if (feedback) { e.Linkto(a); } e.OnOutput += (_, i) => final = i; a.Post(0); return(final); }
public void Initialize(PhaseSettings newPhaseSettigns) { SC_KoaSpawn.Instance.InitNewPhase(newPhaseSettigns); curPhaseSettings = newPhaseSettigns; resetVariables(); waves = newPhaseSettigns.waves; SC_WaveManager.Instance.InitializeWave(waves[curWaveIndex]); }
public void Challenge7Tests(string memory, int a, int b, int c, int d, int e, int expected, bool feedback) { var mem = memory.Split(",").Select(int.Parse).ToArray(); var setting = new PhaseSettings(a, b, c, d, e); var con = new AmplifierController(); var res = con.Run(mem, setting, feedback); Assert.Equal(expected, res); }
public void InitNewPhase(PhaseSettings newPhaseSettings) { int nbMaxFlock = 0; int nbSpawn = 8; int nbWaves = newPhaseSettings.waves.Length; GameObject container = Instantiate(containerPrefab); for (int i = 0; i < nbWaves; i++) { int nbFlock = newPhaseSettings.waves[i].initialSpawnFlock.Length; if (nbFlock < newPhaseSettings.waves[i].backupSpawnFlock.Length) { nbFlock = newPhaseSettings.waves[i].backupSpawnFlock.Length; } if (nbFlock > nbMaxFlock) { nbMaxFlock = nbFlock; } } koaTab2 = new GameObject[nbWaves, 2, nbMaxFlock, nbSpawn]; for (int i = 0; i < nbWaves; i++) { WaveSettings curWave = newPhaseSettings.waves[i]; for (int j = 0; j < curWave.initialSpawnFlock.Length; j++) { GameObject curKoa; koaTab2[i, 0, j, curWave.initialSpawnPosition[j]] = Instantiate(koaPrefab); curKoa = koaTab2[i, 0, j, curWave.initialSpawnPosition[j]]; DisplaceKoaOnSpawn(curKoa, curWave.initialSpawnPosition[j]); StartCoroutine(GoTargetPos(i, 0, j, curWave.initialSpawnPosition[j], 700, 8f)); curKoa.transform.SetParent(container.transform); } for (int k = 0; k < curWave.backupSpawnFlock.Length; k++) { GameObject curKoa; koaTab2[i, 1, k, curWave.backupSpawnPosition[k]] = Instantiate(koaPrefab); curKoa = koaTab2[i, 1, k, curWave.backupSpawnPosition[k]]; DisplaceKoaOnSpawn(curKoa, curWave.backupSpawnPosition[k]); StartCoroutine(GoTargetPos(i, 1, k, curWave.backupSpawnPosition[k], 700, 8f)); curKoa.transform.SetParent(container.transform); } } KoaCountMaster(); }