import 'package:aoc2020/aocbase.dart'; import 'package:aoc2020/model/readdata.dart'; class AOC20201206 extends AOCBase { int voterTabulation({List rawList, bool isIntersection}) { var retval = 0; var voterList = >[]; var agregate = {}; var voterIndex = 0; int processVoters() { agregate = voterList[0]; for (var voter in voterList) { agregate = isIntersection ? agregate.intersection(voter) : agregate.union(voter); } return agregate.length; } for (var line in rawList) { if (line.isEmpty) { retval += processVoters(); voterList = >[]; voterIndex = 0; } else { voterList.add({}); for (var index = 0; index < line.length; index++) { voterList[voterIndex].add(line[index]); } voterIndex++; } } retval += processVoters(); return retval; } @override Future a({bool test}) async { var mylist = await ReadData.readFile(classString, test: test); answerA = voterTabulation(rawList: mylist, isIntersection: false); } @override Future b({bool test}) async { var mylist = await ReadData.readFile(classString, test: test); answerB = voterTabulation(rawList: mylist, isIntersection: true); } }