Update ReadData to use a generic

master
Peter Resch 5 years ago
parent 259f75df32
commit f9bc1ec66c

@ -4,8 +4,7 @@ import 'package:aoc2020/model/readdata.dart';
class AOC20201201 extends AOCBase { class AOC20201201 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<num>(classString, test: test);
var mylist = await ReadData.readFileNum(filename);
for (var index1 = 0; index1 < mylist.length - 1; index1++) { for (var index1 = 0; index1 < mylist.length - 1; index1++) {
for (var index2 = index1 + 1; index2 < mylist.length; index2++) { for (var index2 = index1 + 1; index2 < mylist.length; index2++) {
if (mylist[index1] + mylist[index2] == 2020) { if (mylist[index1] + mylist[index2] == 2020) {
@ -17,8 +16,7 @@ class AOC20201201 extends AOCBase {
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<num>(classString, test: test);
var mylist = await ReadData.readFileNum(filename);
for (var index1 = 0; index1 < mylist.length - 1; index1++) { for (var index1 = 0; index1 < mylist.length - 1; index1++) {
for (var index2 = index1 + 1; index2 < mylist.length; index2++) { for (var index2 = index1 + 1; index2 < mylist.length; index2++) {
for (var index3 = index2 + 1; index3 < mylist.length; index3++) { for (var index3 = index2 + 1; index3 < mylist.length; index3++) {

@ -5,8 +5,7 @@ import 'package:aoc2020/model/readdata.dart';
class AOC20201202 extends AOCBase { class AOC20201202 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
var validPasswords = 0; var validPasswords = 0;
for (var index = 0; index < mylist.length; index++) { for (var index = 0; index < mylist.length; index++) {
var mysplit = mylist[index].split(' '); var mysplit = mylist[index].split(' ');
@ -23,8 +22,7 @@ class AOC20201202 extends AOCBase {
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
var validPasswords = 0; var validPasswords = 0;
for (var index = 0; index < mylist.length; index++) { for (var index = 0; index < mylist.length; index++) {
var mysplit = mylist[index].split(' '); var mysplit = mylist[index].split(' ');

@ -24,15 +24,13 @@ class AOC20201203 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
answerA = tobogganRide(hill: mylist, start: Point(0, 0), slope: Point(3, 1)); answerA = tobogganRide(hill: mylist, start: Point(0, 0), slope: Point(3, 1));
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
var slopes = <Point>[Point(1, 1), Point(3, 1), Point(5, 1), Point(7, 1), Point(1, 2)]; var slopes = <Point>[Point(1, 1), Point(3, 1), Point(5, 1), Point(7, 1), Point(1, 2)];
answerB = 0; answerB = 0;

@ -76,17 +76,13 @@ class AOC20201204 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
answerA = processList(input: mylist, validatorFn: valid1); answerA = processList(input: mylist, validatorFn: valid1);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
answerB = processList(input: mylist, validatorFn: valid2); answerB = processList(input: mylist, validatorFn: valid2);
} }
} }

@ -20,8 +20,7 @@ class AOC20201205 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
var maxSeatId = 0; var maxSeatId = 0;
for (var row in mylist) { for (var row in mylist) {
var seat = calcSeat(row); var seat = calcSeat(row);
@ -33,8 +32,7 @@ class AOC20201205 extends AOCBase {
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
var plane = List.generate(128, (i) => List.generate(8, (j) => false, growable: false), growable: false); var plane = List.generate(128, (i) => List.generate(8, (j) => false, growable: false), growable: false);
for (var row in mylist) { for (var row in mylist) {

@ -35,17 +35,13 @@ class AOC20201206 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
answerA = voterTabulation(rawList: mylist, isIntersection: false); answerA = voterTabulation(rawList: mylist, isIntersection: false);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
answerB = voterTabulation(rawList: mylist, isIntersection: true); answerB = voterTabulation(rawList: mylist, isIntersection: true);
} }
} }

@ -106,8 +106,7 @@ class AOC20201207 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
leaves = []; // Zero out list leaves = []; // Zero out list
trees = []; trees = [];
@ -140,8 +139,7 @@ class AOC20201207 extends AOCBase {
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
leaves = []; // Zero out list leaves = []; // Zero out list
trees = []; trees = [];

@ -5,8 +5,7 @@ import 'package:aoc2020/model/readdata.dart';
class AOC20201208 extends AOCBase { class AOC20201208 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
Comp().reset(); Comp().reset();
var index = 0; var index = 0;
var notDone = true; var notDone = true;
@ -21,8 +20,7 @@ class AOC20201208 extends AOCBase {
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var jmpList = <int>[]; var jmpList = <int>[];
var nopList = <int>[]; var nopList = <int>[];
var filename = (test ?? false) ? classStringTest : classString; var mylist = await ReadData.readFile<String>(classString, test: test);
var mylist = await ReadData.readFileString(filename);
for (var index = 0; index < mylist.length; index++) { for (var index = 0; index < mylist.length; index++) {
var parse = mylist[index].split(' '); var parse = mylist[index].split(' ');
if (parse[0] == 'jmp') jmpList.add(index); if (parse[0] == 'jmp') jmpList.add(index);

@ -8,8 +8,8 @@ class AOC20201209 extends AOCBase {
int index; int index;
var mylist = <num>[]; var mylist = <num>[];
void init(String filename, bool test) async { void init(bool test) async {
mylist = await ReadData.readFileNum(filename); mylist = await ReadData.readFile<num>(classString, test: test);
preamble = test ?? false ? testpreamble : runpreamble; preamble = test ?? false ? testpreamble : runpreamble;
index = preamble; index = preamble;
} }
@ -35,8 +35,7 @@ class AOC20201209 extends AOCBase {
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
await init(filename, test);
for (index = preamble; index < mylist.length && testGroup(index); index++); for (index = preamble; index < mylist.length && testGroup(index); index++);
if (index < mylist.length) { if (index < mylist.length) {
answerA = mylist[index]; answerA = mylist[index];
@ -47,8 +46,7 @@ class AOC20201209 extends AOCBase {
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
await init(filename, test);
index = 0; index = 0;
for (index = 0; index < mylist.length; index++) { for (index = 0; index < mylist.length; index++) {
var mysum = sumTest(answerA, index); var mysum = sumTest(answerA, index);

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201211 extends AOCBase { class AOC20201211 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201212 extends AOCBase { class AOC20201212 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201213 extends AOCBase { class AOC20201213 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201214 extends AOCBase { class AOC20201214 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201215 extends AOCBase { class AOC20201215 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201216 extends AOCBase { class AOC20201216 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201217 extends AOCBase { class AOC20201217 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201218 extends AOCBase { class AOC20201218 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201219 extends AOCBase { class AOC20201219 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201220 extends AOCBase { class AOC20201220 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201221 extends AOCBase { class AOC20201221 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201222 extends AOCBase { class AOC20201222 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201223 extends AOCBase { class AOC20201223 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201224 extends AOCBase { class AOC20201224 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -2,15 +2,19 @@ import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/readdata.dart'; import 'package:aoc2020/model/readdata.dart';
class AOC20201225 extends AOCBase { class AOC20201225 extends AOCBase {
var mylist = <String>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
}
@override @override
Future<void> a({bool test}) async { Future<void> a({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
@override @override
Future<void> b({bool test}) async { Future<void> b({bool test}) async {
var filename = (test ?? false) ? classStringTest : classString; await init(test);
var mylist = await ReadData.readFileString(filename);
} }
} }

@ -3,29 +3,19 @@ import 'dart:io';
class ReadData { class ReadData {
static const prefix = 'lib/data/'; static const prefix = 'lib/data/';
static Future<List<String>> readFileString(String classString) async { static Future<List<T>> readFile<T>(String classString, {bool test}) async {
var fileName = prefix + classString.toLowerCase() + '.data'; var fileName = prefix + classString.toLowerCase() + (test ?? false ? 'test' : '') + '.data';
var file = File(fileName); var file = File(fileName);
var contents = <String>[]; var contents = <T>[];
// print('open file "$fileName"');
if (await file.exists()) {
contents = await File(fileName).readAsLines();
} else {
print('File "$fileName" not found.');
}
return contents;
}
static Future<List<num>> readFileNum(String classString) async {
var fileName = prefix + classString.toLowerCase() + '.data';
var file = File(fileName);
var contents = <num>[];
// print('open file "$fileName"'); // print('open file "$fileName"');
if (await file.exists()) { if (await file.exists()) {
var contentStrings = await File(fileName).readAsLines(); var contentStrings = await File(fileName).readAsLines();
contents = contentStrings.map(num.parse).toList(); if (T == num) {
contents = contentStrings.map(num.parse).toList() as List<T>;
} else if (T == String) {
contents = contentStrings as List<T>;
}
} else { } else {
print('File "$fileName" not found.'); print('File "$fileName" not found.');
} }

Loading…
Cancel
Save