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
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();
|
|
}
|
|
}
|