import 'package:aoc2020/aocbase.dart'; import 'package:aoc2020/model/comp.dart'; import 'package:aoc2020/model/readdata.dart'; class AOC20201208 extends AOCBase { @override Future a({bool test}) async { var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFileString(filename); Comp().reset(); var index = 0; var notDone = true; while (notDone && index < mylist.length) { index = Comp().pc; notDone = Comp().execute(mylist[index]); } answerA = Comp().acc; } @override Future b({bool test}) async { var jmpList = []; var nopList = []; var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFileString(filename); for (var index = 0; index < mylist.length; index++) { var parse = mylist[index].split(' '); if (parse[0] == 'jmp') jmpList.add(index); if (parse[0] == 'nop') nopList.add(index); } for (var cnt = 0; cnt < jmpList.length; cnt++) { // print(' '); Comp().reset(); var index = 0; Comp().swapJmp(jmpList[cnt]); var notDone = true; while (notDone && index < mylist.length) { index = Comp().pc; if (index < mylist.length) notDone = Comp().execute(mylist[index]); } if (notDone) { answerB = Comp().acc; break; } } if (answerB == null) { for (var cnt = 0; cnt < nopList.length; cnt++) { // print(' '); Comp().reset(); var index = 0; Comp().swapNop(nopList[cnt]); var notDone = true; while (notDone && index < mylist.length) { index = Comp().pc; if (index < mylist.length) notDone = Comp().execute(mylist[index]); } if (notDone) { answerB = Comp().acc; break; } }} } }