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.

52 lines
1.3 KiB
Dart

import 'package:aoc2020/aocbase.dart';
import 'package:aoc2020/model/point.dart';
import 'package:aoc2020/model/pos.dart';
import 'package:aoc2020/model/readdata.dart';
import 'package:tuple/tuple.dart';
import 'dart:core';
class AOC20201212 extends AOCBase {
var mylist = <String>[];
var loc = Point(0, 0);
var commands = <Tuple2>[];
void init(bool test) async {
mylist = await ReadData.readFile<String>(classString, test: test);
commands = mylist.map((line) => Tuple2(line.substring(0, 1), int.parse(line.substring(1)))).toList();
}
@override
Future<void> a({bool test}) async {
await init(test);
Pos().reset();
for (var command in commands) {
switch (command.item1) {
case 'L':
case 'R':
Pos().rotate(command);
break;
default:
Pos().move(command);
}
}
answerA = Pos().ns.abs() + Pos().ew.abs();
}
@override
Future<void> b({bool test}) async {
await init(test);
Pos().reset();
for (var command in commands) {
switch (command.item1) {
case 'L':
case 'R':
Pos().rotateSec2(command);
break;
default:
Pos().moveSec2(command);
}
}
answerB = Pos().ns.abs() + Pos().ew.abs();
}
}