day 14
This commit is contained in:
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
A sample command-line application.
|
Advent of Code 2020
|
||||||
|
Written in Dart
|
||||||
Created from templates made available by Stagehand under a BSD-style
|
to execute:
|
||||||
[license](https://github.com/dart-lang/stagehand/blob/master/LICENSE).
|
dart run bin\main.dart --no-testOnly
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:aoc2020/aoc20201210.dart';
|
|||||||
import 'package:aoc2020/aoc20201211.dart';
|
import 'package:aoc2020/aoc20201211.dart';
|
||||||
import 'package:aoc2020/aoc20201212.dart';
|
import 'package:aoc2020/aoc20201212.dart';
|
||||||
import 'package:aoc2020/aoc20201213.dart';
|
import 'package:aoc2020/aoc20201213.dart';
|
||||||
|
import 'package:aoc2020/aoc20201214.dart';
|
||||||
import 'package:aoc2020/aocbase.dart';
|
import 'package:aoc2020/aocbase.dart';
|
||||||
import 'dart:mirrors';
|
import 'dart:mirrors';
|
||||||
|
|
||||||
@@ -34,6 +35,7 @@ class aoc2020 {
|
|||||||
AOC20201211(),
|
AOC20201211(),
|
||||||
AOC20201212(),
|
AOC20201212(),
|
||||||
AOC20201213(),
|
AOC20201213(),
|
||||||
|
AOC20201214(),
|
||||||
];
|
];
|
||||||
|
|
||||||
static void list() async {
|
static void list() async {
|
||||||
|
|||||||
@@ -1,16 +1,62 @@
|
|||||||
|
import 'package:any_base/any_base.dart';
|
||||||
import 'package:aoc2020/aocbase.dart';
|
import 'package:aoc2020/aocbase.dart';
|
||||||
import 'package:aoc2020/model/readdata.dart';
|
import 'package:aoc2020/model/readdata.dart';
|
||||||
|
import 'package:tuple/tuple.dart';
|
||||||
|
|
||||||
class AOC20201214 extends AOCBase {
|
class AOC20201214 extends AOCBase {
|
||||||
var mylist = <String>[];
|
var mylist = <String>[];
|
||||||
|
var rawMask = '';
|
||||||
|
Tuple2<int, int> mask;
|
||||||
|
var mem = <int, int>{};
|
||||||
|
|
||||||
|
static const max = 274877906943;
|
||||||
|
static const dec2bin = AnyBase(AnyBase.dec, AnyBase.bin);
|
||||||
|
static const bin2dec = AnyBase(AnyBase.bin, AnyBase.dec);
|
||||||
|
|
||||||
void init(bool test) async {
|
void init(bool test) async {
|
||||||
mylist = await ReadData.readFile<String>(classString, test: test);
|
mylist = await ReadData.readFile<String>(classString, test: test);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setMem(int address, int val) => mem[address] = applyMask(val);
|
||||||
|
int applyMask(int val) => (val | mask.item1) & mask.item2;
|
||||||
|
void setMask(String _rawMask) {
|
||||||
|
rawMask = _rawMask;
|
||||||
|
var _orMask = int.parse(bin2dec.convert(_rawMask.replaceAll('X', '0')));
|
||||||
|
var _andMask = int.parse(bin2dec.convert(_rawMask.replaceAll('X', '1')));
|
||||||
|
mask = Tuple2(_orMask, _andMask);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setMaskSection2(String _rawMask) {
|
||||||
|
// find all 'X's
|
||||||
|
// find position of all X's
|
||||||
|
// binarily cycle through all binary numbers posible make a list of masks
|
||||||
|
}
|
||||||
|
|
||||||
|
int applyMaskSection2(int val) => (val | mask.item1) & mask.item2;
|
||||||
|
|
||||||
|
void setMemSection2(int address, int val) {
|
||||||
|
mem[address] = applyMask(val);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> a({bool test}) async {
|
Future<void> a({bool test}) async {
|
||||||
|
|
||||||
await init(test);
|
await init(test);
|
||||||
|
mem.clear();
|
||||||
|
|
||||||
|
for (var line in mylist) {
|
||||||
|
var split1 = line.split(' = ');
|
||||||
|
var cmd = split1[0];
|
||||||
|
var val = split1[1];
|
||||||
|
if (cmd == 'mask') {
|
||||||
|
setMask(val);
|
||||||
|
} else {
|
||||||
|
var address = int.parse(cmd.split('[')[1].split(']')[0]);
|
||||||
|
var value = int.parse(val);
|
||||||
|
setMem(address, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
answerA = mem.values.reduce((a,b) => a + b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ environment:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
tuple: ^1.0.3
|
tuple: ^1.0.3
|
||||||
# path: ^1.6.0
|
any_base:
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
pedantic: ^1.7.0
|
pedantic: ^1.7.0
|
||||||
|
|||||||
Reference in New Issue
Block a user