Files
adventofcode2025/lib/day3/command.dart

62 lines
1.6 KiB
Dart
Raw Normal View History

2025-12-06 15:48:26 -06:00
import "dart:convert";
2025-12-04 14:57:15 -06:00
import "dart:io";
import "package:args/command_runner.dart";
class Day3Command extends Command {
// The [name] and [description] properties must be defined by every
// subclass.
@override
final name = "day3";
@override
final description = "Run Advent of Code 2025 Day 3";
Day3Command() {
// we can add command specific arguments here.
// [argParser] is automatically created by the parent class.
}
// [run] may also return a Future.
@override
Future<void> run() async {
// [argResults] is set before [run()] is called and contains the flags/options
// passed to this command.
if (argResults!.rest.length != 1) {
print(
"Expected 1 positional arguments, found ${argResults!.rest.length}",
);
}
var filePath = argResults!.rest[0];
print("Parsing file: $filePath");
var inputFile = File(filePath);
2025-12-06 15:48:26 -06:00
var part1Result = await inputFile
.openRead()
.transform(utf8.decoder)
.transform(LineSplitter())
.map((line) {
int tens = -1;
int ones = -1;
final chars = line.split("");
for (final (idx, char) in chars.indexed) {
final char_as_int = int.parse(char);
if (char_as_int > tens && idx < chars.length - 1) {
tens = char_as_int;
ones = -1;
} else if (char_as_int > ones) {
ones = char_as_int;
}
}
return tens * 10 + ones;
})
.reduce((left, right) => left + right);
print("Part 1 Answer: $part1Result");
2025-12-04 14:57:15 -06:00
}
}