You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.5 KiB
Dart

import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart';
// import 'dart:mirrors';
class AOC20201202 extends AOCBase {
@override
Future<void> a({bool test}) async {
var mylist = await ReadData.readFile<String>(classString, test: test);
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<void> b({bool test}) async {
var mylist = await ReadData.readFile<String>(classString, test: test);
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;
}
}