import 'package:aoc2020/aocbase.dart'; import 'package:aoc2020/model/readdata.dart'; // import 'dart:mirrors'; class AOC20201202 extends AOCBase { @override Future a({bool test}) async { var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFileString(filename); var validPasswords = 0; for (var index = 0; index < mylist.length; index++) { var mysplit = mylist[index].split(' '); var password = mysplit[2]; var testLetter = mysplit[1].split(':')[0]; var rangeCount = mysplit[0].split('-'); var minCount = int.parse(rangeCount[0]); var maxCount = int.parse(rangeCount[1]); var count = testLetter.allMatches(password).length; if (count >= minCount && count <= maxCount) validPasswords++; } answerA = validPasswords; } @override Future b({bool test}) async { var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFileString(filename); var validPasswords = 0; for (var index = 0; index < mylist.length; index++) { var mysplit = mylist[index].split(' '); var password = mysplit[2]; var testLetter = mysplit[1].split(':')[0]; var rangeCount = mysplit[0].split('-'); var index1 = int.parse(rangeCount[0]) - 1; var letter1 = password.substring(index1, index1+1) == testLetter; var index2 = int.parse(rangeCount[1]) - 1; var letter2 = password[index2] == testLetter; if (letter1 ^ letter2) validPasswords++; } answerB = validPasswords; } }