public void ProblemOne() { AssembunnyVirtualMachine avm = new AssembunnyVirtualMachine(Input); avm.Run(); Console.WriteLine(avm.RegisterValues['a']); }
private bool RunVm(int number, int cycles) { var vm = new AssembunnyVirtualMachine(Input); vm.RegisterValues['a'] = number; bool run = true; bool succes = true; int? signalState = null; vm.OnOutput += output => { //if output is not 1 or 0, stop running. if (output != 0 && output != 1) { run = false; succes = false; } if (!signalState.HasValue) { signalState = output; } else { //Check if signal is alternating if ((output == 1 && signalState == 0) || (signalState == 1 && output == 0)) { signalState = output; } else { run = false; succes = false; } } }; for (int i = 0; i < cycles; i++) { vm.Step(); //Break out of loop as soon as failure is detected if (!run) { break; } } return(succes); }