Compare commits
1 Commits
master
..
02f18471cb
| Author | SHA1 | Date | |
|---|---|---|---|
| 02f18471cb |
@@ -1,14 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("java-convention")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":utils"))
|
|
||||||
|
|
||||||
annotationProcessor(Libs.Micronaut.processor)
|
|
||||||
|
|
||||||
implementation(Libs.eclipseCollections)
|
|
||||||
|
|
||||||
testImplementation(Libs.Jmh.core)
|
|
||||||
testAnnotationProcessor(Libs.Jmh.processor)
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Lines;
|
|
||||||
|
|
||||||
@Day(1)
|
|
||||||
public class Day01 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day01.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final int[] input;
|
|
||||||
|
|
||||||
public Day01(@Lines int[] input) {
|
|
||||||
this.input = input;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int fuel(int mass) {
|
|
||||||
return (mass / 3) - 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int part1() {
|
|
||||||
var total = 0;
|
|
||||||
for (var mass : input) {
|
|
||||||
total += fuel(mass);
|
|
||||||
}
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int part2() {
|
|
||||||
var total = 0;
|
|
||||||
for (var mass : input) {
|
|
||||||
int fuel = fuel(mass);
|
|
||||||
total += fuel;
|
|
||||||
while (true) {
|
|
||||||
fuel = fuel(fuel);
|
|
||||||
if (fuel <= 0) break;
|
|
||||||
total += fuel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.intcode.IntCodeInterpreter;
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Csv;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
|
|
||||||
@Day(2)
|
|
||||||
public class Day02 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day02.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final int[] input;
|
|
||||||
|
|
||||||
public Day02(@Csv int[] input) {
|
|
||||||
this.input = input;
|
|
||||||
}
|
|
||||||
|
|
||||||
private long runInterpreterWith(int noun, int verb) {
|
|
||||||
var interpreter = new IntCodeInterpreter(input);
|
|
||||||
interpreter.setNoun(noun);
|
|
||||||
interpreter.setVerb(verb);
|
|
||||||
interpreter.run();
|
|
||||||
return interpreter.getOutput();
|
|
||||||
}
|
|
||||||
|
|
||||||
public long part1() {
|
|
||||||
return runInterpreterWith(12, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int part2() {
|
|
||||||
for (var noun = 0; noun < 99; noun++) {
|
|
||||||
for (var verb = 0; verb < 99; verb++) {
|
|
||||||
if (runInterpreterWith(noun, verb) == 19690720L) return 100 * noun + verb;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.geometry.Direction2D;
|
|
||||||
import be.vandewalleh.aoc.geometry.Point2D;
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Lines;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Day(3)
|
|
||||||
public class Day03 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day03.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final String[] wireA;
|
|
||||||
private final String[] wireB;
|
|
||||||
|
|
||||||
public Day03(@Lines List<String> input) {
|
|
||||||
this.wireA = input.get(0).split(",");
|
|
||||||
this.wireB = input.get(1).split(",");
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<Point2D> path(String[] wire) {
|
|
||||||
var points = new ArrayList<Point2D>();
|
|
||||||
var point = Point2D.origin;
|
|
||||||
for (var section : wire) {
|
|
||||||
var direction = Direction2D.from(section.charAt(0));
|
|
||||||
var count = Integer.parseInt(section.substring(1));
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
point = point.translate(direction.point);
|
|
||||||
points.add(point);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return points;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int part1() {
|
|
||||||
var pathA = path(wireA);
|
|
||||||
var pathB = path(wireB);
|
|
||||||
|
|
||||||
var intersections = new HashSet<>(pathA);
|
|
||||||
intersections.retainAll(pathB);
|
|
||||||
|
|
||||||
return intersections.stream().mapToInt(Point2D::manhattanDistance).min().orElse(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int part2() {
|
|
||||||
var pathA = path(wireA);
|
|
||||||
var pathB = path(wireB);
|
|
||||||
|
|
||||||
var intersections = new HashSet<>(pathA);
|
|
||||||
intersections.retainAll(pathB);
|
|
||||||
|
|
||||||
return intersections.stream().mapToInt(p -> pathA.indexOf(p) + pathB.indexOf(p) + 2).min().orElse(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Text;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.stream.IntStream;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
@Day(4)
|
|
||||||
public class Day04 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day04.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final int min;
|
|
||||||
private final int max;
|
|
||||||
|
|
||||||
public Day04(@Text String input) {
|
|
||||||
var spl = input.split("-", 2);
|
|
||||||
min = Integer.parseInt(spl[0]);
|
|
||||||
max = Integer.parseInt(spl[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isNotDecreasing(int[] ints) {
|
|
||||||
for (int i = 0; i < 5; i++) {
|
|
||||||
int a = ints[i], b = ints[i + 1];
|
|
||||||
if (b < a) return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasPair(int[] ints) {
|
|
||||||
for (int i = 0; i < 5; i++) {
|
|
||||||
int a = ints[i], b = ints[i + 1];
|
|
||||||
if (a == b) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasGroup(int[] ints) {
|
|
||||||
var occurrences = new int[10];
|
|
||||||
for (int i = 0; i < 5; i++) {
|
|
||||||
int a = ints[i], b = ints[i + 1];
|
|
||||||
if (a == b) occurrences[a]++;
|
|
||||||
}
|
|
||||||
return Arrays.stream(occurrences).anyMatch(e -> e == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Stream<int[]> intStream() {
|
|
||||||
return IntStream.rangeClosed(min, max)
|
|
||||||
.mapToObj(String::valueOf)
|
|
||||||
.map(String::toCharArray)
|
|
||||||
.map(e -> {
|
|
||||||
var ints = new int[6];
|
|
||||||
for (int i = 0; i < 6; i++) {
|
|
||||||
ints[i] = Integer.parseInt(String.valueOf(e[i]));
|
|
||||||
}
|
|
||||||
return ints;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private long part1() {
|
|
||||||
return intStream()
|
|
||||||
.filter(this::isNotDecreasing)
|
|
||||||
.filter(this::hasPair)
|
|
||||||
.count();
|
|
||||||
}
|
|
||||||
|
|
||||||
private long part2() {
|
|
||||||
return intStream()
|
|
||||||
.filter(this::isNotDecreasing)
|
|
||||||
.filter(this::hasGroup)
|
|
||||||
.count();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.intcode.IntCodeInterpreter;
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Csv;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
|
|
||||||
@Day(5)
|
|
||||||
public class Day05 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day05.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final int[] input;
|
|
||||||
|
|
||||||
public Day05(@Csv int[] input) {
|
|
||||||
this.input = input;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Long part1() {
|
|
||||||
var interpreter = new IntCodeInterpreter(input);
|
|
||||||
interpreter.setInput(1);
|
|
||||||
interpreter.run();
|
|
||||||
return interpreter.getOutputs().peek();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Long part2() {
|
|
||||||
var interpreter = new IntCodeInterpreter(input);
|
|
||||||
interpreter.setInput(5);
|
|
||||||
interpreter.run();
|
|
||||||
return interpreter.getOutputs().peek();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
package be.vandewalleh.aoc;
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.factory.Days;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day;
|
|
||||||
import be.vandewalleh.aoc.utils.input.Lines;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Day(6)
|
|
||||||
public class Day06 {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
var day = Days.createDay(Day06.class);
|
|
||||||
System.out.println(day.part1());
|
|
||||||
System.out.println(day.part2());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final List<String> input;
|
|
||||||
|
|
||||||
public Day06(@Lines List<String> input) {
|
|
||||||
this.input = input;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Map<String, String> reverseOrbits = new HashMap<>();
|
|
||||||
|
|
||||||
private int countDirectOrbits() {
|
|
||||||
return reverseOrbits.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
private int countIndirectOrbits() {
|
|
||||||
var count = 0;
|
|
||||||
for (var key : reverseOrbits.keySet()) {
|
|
||||||
count += countIndirectOrbits(key);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int countIndirectOrbits(String key) {
|
|
||||||
var count = 0;
|
|
||||||
var currentKey = reverseOrbits.get(key);
|
|
||||||
while (currentKey != null) {
|
|
||||||
currentKey = reverseOrbits.get(currentKey);
|
|
||||||
if (currentKey != null) count++;
|
|
||||||
else return count;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<String> pathToCom(String key) {
|
|
||||||
var path = new ArrayList<String>();
|
|
||||||
var currentKey = reverseOrbits.get(key);
|
|
||||||
path.add(currentKey);
|
|
||||||
while (currentKey != null) {
|
|
||||||
currentKey = reverseOrbits.get(currentKey);
|
|
||||||
if (currentKey == null) return path;
|
|
||||||
else path.add(currentKey);
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int part1() {
|
|
||||||
for (var line : input) {
|
|
||||||
var split = line.split("\\)");
|
|
||||||
reverseOrbits.put(split[1], split[0]);
|
|
||||||
}
|
|
||||||
return countDirectOrbits() + countIndirectOrbits();
|
|
||||||
}
|
|
||||||
|
|
||||||
private int part2() {
|
|
||||||
var sanPath = pathToCom("SAN");
|
|
||||||
var youPath = pathToCom("YOU");
|
|
||||||
|
|
||||||
var common = new LinkedHashSet<>(sanPath);
|
|
||||||
common.retainAll(youPath);
|
|
||||||
|
|
||||||
String closestCommon = (String) common.toArray()[0];
|
|
||||||
return sanPath.indexOf(closestCommon) + youPath.indexOf(closestCommon);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.geometry;
|
|
||||||
|
|
||||||
public enum Direction2D {
|
|
||||||
Up(0, -1), Down(0, 1), Right(1, 0), Left(-1, 0);
|
|
||||||
|
|
||||||
public final Point2D point;
|
|
||||||
|
|
||||||
Direction2D(int x, int y) {
|
|
||||||
this.point = new Point2D(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Direction2D from(char direction) {
|
|
||||||
switch (direction) {
|
|
||||||
case 'U' -> {
|
|
||||||
return Direction2D.Up;
|
|
||||||
}
|
|
||||||
case 'D' -> {
|
|
||||||
return Direction2D.Down;
|
|
||||||
}
|
|
||||||
case 'R' -> {
|
|
||||||
return Direction2D.Right;
|
|
||||||
}
|
|
||||||
case 'L' -> {
|
|
||||||
return Direction2D.Left;
|
|
||||||
}
|
|
||||||
default -> throw new IllegalArgumentException("Unexpected value: " + direction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.geometry;
|
|
||||||
|
|
||||||
public record Point2D(int x, int y) {
|
|
||||||
public static Point2D origin = new Point2D(0, 0);
|
|
||||||
|
|
||||||
public int manhattanDistance() {
|
|
||||||
return Math.abs(x) + Math.abs(y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Point2D translate(Point2D other) {
|
|
||||||
return new Point2D(this.x + other.x, this.y + other.y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.intcode;
|
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Deque;
|
|
||||||
|
|
||||||
public class IntCodeInterpreter {
|
|
||||||
private final Deque<Long> outputs = new ArrayDeque<>();
|
|
||||||
private final long[] memory;
|
|
||||||
private long input;
|
|
||||||
|
|
||||||
public IntCodeInterpreter(int[] memory) {
|
|
||||||
this.memory = Arrays.stream(memory).asLongStream().toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNoun(long noun) {
|
|
||||||
memory[1] = noun;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVerb(long verb) {
|
|
||||||
memory[2] = verb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInput(long input) {
|
|
||||||
this.input = input;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getOutput() {
|
|
||||||
return memory[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// private ?
|
|
||||||
public Deque<Long> getOutputs() {
|
|
||||||
return outputs;
|
|
||||||
}
|
|
||||||
|
|
||||||
private long readArgument(Mode mode, long param) {
|
|
||||||
switch (mode) {
|
|
||||||
case Positional -> {
|
|
||||||
return memory[(int) param];
|
|
||||||
}
|
|
||||||
case Immediate -> {
|
|
||||||
return param;
|
|
||||||
}
|
|
||||||
default -> throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void writeArgument(long param, long value) {
|
|
||||||
memory[(int) param] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Mode[] modes(long instruction) {
|
|
||||||
var str = String.format("%5d", instruction).replace(' ', '0');
|
|
||||||
return new Mode[]{
|
|
||||||
Mode.of(str.charAt(2)),
|
|
||||||
Mode.of(str.charAt(1)),
|
|
||||||
Mode.of(str.charAt(0))
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
var pointer = 0;
|
|
||||||
|
|
||||||
loop:
|
|
||||||
while (true) {
|
|
||||||
var jumped = false;
|
|
||||||
var instruction = memory[pointer];
|
|
||||||
var opCode = OpCode.from(((int) instruction) % 100);
|
|
||||||
var args = Arrays.copyOfRange(memory, pointer + 1, pointer + opCode.params + 1);
|
|
||||||
var modes = modes(instruction);
|
|
||||||
switch (opCode) {
|
|
||||||
case Add -> {
|
|
||||||
var value = readArgument(modes[0], args[0]) + readArgument(modes[1], args[1]);
|
|
||||||
writeArgument(args[2], value);
|
|
||||||
}
|
|
||||||
case Multiply -> {
|
|
||||||
var value = readArgument(modes[0], args[0]) * readArgument(modes[1], args[1]);
|
|
||||||
writeArgument(args[2], value);
|
|
||||||
}
|
|
||||||
case In -> {
|
|
||||||
writeArgument(args[0], input);
|
|
||||||
}
|
|
||||||
case Out -> {
|
|
||||||
outputs.push(readArgument(modes[0], args[0]));
|
|
||||||
}
|
|
||||||
case JumpIfTrue -> {
|
|
||||||
if (readArgument(modes[0], args[0]) != 0) {
|
|
||||||
pointer = (int) readArgument(modes[1], args[1]);
|
|
||||||
jumped = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case JumpIfFalse -> {
|
|
||||||
if (readArgument(modes[0], args[0]) == 0) {
|
|
||||||
pointer = (int) readArgument(modes[1], args[1]);
|
|
||||||
jumped = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case LessThan -> {
|
|
||||||
var value = readArgument(modes[0], args[0]) < readArgument(modes[1], args[1]) ? 1 : 0;
|
|
||||||
writeArgument(args[2], value);
|
|
||||||
}
|
|
||||||
case Equals -> {
|
|
||||||
var value = readArgument(modes[0], args[0]) == readArgument(modes[1], args[1]) ? 1 : 0;
|
|
||||||
writeArgument(args[2], value);
|
|
||||||
}
|
|
||||||
case Halt -> {
|
|
||||||
break loop;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (!jumped) pointer += opCode.params + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.intcode;
|
|
||||||
|
|
||||||
public enum Mode {
|
|
||||||
Positional, Immediate;
|
|
||||||
|
|
||||||
public static Mode of(char representation) {
|
|
||||||
if (representation == '0') return Mode.Positional;
|
|
||||||
else if (representation == '1') return Mode.Immediate;
|
|
||||||
else throw new IllegalArgumentException("Unsupported Mode " + representation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.intcode;
|
|
||||||
|
|
||||||
public enum OpCode {
|
|
||||||
Add(1, 3),
|
|
||||||
Multiply(2, 3),
|
|
||||||
Halt(99, 0),
|
|
||||||
In(3, 1),
|
|
||||||
Out(4, 1),
|
|
||||||
JumpIfTrue(5, 2),
|
|
||||||
JumpIfFalse(6, 2),
|
|
||||||
LessThan(7, 3),
|
|
||||||
Equals(8, 3),
|
|
||||||
;
|
|
||||||
|
|
||||||
public final int value;
|
|
||||||
public final int params;
|
|
||||||
|
|
||||||
OpCode(int value, int params) {
|
|
||||||
this.value = value;
|
|
||||||
this.params = params;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static OpCode from(int value) {
|
|
||||||
for (OpCode opCode : OpCode.values()) {
|
|
||||||
if (opCode.value == value) return opCode;
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("Unsupported OpCode " + value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
132791
|
|
||||||
78272
|
|
||||||
114679
|
|
||||||
60602
|
|
||||||
59038
|
|
||||||
69747
|
|
||||||
61672
|
|
||||||
147972
|
|
||||||
92618
|
|
||||||
70186
|
|
||||||
125826
|
|
||||||
61803
|
|
||||||
78112
|
|
||||||
124864
|
|
||||||
58441
|
|
||||||
113062
|
|
||||||
105389
|
|
||||||
125983
|
|
||||||
90716
|
|
||||||
75544
|
|
||||||
148451
|
|
||||||
73739
|
|
||||||
127762
|
|
||||||
146660
|
|
||||||
128747
|
|
||||||
148129
|
|
||||||
138635
|
|
||||||
80095
|
|
||||||
60241
|
|
||||||
145455
|
|
||||||
98730
|
|
||||||
59139
|
|
||||||
146828
|
|
||||||
113550
|
|
||||||
91682
|
|
||||||
107415
|
|
||||||
129207
|
|
||||||
147635
|
|
||||||
104583
|
|
||||||
102245
|
|
||||||
73446
|
|
||||||
148657
|
|
||||||
96364
|
|
||||||
52033
|
|
||||||
69964
|
|
||||||
63609
|
|
||||||
98207
|
|
||||||
73401
|
|
||||||
65511
|
|
||||||
115034
|
|
||||||
126179
|
|
||||||
96664
|
|
||||||
85394
|
|
||||||
128472
|
|
||||||
79017
|
|
||||||
93222
|
|
||||||
55267
|
|
||||||
102446
|
|
||||||
133150
|
|
||||||
148985
|
|
||||||
95325
|
|
||||||
57713
|
|
||||||
77370
|
|
||||||
60879
|
|
||||||
111977
|
|
||||||
99362
|
|
||||||
91581
|
|
||||||
55201
|
|
||||||
137670
|
|
||||||
127159
|
|
||||||
128324
|
|
||||||
77217
|
|
||||||
86378
|
|
||||||
112847
|
|
||||||
108265
|
|
||||||
80355
|
|
||||||
75650
|
|
||||||
106222
|
|
||||||
67793
|
|
||||||
113891
|
|
||||||
74508
|
|
||||||
139463
|
|
||||||
69972
|
|
||||||
122753
|
|
||||||
135854
|
|
||||||
127770
|
|
||||||
101085
|
|
||||||
98304
|
|
||||||
61451
|
|
||||||
146719
|
|
||||||
61225
|
|
||||||
60468
|
|
||||||
83613
|
|
||||||
137436
|
|
||||||
126303
|
|
||||||
78759
|
|
||||||
70081
|
|
||||||
110671
|
|
||||||
113234
|
|
||||||
111563
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,6,1,19,1,5,19,23,2,6,23,27,1,27,5,31,2,9,31,35,1,5,35,39,2,6,39,43,2,6,43,47,1,5,47,51,2,9,51,55,1,5,55,59,1,10,59,63,1,63,6,67,1,9,67,71,1,71,6,75,1,75,13,79,2,79,13,83,2,9,83,87,1,87,5,91,1,9,91,95,2,10,95,99,1,5,99,103,1,103,9,107,1,13,107,111,2,111,10,115,1,115,5,119,2,13,119,123,1,9,123,127,1,5,127,131,2,131,6,135,1,135,5,139,1,139,6,143,1,143,6,147,1,2,147,151,1,151,5,0,99,2,14,0,0
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
R1000,U371,R195,U136,R804,U805,L450,U211,R768,U768,L548,U354,L736,U431,L152,U658,L670,D262,L277,U136,L290,U939,R501,U550,L931,D839,R335,D492,L25,U80,R878,U355,R653,U186,R423,D485,L793,D259,L739,U679,R508,D269,R432,D761,R97,D461,L675,U958,L58,U348,L719,D271,R144,U849,R384,U72,L84,U493,R947,U30,L356,D442,R327,U646,R825,U718,L329,D173,L949,D345,L971,D830,L93,U506,R245,D376,R322,D105,L604,D60,R298,D959,L165,D423,R180,D527,R956,D944,R785,U641,L794,D182,R975,D719,L166,U974,L224,U243,L666,U706,R796,D600,L856,D913,L988,D993,L259,U351,R487,D424,L335,U910,L437,D180,R621,D3,R878,D188,R254,D393,L727,U829,R352,U958,L327,D158,L854,D17,R143,D454,R889,D265,L345,U784,R35,D129,R77,U117,R951,D980,L866,U646,R242,D603,L562,U727,L496,U328,L380,D504,R644,U803,L530,D546,R328,D373,L489,U454,R74,D908,R366,U94,R604,D482,L573,D27,R943,U497,L782,D267,L391,U49,R528,D58,R155,D529,R227,D998,R558,D891,R224,U843,R512,U34,R92,U404,R752,U946,L338,D880,L513,D28,L856,D444,L187,U532,L187,U669,L306,U259,R287,D442,R478,U576,R702,U336,L305,U701,L754,D277,R760,D863,L717,U196,L221,U101,L334,D156,L961,D810,L67,D716,L457,D44,L505,D724,R716,D660,L36,D338,R54,U424,R730,U18,L65,D133,R149,U374,R356,D989,R519,U593,L444,D270,R328,U167,L748,D797,L434,U751,R444,D71,R158,D530,L630,U147,R909,D994,L957,U521,L644,D579,R673,U191,R935,U237,R600,D321,L671,U961,L884,U378,R534,D46,R275,U845,R571,U245,L507,U273,R995,U408,L14,D799,L955,D534,R579,D94,R705,D391,R469,D381,R620,U162,R907,D826,R824,U167,L734,U922,L484
|
|
||||||
L1007,D620,R853,U77,L13,U473,L253,D410,R897,U464,L862,U281,L650,D470,R87,D204,L896,U670,L864,D950,L75,D320,R901,D785,L653,D225,L857,U616,L143,U940,L664,U131,L547,D745,R636,U569,L50,U454,R288,D254,L36,U377,L609,U929,L714,U85,L939,U923,L566,D280,R243,U948,R447,D7,R908,D151,R824,D432,R34,D81,L458,U745,L420,D982,L625,U910,L729,D274,R910,U322,L984,D88,L700,D349,L932,U510,R625,U88,L252,U785,L378,D101,R299,U66,L476,U696,R236,D46,R590,U157,R461,U305,L269,D487,L676,U467,R319,D524,R75,U65,L478,U861,L238,D716,R888,D12,L184,D578,R266,D226,L656,D172,L752,U124,L831,U810,L663,U538,R417,D770,L359,U1,R12,U791,L332,U272,R574,D942,L857,U447,R310,U342,L713,D258,R590,D585,R129,D115,R832,D967,R981,D159,R864,U423,R268,U519,L52,D493,R445,D657,R885,U166,R155,D264,R51,D632,R525,D875,R617,U898,L556,D386,L143,U278,L767,D389,R821,U869,R286,D90,R289,U54,R15,D764,R46,D674,R983,U49,R959,U779,R958,D247,R483,U156,L18,U12,L178,U540,L499,U487,L544,D336,R814,U267,R145,D135,L920,D902,L933,D507,L997,U361,L577,U425,L773,D782,R117,U851,R998,U503,R902,U781,L161,U98,L653,U633,L91,U629,L138,D19,R147,D756,R364,D529,L764,U913,L118,U856,R774,D621,R151,U154,R737,D960,R86,U458,R991,D481,R560,D858,R223,D6,R931,D301,R552,D797,R284,U368,L967,D686,R940,U410,R137,D156,L6,U643,L445,D999,R888,D277,L852,U210,L777,D36,R103,D652,R120,D67,L642,D527,R913,D858,R69,D433,R864,U75,L531,U456,L664,D452,R801,U851,L824,D278,L526,U133,R200,U768,R15,U393,R982,U287,L38,D114,R86,U299,L819,D891,R379,D601,L244
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
272091-815432
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
3,225,1,225,6,6,1100,1,238,225,104,0,1101,11,91,225,1002,121,77,224,101,-6314,224,224,4,224,1002,223,8,223,1001,224,3,224,1,223,224,223,1102,74,62,225,1102,82,7,224,1001,224,-574,224,4,224,102,8,223,223,1001,224,3,224,1,224,223,223,1101,28,67,225,1102,42,15,225,2,196,96,224,101,-4446,224,224,4,224,102,8,223,223,101,6,224,224,1,223,224,223,1101,86,57,225,1,148,69,224,1001,224,-77,224,4,224,102,8,223,223,1001,224,2,224,1,223,224,223,1101,82,83,225,101,87,14,224,1001,224,-178,224,4,224,1002,223,8,223,101,7,224,224,1,223,224,223,1101,38,35,225,102,31,65,224,1001,224,-868,224,4,224,1002,223,8,223,1001,224,5,224,1,223,224,223,1101,57,27,224,1001,224,-84,224,4,224,102,8,223,223,1001,224,7,224,1,223,224,223,1101,61,78,225,1001,40,27,224,101,-89,224,224,4,224,1002,223,8,223,1001,224,1,224,1,224,223,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,1008,677,226,224,1002,223,2,223,1006,224,329,101,1,223,223,8,226,677,224,102,2,223,223,1005,224,344,101,1,223,223,1107,226,677,224,102,2,223,223,1006,224,359,101,1,223,223,1007,226,226,224,102,2,223,223,1006,224,374,101,1,223,223,7,677,677,224,102,2,223,223,1005,224,389,1001,223,1,223,108,677,677,224,1002,223,2,223,1005,224,404,101,1,223,223,1008,226,226,224,102,2,223,223,1005,224,419,1001,223,1,223,1107,677,226,224,102,2,223,223,1005,224,434,1001,223,1,223,1108,677,677,224,102,2,223,223,1006,224,449,1001,223,1,223,7,226,677,224,102,2,223,223,1005,224,464,101,1,223,223,1008,677,677,224,102,2,223,223,1005,224,479,101,1,223,223,1007,226,677,224,1002,223,2,223,1006,224,494,101,1,223,223,8,677,226,224,1002,223,2,223,1005,224,509,101,1,223,223,1007,677,677,224,1002,223,2,223,1006,224,524,101,1,223,223,107,226,226,224,102,2,223,223,1006,224,539,101,1,223,223,107,226,677,224,102,2,223,223,1005,224,554,1001,223,1,223,7,677,226,224,102,2,223,223,1006,224,569,1001,223,1,223,107,677,677,224,1002,223,2,223,1005,224,584,101,1,223,223,1107,677,677,224,102,2,223,223,1005,224,599,101,1,223,223,1108,226,677,224,102,2,223,223,1006,224,614,101,1,223,223,8,226,226,224,102,2,223,223,1006,224,629,101,1,223,223,108,226,677,224,102,2,223,223,1005,224,644,1001,223,1,223,108,226,226,224,102,2,223,223,1005,224,659,101,1,223,223,1108,677,226,224,102,2,223,223,1006,224,674,1001,223,1,223,4,223,99,226
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,18 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("kotlin-convention")
|
|
||||||
kotlin("kapt")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":utils"))
|
|
||||||
|
|
||||||
kapt(Libs.Micronaut.processor)
|
|
||||||
|
|
||||||
implementation(Libs.Slf4J.api)
|
|
||||||
runtimeOnly(Libs.Slf4J.simple)
|
|
||||||
|
|
||||||
implementation(Libs.eclipseCollections)
|
|
||||||
|
|
||||||
testImplementation(Libs.Jmh.core)
|
|
||||||
kaptTest(Libs.Jmh.processor)
|
|
||||||
}
|
|
||||||
@@ -1,202 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.days.geometry.Grid
|
|
||||||
import be.vandewalleh.aoc.days.geometry.gridOf
|
|
||||||
import be.vandewalleh.aoc.days.geometry.transformations
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
import be.vandewalleh.aoc.utils.input.Groups
|
|
||||||
import kotlin.math.sqrt
|
|
||||||
|
|
||||||
private typealias Tile = Grid<Char>
|
|
||||||
|
|
||||||
@Day(20)
|
|
||||||
class Day20(@Groups val input: List<List<String>>) {
|
|
||||||
private val tiles: Map<Int, Tile> = input
|
|
||||||
.map { it[0].let { it.substring(5 until it.indexOf(':')).toInt() } to it.drop(1) }
|
|
||||||
.associate { (id, tile) -> id to gridOf(tile) }
|
|
||||||
|
|
||||||
private fun Tile.allEdges() = listOf(edges(), edges().map { it.reversed() }).flatten()
|
|
||||||
|
|
||||||
private fun edgesMatch(a: Tile, b: Tile): Boolean {
|
|
||||||
val edges = b.allEdges()
|
|
||||||
return a.allEdges().any { a -> edges.any { a == it } }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun combine(tiles: List<Tile>) = sequence {
|
|
||||||
for (i in 0 until tiles.lastIndex) {
|
|
||||||
val a = tiles[i]
|
|
||||||
for (j in i + 1 until tiles.size) {
|
|
||||||
val b = tiles[j]
|
|
||||||
yield(a to b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun tilesByNeighbourCount(): MutableMap<Int, MutableList<Tile>> {
|
|
||||||
val neighbours = combine(tiles.values.toList())
|
|
||||||
.filter { (a, b) -> edgesMatch(a, b) }
|
|
||||||
.map { it.toList() }
|
|
||||||
.flatten()
|
|
||||||
.groupBy { it }
|
|
||||||
.values
|
|
||||||
|
|
||||||
val map = mutableMapOf<Int, MutableList<Tile>>()
|
|
||||||
for (neighbour in neighbours) {
|
|
||||||
map.computeIfAbsent(neighbour.size) { mutableListOf() }.add(neighbour.first())
|
|
||||||
}
|
|
||||||
return map
|
|
||||||
}
|
|
||||||
|
|
||||||
fun part1() = tilesByNeighbourCount()[2]!!
|
|
||||||
.map { tile -> tiles.entries.find { it.value == tile }!!.key.toLong() }
|
|
||||||
.reduce { acc, id -> acc * id }
|
|
||||||
|
|
||||||
private fun neighboursCount(grid: Grid<*>, x: Int, y: Int): Int {
|
|
||||||
var neighboursCount = 2
|
|
||||||
if (x != 0 && x != grid.lastColumnIndex) neighboursCount++
|
|
||||||
if (y != 0 && y != grid.lastRowIndex) neighboursCount++
|
|
||||||
return neighboursCount
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun isLeftOk(grid: Grid<Tile?>, x: Int, y: Int, candidate: Tile) = grid[x - 1, y]
|
|
||||||
?.let { left -> candidate.firstColumn() == left.lastColumn() }
|
|
||||||
?: true
|
|
||||||
|
|
||||||
private fun isTopOk(grid: Grid<Tile?>, x: Int, y: Int, candidate: Tile) = grid[x, y - 1]
|
|
||||||
?.let { top -> candidate.firstRow() == top.lastRow() }
|
|
||||||
?: true
|
|
||||||
|
|
||||||
private fun isBottomOk(grid: Grid<*>, x: Int, y: Int, candidate: Tile, neighbours: Map<Int, List<Tile>>) =
|
|
||||||
if (y == grid.lastRowIndex) true
|
|
||||||
else neighbours[neighboursCount(grid, x, y + 1)]!!
|
|
||||||
.filterNot { it == candidate }
|
|
||||||
.count { it.transformations().any { candidate.lastColumn() == it.firstColumn() } } == 1
|
|
||||||
|
|
||||||
private fun isRightOk(grid: Grid<*>, x: Int, y: Int, candidate: Tile, neighbours: Map<Int, List<Tile>>) =
|
|
||||||
if (x == grid.lastColumnIndex) true
|
|
||||||
else neighbours[neighboursCount(grid, x + 1, y)]!!
|
|
||||||
.filterNot { it == candidate }
|
|
||||||
.count { it.transformations().any { candidate.lastRow() == it.firstRow() } } == 1
|
|
||||||
|
|
||||||
private fun assembleGrid(): Grid<Tile?> {
|
|
||||||
val size = sqrt(tiles.size.toDouble()).toInt()
|
|
||||||
val grid: Grid<Tile?> = Grid(Array(size) { Array(size) { null } })
|
|
||||||
|
|
||||||
val neighbours: MutableMap<Int, MutableList<Tile>> = tilesByNeighbourCount()
|
|
||||||
|
|
||||||
for (y in 0 until grid.height) {
|
|
||||||
for (x in 0 until grid.width) {
|
|
||||||
val neighboursCount = neighboursCount(grid, x, y)
|
|
||||||
val candidates = neighbours[neighboursCount]!!
|
|
||||||
|
|
||||||
val conditions = mutableListOf<(Tile) -> Boolean>()
|
|
||||||
conditions += { isLeftOk(grid, x, y, it) }
|
|
||||||
conditions += { isTopOk(grid, x, y, it) }
|
|
||||||
|
|
||||||
// why is this condition needed ?
|
|
||||||
if (x == 0 && y == 0) {
|
|
||||||
conditions += { isBottomOk(grid, x, y, it, neighbours) }
|
|
||||||
conditions += { isRightOk(grid, x, y, it, neighbours) }
|
|
||||||
}
|
|
||||||
|
|
||||||
var found: Tile? = null
|
|
||||||
|
|
||||||
outer@ for (candidate in candidates) {
|
|
||||||
for (transform in candidate.transformations()) {
|
|
||||||
if (conditions.all { it(transform) }) {
|
|
||||||
found = transform
|
|
||||||
candidates.remove(candidate)
|
|
||||||
break@outer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
check(found != null)
|
|
||||||
grid[x, y] = found
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return grid
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun removeGaps(grid: Grid<Tile?>) {
|
|
||||||
for (y in 0 until grid.height) {
|
|
||||||
for (x in 0 until grid.width) {
|
|
||||||
grid[x, y] = removeGaps(grid[x, y]!!)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun removeGaps(tile: Tile): Tile {
|
|
||||||
val oldData: ArrayList<ArrayList<Char>> = tile.data
|
|
||||||
val newData = ArrayList<ArrayList<Char>>(oldData.size - 2)
|
|
||||||
oldData.subList(1, oldData.size - 1).forEach { d ->
|
|
||||||
val l = ArrayList<Char>().apply {
|
|
||||||
addAll(d.subList(1, d.size - 1))
|
|
||||||
}
|
|
||||||
newData.add(l)
|
|
||||||
}
|
|
||||||
return Tile(newData)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun gridToTile(grid: Grid<Tile?>): Tile {
|
|
||||||
val newData = ArrayList<ArrayList<Char>>()
|
|
||||||
for (y in 0 until grid.height) {
|
|
||||||
val row = grid.row(y)
|
|
||||||
for (yy in 0 until row[0]!!.height) {
|
|
||||||
val combinedRow = ArrayList<Char>().also { newData.add(it) }
|
|
||||||
row.forEach { combinedRow.addAll(it!!.row(yy)) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Tile(newData)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Tile.subGridData(startX: Int, startY: Int, width: Int, height: Int): List<List<Char>> {
|
|
||||||
val newData = ArrayList<ArrayList<Char>>()
|
|
||||||
for (y in startY until startY + height) {
|
|
||||||
val row = ArrayList<Char>().also { newData.add(it) }
|
|
||||||
for (x in startX until startX + width) {
|
|
||||||
row.add(this[x, y]!!)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newData
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun List<List<Char>>.isMonster(monster: List<List<Char>>): Boolean {
|
|
||||||
val monsterRe = monster.joinToString("") { it.joinToString("") }.replace(" ", ".").toRegex()
|
|
||||||
val str = this.joinToString("") { it.joinToString("") }
|
|
||||||
return monsterRe.matches(str)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun part2(): Int {
|
|
||||||
val grid = assembleGrid()
|
|
||||||
removeGaps(grid)
|
|
||||||
val megaTile = gridToTile(grid)
|
|
||||||
|
|
||||||
val monster: List<List<Char>> = """
|
|
||||||
| # |
|
|
||||||
|# ## ## ###|
|
|
||||||
| # # # # # # |
|
|
||||||
""".trimMargin("|").lines().map { it.toCharArray().dropLast(1) }
|
|
||||||
|
|
||||||
val monsterWidth = monster[0].size
|
|
||||||
val monsterHeight = 3
|
|
||||||
val monsterSquares = monster.flatten().count { it == '#' }
|
|
||||||
val squares = megaTile.data.flatten().count { it == '#' }
|
|
||||||
|
|
||||||
for (g in megaTile.transformations()) {
|
|
||||||
var count = 0
|
|
||||||
for (y in 0 until g.lastRowIndex - monsterHeight) {
|
|
||||||
for (x in 0 until g.lastColumnIndex - monsterWidth) {
|
|
||||||
val subgrid = g.subGridData(x, y, monsterWidth, monsterHeight)
|
|
||||||
if (subgrid.isMonster(monster)) {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count != 0) return squares - (count * monsterSquares)
|
|
||||||
}
|
|
||||||
error("No monsters found")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
|
||||||
|
|
||||||
@Day(25)
|
|
||||||
class Day25(@Lines val input: IntArray) {
|
|
||||||
private val doorPublicKey = input[0]
|
|
||||||
private val cardPublicKey = input[1]
|
|
||||||
|
|
||||||
private fun encryptionKey(loopSize: Int, publicKey: Int) = transformSubjectNumber(loopSize, publicKey)
|
|
||||||
|
|
||||||
private fun transformSubjectNumber(loopSize: Int, subjectNumber: Int): Int {
|
|
||||||
var number = 1L
|
|
||||||
repeat(loopSize) {
|
|
||||||
number *= subjectNumber
|
|
||||||
number %= 20201227
|
|
||||||
}
|
|
||||||
return number.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun transformSubjectNumberStartingWith(currentNumber: Long, subjectNumber: Int): Long {
|
|
||||||
var number = currentNumber
|
|
||||||
number *= subjectNumber
|
|
||||||
number %= 20201227
|
|
||||||
return number
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun findLoopSize(expectedPublicKey: Long): Int {
|
|
||||||
var computedPublicKey = 1L
|
|
||||||
var loopSize = 0
|
|
||||||
do {
|
|
||||||
computedPublicKey = transformSubjectNumberStartingWith(computedPublicKey, 7)
|
|
||||||
loopSize++
|
|
||||||
} while (computedPublicKey != expectedPublicKey)
|
|
||||||
return loopSize
|
|
||||||
}
|
|
||||||
|
|
||||||
fun part1(): Int {
|
|
||||||
val cardLoopSize = findLoopSize(cardPublicKey.toLong())
|
|
||||||
return encryptionKey(cardLoopSize, doorPublicKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.factory.createDay
|
|
||||||
|
|
||||||
fun main() = with(createDay<Day15>()) {
|
|
||||||
println(part1())
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
1327981
|
|
||||||
2822615
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
org.slf4j.simpleLogger.logFile=System.out
|
|
||||||
org.slf4j.simpleLogger.showDateTime=true
|
|
||||||
org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
|
|
||||||
org.slf4j.simpleLogger.defaultLogLevel=info
|
|
||||||
org.slf4j.simpleLogger.log.io.micronaut=info
|
|
||||||
org.slf4j.simpleLogger.log.io.micronaut.context.lifecycle=info
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("aoc")
|
|
||||||
}
|
|
||||||
|
|
||||||
application {
|
|
||||||
mainClass.set("be.vandewalleh.aoc.days.MainKt")
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
target area: x=20..30, y=-10..-5
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
target area: x=139..187, y=-148..-89
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import nre, strutils
|
|
||||||
|
|
||||||
let
|
|
||||||
regex = re"x=(-?\d+)..(-?\d+), y=(-?\d+)..(-?\d+)"
|
|
||||||
data = readFile("input.txt")
|
|
||||||
captures = data.find(regex).get.captures
|
|
||||||
x1 = captures[0].parseInt()
|
|
||||||
x2 = captures[1].parseInt()
|
|
||||||
y1 = captures[2].parseInt()
|
|
||||||
y2 = captures[3].parseInt()
|
|
||||||
minX = min(x1, x2)
|
|
||||||
maxX = max(x1, x2)
|
|
||||||
minY = min(y1, y2)
|
|
||||||
maxY = max(y1, y2)
|
|
||||||
|
|
||||||
proc land(dx: int, dy: int): int =
|
|
||||||
var dx = dx
|
|
||||||
var dy = dy
|
|
||||||
var x = 0
|
|
||||||
var y = 0
|
|
||||||
var high = y
|
|
||||||
while x < maxX and y > minY:
|
|
||||||
x += dx
|
|
||||||
y += dy
|
|
||||||
if dx > 0: dx -= 1
|
|
||||||
elif dx < 0: dx += 1
|
|
||||||
dy -= 1
|
|
||||||
high = max(high, y)
|
|
||||||
if x in minX..maxX and y in minY..maxY:
|
|
||||||
return high
|
|
||||||
return -1
|
|
||||||
|
|
||||||
var high = 0
|
|
||||||
var match = 0
|
|
||||||
for x in -1000..1000:
|
|
||||||
for y in -1000..1000:
|
|
||||||
let res = land(x, y)
|
|
||||||
if res != -1: match += 1
|
|
||||||
high = max(res, high)
|
|
||||||
|
|
||||||
echo(high)
|
|
||||||
echo(match)
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Counter<K> : Iterable<Map.Entry<K, Long>> {
|
|
||||||
private val map = HashMap<K, Long>()
|
|
||||||
operator fun get(key: K) = map[key] ?: 0L
|
|
||||||
|
|
||||||
operator fun set(key: K, count: Long) {
|
|
||||||
map[key] = count
|
|
||||||
}
|
|
||||||
|
|
||||||
operator fun set(key: K, count: Int) {
|
|
||||||
if (count == 0)
|
|
||||||
map.remove(key)
|
|
||||||
else
|
|
||||||
map[key] = count.toLong()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun toMap() = map.toMap(HashMap())
|
|
||||||
override fun toString() = map.toString()
|
|
||||||
|
|
||||||
fun minValue() = map.minOf { it.value }
|
|
||||||
fun maxValue() = map.maxOf { it.value }
|
|
||||||
|
|
||||||
override fun iterator() = toMap().iterator()
|
|
||||||
|
|
||||||
companion object
|
|
||||||
}
|
|
||||||
|
|
||||||
operator fun <T> Counter.Companion.invoke(items: Iterable<T>) = Counter<T>().apply { items.forEach { this[it] += 1 } }
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day01 : BaseDay() {
|
|
||||||
private val items by lazy { input.lines.ints }
|
|
||||||
|
|
||||||
override fun part1(): Int {
|
|
||||||
var count = 0
|
|
||||||
for (i in 0 until items.size - 1) {
|
|
||||||
if (items[i] < items[i + 1]) count++
|
|
||||||
}
|
|
||||||
return count
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Int {
|
|
||||||
var count = 0
|
|
||||||
for (i in 0 until items.size - 3) {
|
|
||||||
val a = items.drop(i).take(3).sum()
|
|
||||||
val b = items.drop(i + 1).take(3).sum()
|
|
||||||
if (b > a) count++
|
|
||||||
}
|
|
||||||
return count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day02 : BaseDay() {
|
|
||||||
private val lines by lazy { input.lines.value.map { it.split(' ').let { it[0] to it[1].toInt() } } }
|
|
||||||
|
|
||||||
override fun part1(): Int {
|
|
||||||
var horizontalPosition = 0
|
|
||||||
var depth = 0
|
|
||||||
lines.forEach { (direction, value) ->
|
|
||||||
when (direction) {
|
|
||||||
"forward" -> horizontalPosition += value
|
|
||||||
"down" -> depth += value
|
|
||||||
"up" -> depth -= value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return horizontalPosition * depth
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Any {
|
|
||||||
var horizontalPosition = 0
|
|
||||||
var depth = 0
|
|
||||||
var aim = 0
|
|
||||||
lines.forEach { (direction, value) ->
|
|
||||||
when (direction) {
|
|
||||||
"forward" -> {
|
|
||||||
horizontalPosition += value
|
|
||||||
depth += aim * value
|
|
||||||
}
|
|
||||||
"down" -> aim += value
|
|
||||||
"up" -> aim -= value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return horizontalPosition * depth
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day03 : BaseDay() {
|
|
||||||
override fun part1(): Int {
|
|
||||||
val moreOnes = input.lines.value[0].indices
|
|
||||||
.map { i -> input.lines.value.map { it[i] } }
|
|
||||||
.map { it.count { it == '1' } >= it.size / 2 }
|
|
||||||
|
|
||||||
val gamma = moreOnes.joinToString("") { if (it) "1" else "0" }.toInt(radix = 2)
|
|
||||||
val epsilon = moreOnes.joinToString("") { if (!it) "1" else "0" }.toInt(radix = 2)
|
|
||||||
return gamma * epsilon
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Any {
|
|
||||||
val o2 = findNumber(input.lines.value) { ones, zeros -> if (ones >= zeros) '1' else '0' }
|
|
||||||
val co2 = findNumber(input.lines.value) { ones, zeros -> if (zeros <= ones) '0' else '1' }
|
|
||||||
return o2 * co2
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun findNumber(input: List<String>, keep: (Int, Int) -> Char): Int {
|
|
||||||
var numbers = input
|
|
||||||
for (i in this.input.lines.value[0].indices) {
|
|
||||||
if (numbers.size == 1) break
|
|
||||||
val eachCount = numbers.map { it[i] }.groupingBy { it }.eachCount()
|
|
||||||
val ones = eachCount['1'] ?: 0
|
|
||||||
val zeros = eachCount['0'] ?: 0
|
|
||||||
val maj = keep(ones, zeros)
|
|
||||||
numbers = numbers.filter { it[i] == maj }
|
|
||||||
}
|
|
||||||
return numbers[0].toInt(2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day04 : BaseDay() {
|
|
||||||
private val numbers by lazy { input.lines.value[0].split(',').map { it.toInt() } }
|
|
||||||
private val boards by lazy {
|
|
||||||
input.text.split("\n\n")
|
|
||||||
.drop(1)
|
|
||||||
.map { it.lines().map { it.trim().split("\\s+".toRegex()).map { it.toInt() } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
private val results by lazy { boards.map { playBoard(it) } }
|
|
||||||
|
|
||||||
override fun part1() = results.minByOrNull { it.first }!!.second
|
|
||||||
override fun part2() = results.maxByOrNull { it.first }!!.second
|
|
||||||
|
|
||||||
private fun playBoard(board: List<List<Int>>): Pair<Int, Int> {
|
|
||||||
for (round in numbers.indices) {
|
|
||||||
val usedNumbers = numbers.take(round)
|
|
||||||
for (line in board + board[0].indices.map { col -> board.map { it[col] } }) {
|
|
||||||
if (usedNumbers.containsAll(line)) {
|
|
||||||
val unmarkedNumbers = board.flatten().toMutableSet().also { it.removeAll(usedNumbers) }
|
|
||||||
return round to unmarkedNumbers.sum() * usedNumbers.last()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
error("No wins")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day05 : BaseDay() {
|
|
||||||
|
|
||||||
data class Point(val x: Int, val y: Int)
|
|
||||||
|
|
||||||
private val re = "(\\d+),(\\d+) -> (\\d+),(\\d+)".toRegex()
|
|
||||||
|
|
||||||
private fun path(start: Point, end: Point): Sequence<Point> {
|
|
||||||
val dx = end.x.compareTo(start.x)
|
|
||||||
val dy = end.y.compareTo(start.y)
|
|
||||||
return generateSequence(start) {
|
|
||||||
if (it == end) null
|
|
||||||
else Point(it.x + dx, it.y + dy)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part1(): Int {
|
|
||||||
val visited = HashMap<Point, Int>()
|
|
||||||
input.lines.value
|
|
||||||
.map {
|
|
||||||
re.find(it)!!.destructured.let { (x1, y1, x2, y2) ->
|
|
||||||
Point(x1.toInt(), y1.toInt()) to Point(x2.toInt(), y2.toInt())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.filter { (start, end) -> start.x == end.x || start.y == end.y }
|
|
||||||
.flatMap { (start, end) -> path(start, end) }
|
|
||||||
.forEach { visited.compute(it) { _, value -> (value ?: 0) + 1 } }
|
|
||||||
|
|
||||||
return visited.values.count { it >= 2 }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Int {
|
|
||||||
val visited = HashMap<Point, Int>()
|
|
||||||
input.lines.value
|
|
||||||
.map {
|
|
||||||
re.find(it)!!.destructured.let { (x1, y1, x2, y2) ->
|
|
||||||
Point(x1.toInt(), y1.toInt()) to Point(x2.toInt(), y2.toInt())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.flatMap { (start, end) -> path(start, end) }
|
|
||||||
.forEach { visited.compute(it) { _, value -> (value ?: 0) + 1 } }
|
|
||||||
|
|
||||||
return visited.values.count { it >= 2 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day06 : BaseDay() {
|
|
||||||
override fun part1() = run(80)
|
|
||||||
override fun part2() = run(256)
|
|
||||||
|
|
||||||
private fun run(days: Int): Long {
|
|
||||||
var fish = LongArray(9)
|
|
||||||
input.csv.ints.forEach { fish[it] = fish[it] + 1 }
|
|
||||||
|
|
||||||
var newFish: LongArray
|
|
||||||
for (day in 1..days) {
|
|
||||||
newFish = LongArray(9)
|
|
||||||
for (timer in 8 downTo 1) {
|
|
||||||
newFish[timer - 1] = fish[timer]
|
|
||||||
}
|
|
||||||
newFish[8] = fish[0]
|
|
||||||
newFish[6] = fish[0] + newFish[6]
|
|
||||||
fish = newFish
|
|
||||||
}
|
|
||||||
return fish.sum()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
import kotlin.math.abs
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day07 : BaseDay() {
|
|
||||||
|
|
||||||
override fun part1(): Any {
|
|
||||||
val ints = input.csv.ints
|
|
||||||
return (ints.minOrNull()!!..ints.maxOrNull()!!).minOf { target -> ints.sumOf { abs(it - target) } }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun calc(position: Int, target: Int): Int {
|
|
||||||
val diff = abs(position - target)
|
|
||||||
var sum = 0
|
|
||||||
for (i in 1..diff) {
|
|
||||||
sum += diff - i + 1
|
|
||||||
}
|
|
||||||
return sum
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Any {
|
|
||||||
val ints = input.csv.ints
|
|
||||||
return (ints.minOrNull()!!..ints.maxOrNull()!!).minOf { target -> ints.sumOf { calc(it, target) } }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day08 : BaseDay() {
|
|
||||||
|
|
||||||
override fun part1() = input.lines.value
|
|
||||||
.map { it.split(" | ")[1].split(" ") }
|
|
||||||
.sumOf { it.count { it.length in setOf(2, 3, 4, 7) } }
|
|
||||||
|
|
||||||
override fun part2() = input.lines.value
|
|
||||||
.map { it.split(" | ").map { it.split(" ") } }
|
|
||||||
.sumOf { (pattern, digits) ->
|
|
||||||
val patterns = decodePatterns(pattern)
|
|
||||||
digits.map { patterns[it.sortChars()] }.joinToString("").toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun decodePatterns(patterns: List<String>): Map<String, Int> {
|
|
||||||
val result = Array(10) { "" }
|
|
||||||
|
|
||||||
result[1] = patterns.single { it.length == 2 }
|
|
||||||
result[7] = patterns.single { it.length == 3 }
|
|
||||||
result[4] = patterns.single { it.length == 4 }
|
|
||||||
result[8] = patterns.single { it.length == 7 }
|
|
||||||
|
|
||||||
val frequency = patterns.flatMap { it.toCharArray().toList() }.groupBy { it }.mapValues { it.value.size }
|
|
||||||
val a = (result.letters(7) - result.letters(1)).first()
|
|
||||||
val b = frequency.findKey { it.value == 6 }
|
|
||||||
val c = frequency.findKey { it.value == 8 && it.key != a }
|
|
||||||
val d = frequency.findKey { it.value == 7 && it.key in result.letters(4) }
|
|
||||||
val e = frequency.findKey { it.value == 4 }
|
|
||||||
val f = frequency.findKey { it.value == 9 }
|
|
||||||
|
|
||||||
result[0] = patterns.find { it.length == 6 && d !in it }!!
|
|
||||||
result[2] = patterns.find { it.length == 5 && b !in it && f !in it }!!
|
|
||||||
result[3] = patterns.find { it.length == 5 && b !in it && e !in it }!!
|
|
||||||
result[5] = patterns.find { it.length == 5 && c !in it && e !in it }!!
|
|
||||||
result[6] = patterns.find { it.length == 6 && c !in it }!!
|
|
||||||
result[9] = patterns.find { it.length == 6 && e !in it }!!
|
|
||||||
|
|
||||||
return result.mapIndexed { index, value -> value.sortChars() to index }.toMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Array<String>.letters(number: Int) = this[number].toCharArray().toSet()
|
|
||||||
private fun <K, V> Map<K, V>.findKey(predicate: (Map.Entry<K, V>) -> Boolean) = entries.find(predicate)!!.key
|
|
||||||
private fun String.sortChars() = toCharArray().sorted().joinToString("")
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
private data class Point(val x: Int, val y: Int)
|
|
||||||
private fun Point.adjacents() = listOf(copy(y = y - 1), copy(x = x + 1), copy(y = y + 1), copy(x = x - 1))
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day09 : BaseDay() {
|
|
||||||
|
|
||||||
private val map by lazy {
|
|
||||||
input.lines.value.flatMapIndexed { y, line ->
|
|
||||||
line.mapIndexed { x, value -> Point(x, y) to value.digitToInt() }
|
|
||||||
}.filterNot { it.second == 9 }.toMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
private val lows by lazy {
|
|
||||||
map.keys.filter { point -> point.adjacents().mapNotNull { map[it] }.all { it > map[point]!! } }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part1() = lows.sumOf { map[it]!! + 1 }
|
|
||||||
|
|
||||||
override fun part2() = lows.map { low ->
|
|
||||||
val visited = HashSet<Point>().apply { add(low) }
|
|
||||||
generateSequence(hashSetOf(low)) {
|
|
||||||
it.asSequence()
|
|
||||||
.flatMap { it.adjacents() }
|
|
||||||
.filter { it in map }
|
|
||||||
.filterNot { it in visited }
|
|
||||||
.toHashSet()
|
|
||||||
.also { visited.addAll(it) }
|
|
||||||
.ifEmpty { null }
|
|
||||||
}.flatten().count()
|
|
||||||
}.sorted().takeLast(3).fold(1) { a, b -> a * b }
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day10 : BaseDay() {
|
|
||||||
private val chunks = mapOf(
|
|
||||||
')' to '(',
|
|
||||||
']' to '[',
|
|
||||||
'>' to '<',
|
|
||||||
'}' to '{',
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun part1(): Any {
|
|
||||||
val points = mapOf(
|
|
||||||
')' to 3,
|
|
||||||
']' to 57,
|
|
||||||
'}' to 1197,
|
|
||||||
'>' to 25137,
|
|
||||||
)
|
|
||||||
return input.lines.value.sumOf { line ->
|
|
||||||
val stack = mutableListOf<Char>()
|
|
||||||
for (char in line) {
|
|
||||||
if (char in chunks) {
|
|
||||||
if (stack.last() == chunks[char]!!) stack.removeLast()
|
|
||||||
else return@sumOf points[char]!!
|
|
||||||
} else {
|
|
||||||
stack.add(char)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Any {
|
|
||||||
val points = mapOf(
|
|
||||||
'(' to 1,
|
|
||||||
'[' to 2,
|
|
||||||
'{' to 3,
|
|
||||||
'<' to 4,
|
|
||||||
)
|
|
||||||
return input.lines.value.mapNotNull { line ->
|
|
||||||
val stack = mutableListOf<Char>()
|
|
||||||
for (char in line) {
|
|
||||||
if (char in chunks) {
|
|
||||||
if (stack.last() == chunks[char]!!) stack.removeLast()
|
|
||||||
else return@mapNotNull null
|
|
||||||
} else {
|
|
||||||
stack.add(char)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stack.foldRight(0L) { char, score -> score * 5 + points[char]!! }
|
|
||||||
}.sorted().let { it[it.size / 2] }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day11 : BaseDay() {
|
|
||||||
|
|
||||||
private data class Point(val x: Int, val y: Int) {
|
|
||||||
fun adjacents() = listOf(
|
|
||||||
copy(y = y - 1),
|
|
||||||
copy(x = x + 1),
|
|
||||||
copy(y = y + 1),
|
|
||||||
copy(x = x - 1),
|
|
||||||
copy(y = y - 1, x = x - 1),
|
|
||||||
copy(x = x + 1, y = y + 1),
|
|
||||||
copy(y = y + 1, x = x - 1),
|
|
||||||
copy(x = x + 1, y = y - 1),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private val map by lazy {
|
|
||||||
input.lines.value.flatMapIndexed { y, line ->
|
|
||||||
line.mapIndexed { x, value -> Point(x, y) to value.digitToInt() }
|
|
||||||
}.toMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part1(): Int {
|
|
||||||
val map = map.toMap(HashMap())
|
|
||||||
var count = 0
|
|
||||||
repeat(100) { count += step(map) }
|
|
||||||
return count
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun step(map: HashMap<Point, Int>): Int {
|
|
||||||
map.keys.forEach { map[it] = map[it]!! + 1 }
|
|
||||||
val flashed = hashSetOf<Point>()
|
|
||||||
while (true) {
|
|
||||||
val count = map.entries.asSequence()
|
|
||||||
.filter { it.value > 9 }
|
|
||||||
.filter { it.key !in flashed }
|
|
||||||
.onEach { flashed += it.key }
|
|
||||||
.flatMap { it.key.adjacents() }
|
|
||||||
.filter { it in map }
|
|
||||||
.onEach { map[it] = map[it]!! + 1 }
|
|
||||||
.count()
|
|
||||||
|
|
||||||
if (count == 0) break
|
|
||||||
}
|
|
||||||
|
|
||||||
map.entries.filter { it.value > 9 }
|
|
||||||
.map { it.key }
|
|
||||||
.forEach { map[it] = 0 }
|
|
||||||
|
|
||||||
return flashed.size
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Int {
|
|
||||||
val map = map.toMap(HashMap())
|
|
||||||
repeat(10000) { if (step(map) == map.size) return it + 1 }
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day12 : BaseDay() {
|
|
||||||
|
|
||||||
private val map by lazy {
|
|
||||||
HashMap<String, MutableSet<String>>().also { map ->
|
|
||||||
input.lines.value.map { it.split("-") }
|
|
||||||
.flatMap { (a, b) -> listOf(listOf(a, b), listOf(b, a)) }
|
|
||||||
.filter { (_, b) -> b != "start" }
|
|
||||||
.forEach { (a, b) -> map.computeIfAbsent(a) { HashSet() }.add(b) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part1(): Any {
|
|
||||||
val stack = map["start"]!!.map { listOf("start", it) }.toMutableList()
|
|
||||||
|
|
||||||
var i = 0
|
|
||||||
while (stack.isNotEmpty()) {
|
|
||||||
val path = stack.removeLast()
|
|
||||||
val node = path.last()
|
|
||||||
for (next in map[node]!!) {
|
|
||||||
when {
|
|
||||||
next == "end" -> i++
|
|
||||||
next[0].isUpperCase() -> stack.add(path + next)
|
|
||||||
else -> if (next !in path) stack.add(path + next)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): Any {
|
|
||||||
val stack = map["start"]!!.map { listOf("start", it) }.toMutableList()
|
|
||||||
|
|
||||||
var i = 0
|
|
||||||
while (stack.isNotEmpty()) {
|
|
||||||
val path = stack.removeLast()
|
|
||||||
val node = path.last()
|
|
||||||
for (next in map[node]!!) {
|
|
||||||
when {
|
|
||||||
next == "end" -> i++
|
|
||||||
next[0].isUpperCase() -> stack.add(path + next)
|
|
||||||
else -> {
|
|
||||||
val hasTwoSmallCaves = path.filter { it[0].isLowerCase() }
|
|
||||||
.any { cur -> path.count { it == cur } == 2 }
|
|
||||||
if (!hasTwoSmallCaves || next !in path) stack.add(path + next)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day13 : BaseDay() {
|
|
||||||
private data class Point(val x: Int, val y: Int)
|
|
||||||
|
|
||||||
override fun part1(): Int {
|
|
||||||
val (nums, folds) = input()
|
|
||||||
val (axis, value) = folds.first()
|
|
||||||
return nums.toSet().fold(axis, value.toInt()).size
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Set<Point>.fold(axis: String, value: Int) = if (axis == "x") {
|
|
||||||
val (left, right) = partition { it.x < value }
|
|
||||||
left.toSet() + right.map { it.copy(x = 2 * value - it.x) }
|
|
||||||
} else {
|
|
||||||
val (top, bottom) = partition { it.y < value }
|
|
||||||
top.toSet() + bottom.map { it.copy(y = 2 * value - it.y) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part2(): String {
|
|
||||||
val (nums, folds) = input()
|
|
||||||
val all = folds.fold(nums.toSet()) { all, (axis, value) -> all.fold(axis, value.toInt()) }
|
|
||||||
val res = StringBuilder()
|
|
||||||
for (y in 0..all.maxOf { it.y }) {
|
|
||||||
for (x in 0..all.maxOf { it.x }) {
|
|
||||||
if (Point(x, y) in all) res.append('#') else res.append(" ")
|
|
||||||
}
|
|
||||||
res.appendLine()
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun input(): Pair<List<Point>, List<List<String>>> {
|
|
||||||
val gr = input.text.split("\n\n")
|
|
||||||
val nums = gr[0].lines().map { it.split(",") }.map { (x, y) -> Point(x.toInt(), y.toInt()) }
|
|
||||||
val folds = "([xy])=(\\d+)".toRegex().findAll(gr[1]).map { it.groupValues.drop(1) }.toList()
|
|
||||||
return nums to folds
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.BaseDay
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
|
||||||
|
|
||||||
@Day
|
|
||||||
class Day14 : BaseDay() {
|
|
||||||
|
|
||||||
private fun run(step: Int): Long {
|
|
||||||
val template = input.lines.value.first()
|
|
||||||
val pairs = input.findAll("(\\S+) -> (\\S)").associate { it[0] to it[1] }
|
|
||||||
val polymer = Counter(template.windowed(2)) // {NN=1, NC=1, CB=1}
|
|
||||||
val counts = Counter(template.toCharArray().toList()) // {N=2, C=1, ...}
|
|
||||||
|
|
||||||
repeat(step) {
|
|
||||||
polymer.forEach { (pair, value) ->
|
|
||||||
val (left, right) = pairs[pair]!!.let { m -> pair[0] + m to m + pair[1] }
|
|
||||||
polymer[pair] -= value
|
|
||||||
polymer[left] += value
|
|
||||||
polymer[right] += value
|
|
||||||
counts[left[1]] += value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return counts.maxValue() - counts.minValue()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun part1() = run(10)
|
|
||||||
override fun part2() = run(40)
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.runDay
|
|
||||||
|
|
||||||
fun main() = runDay()
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,601 +0,0 @@
|
|||||||
50,68,2,1,69,32,87,10,31,21,78,23,62,98,16,99,65,35,27,96,66,26,74,72,45,52,81,60,38,57,54,19,18,77,71,29,51,41,22,6,58,5,42,92,85,64,94,12,83,11,17,14,37,36,59,33,0,93,34,70,97,7,76,20,3,88,43,47,8,79,80,63,9,25,56,75,15,4,82,67,39,30,89,86,46,90,48,73,91,55,95,28,49,61,44,84,40,53,13,24
|
|
||||||
|
|
||||||
38 80 23 60 82
|
|
||||||
25 35 28 47 39
|
|
||||||
40 0 30 48 76
|
|
||||||
32 41 49 69 4
|
|
||||||
13 42 89 20 12
|
|
||||||
|
|
||||||
76 89 13 5 98
|
|
||||||
87 48 2 59 20
|
|
||||||
37 88 41 24 57
|
|
||||||
16 85 31 73 95
|
|
||||||
70 11 93 30 27
|
|
||||||
|
|
||||||
81 55 41 85 33
|
|
||||||
67 97 71 90 52
|
|
||||||
19 3 79 66 14
|
|
||||||
49 96 94 26 25
|
|
||||||
60 46 51 82 9
|
|
||||||
|
|
||||||
33 60 26 83 21
|
|
||||||
91 7 39 19 41
|
|
||||||
88 9 82 69 29
|
|
||||||
93 79 12 34 11
|
|
||||||
43 65 64 54 20
|
|
||||||
|
|
||||||
55 75 71 30 14
|
|
||||||
42 67 3 73 13
|
|
||||||
78 72 51 96 99
|
|
||||||
95 10 84 0 31
|
|
||||||
91 47 66 33 34
|
|
||||||
|
|
||||||
11 72 55 52 79
|
|
||||||
94 34 53 61 40
|
|
||||||
8 31 49 68 71
|
|
||||||
37 45 15 78 57
|
|
||||||
21 88 65 24 56
|
|
||||||
|
|
||||||
65 59 4 41 69
|
|
||||||
44 61 23 46 42
|
|
||||||
10 68 37 54 25
|
|
||||||
82 2 13 71 93
|
|
||||||
87 90 89 57 74
|
|
||||||
|
|
||||||
75 70 40 68 30
|
|
||||||
5 28 58 52 19
|
|
||||||
80 96 53 43 63
|
|
||||||
33 60 66 64 56
|
|
||||||
88 74 9 8 36
|
|
||||||
|
|
||||||
58 38 46 42 89
|
|
||||||
98 85 17 51 2
|
|
||||||
28 92 22 64 53
|
|
||||||
27 97 43 10 54
|
|
||||||
75 56 71 67 79
|
|
||||||
|
|
||||||
75 86 11 4 39
|
|
||||||
14 80 41 26 2
|
|
||||||
97 18 96 5 28
|
|
||||||
44 68 54 88 35
|
|
||||||
57 98 74 21 19
|
|
||||||
|
|
||||||
45 16 4 23 63
|
|
||||||
44 37 99 21 85
|
|
||||||
2 82 58 10 84
|
|
||||||
0 47 53 33 20
|
|
||||||
93 19 39 72 8
|
|
||||||
|
|
||||||
5 25 24 32 44
|
|
||||||
59 37 95 88 89
|
|
||||||
68 69 8 96 99
|
|
||||||
16 0 7 92 94
|
|
||||||
65 15 55 66 31
|
|
||||||
|
|
||||||
65 14 92 66 69
|
|
||||||
43 45 30 8 26
|
|
||||||
87 47 18 82 76
|
|
||||||
33 80 67 35 22
|
|
||||||
38 62 84 96 52
|
|
||||||
|
|
||||||
39 45 15 57 53
|
|
||||||
35 47 70 4 0
|
|
||||||
50 17 65 78 3
|
|
||||||
2 7 28 36 42
|
|
||||||
99 48 27 83 72
|
|
||||||
|
|
||||||
52 47 81 44 92
|
|
||||||
35 86 36 71 29
|
|
||||||
57 15 1 95 7
|
|
||||||
68 77 6 3 31
|
|
||||||
20 13 58 89 93
|
|
||||||
|
|
||||||
2 56 27 4 64
|
|
||||||
69 91 88 58 15
|
|
||||||
10 92 61 63 6
|
|
||||||
84 93 79 25 90
|
|
||||||
16 31 55 46 53
|
|
||||||
|
|
||||||
23 42 93 12 30
|
|
||||||
47 99 38 0 14
|
|
||||||
6 90 72 70 21
|
|
||||||
62 61 96 87 22
|
|
||||||
5 55 51 28 17
|
|
||||||
|
|
||||||
42 12 58 95 92
|
|
||||||
67 89 88 87 47
|
|
||||||
32 72 11 83 97
|
|
||||||
55 16 66 57 29
|
|
||||||
54 64 96 2 36
|
|
||||||
|
|
||||||
72 47 69 68 12
|
|
||||||
23 4 37 79 13
|
|
||||||
52 5 59 58 70
|
|
||||||
44 3 21 93 76
|
|
||||||
97 0 35 9 71
|
|
||||||
|
|
||||||
87 49 55 18 94
|
|
||||||
68 32 99 50 37
|
|
||||||
15 3 80 90 42
|
|
||||||
83 12 41 21 58
|
|
||||||
91 89 74 45 51
|
|
||||||
|
|
||||||
5 60 13 46 47
|
|
||||||
18 54 33 26 0
|
|
||||||
28 43 83 31 20
|
|
||||||
12 75 34 36 4
|
|
||||||
76 2 80 70 79
|
|
||||||
|
|
||||||
16 66 25 97 20
|
|
||||||
52 23 80 74 90
|
|
||||||
31 81 95 28 36
|
|
||||||
99 8 50 57 98
|
|
||||||
11 0 30 35 39
|
|
||||||
|
|
||||||
12 33 36 90 30
|
|
||||||
59 66 77 25 46
|
|
||||||
88 24 4 41 50
|
|
||||||
18 52 37 75 43
|
|
||||||
68 49 56 84 87
|
|
||||||
|
|
||||||
27 80 51 25 93
|
|
||||||
4 41 61 30 67
|
|
||||||
68 47 15 20 50
|
|
||||||
78 66 97 54 84
|
|
||||||
35 1 23 89 14
|
|
||||||
|
|
||||||
82 51 38 80 75
|
|
||||||
35 79 43 54 3
|
|
||||||
73 13 23 25 59
|
|
||||||
27 64 47 62 66
|
|
||||||
83 0 7 4 20
|
|
||||||
|
|
||||||
67 2 72 23 81
|
|
||||||
46 1 26 85 25
|
|
||||||
31 65 52 16 14
|
|
||||||
15 4 91 59 19
|
|
||||||
83 60 10 89 90
|
|
||||||
|
|
||||||
62 63 13 96 6
|
|
||||||
24 91 27 29 81
|
|
||||||
38 47 50 26 36
|
|
||||||
79 73 22 45 58
|
|
||||||
15 54 76 46 70
|
|
||||||
|
|
||||||
42 69 91 34 9
|
|
||||||
96 28 61 41 56
|
|
||||||
15 5 59 47 50
|
|
||||||
79 27 4 0 21
|
|
||||||
51 44 26 95 32
|
|
||||||
|
|
||||||
9 38 6 58 99
|
|
||||||
89 69 96 33 73
|
|
||||||
26 20 32 12 27
|
|
||||||
67 29 79 81 59
|
|
||||||
66 45 24 36 68
|
|
||||||
|
|
||||||
99 52 1 66 64
|
|
||||||
15 76 36 75 83
|
|
||||||
48 7 95 71 6
|
|
||||||
31 28 65 14 69
|
|
||||||
10 38 46 74 96
|
|
||||||
|
|
||||||
15 12 59 98 54
|
|
||||||
18 75 48 65 96
|
|
||||||
57 38 2 86 5
|
|
||||||
0 87 93 23 94
|
|
||||||
50 29 13 91 14
|
|
||||||
|
|
||||||
55 83 80 45 52
|
|
||||||
44 31 64 25 71
|
|
||||||
15 85 50 91 54
|
|
||||||
9 29 78 74 23
|
|
||||||
73 82 75 58 98
|
|
||||||
|
|
||||||
63 56 29 80 25
|
|
||||||
53 52 91 18 24
|
|
||||||
73 83 7 11 87
|
|
||||||
79 47 41 59 78
|
|
||||||
13 51 9 21 20
|
|
||||||
|
|
||||||
28 35 98 80 63
|
|
||||||
30 60 34 99 32
|
|
||||||
11 61 15 73 24
|
|
||||||
55 74 42 38 26
|
|
||||||
22 17 43 75 71
|
|
||||||
|
|
||||||
97 53 65 75 51
|
|
||||||
96 74 81 69 71
|
|
||||||
76 5 49 60 41
|
|
||||||
86 64 90 92 30
|
|
||||||
6 95 85 93 40
|
|
||||||
|
|
||||||
65 90 20 4 82
|
|
||||||
41 17 48 27 77
|
|
||||||
84 60 94 15 10
|
|
||||||
55 64 49 35 16
|
|
||||||
36 8 23 58 59
|
|
||||||
|
|
||||||
74 19 70 35 82
|
|
||||||
77 21 84 50 25
|
|
||||||
18 61 12 28 54
|
|
||||||
0 3 72 85 87
|
|
||||||
78 4 57 38 16
|
|
||||||
|
|
||||||
1 63 0 38 23
|
|
||||||
31 76 73 22 35
|
|
||||||
8 72 44 25 45
|
|
||||||
70 33 29 37 21
|
|
||||||
49 50 85 57 61
|
|
||||||
|
|
||||||
37 50 51 12 93
|
|
||||||
83 80 87 6 88
|
|
||||||
4 95 62 20 41
|
|
||||||
78 56 76 49 11
|
|
||||||
72 7 52 14 28
|
|
||||||
|
|
||||||
72 34 61 19 68
|
|
||||||
2 67 88 7 55
|
|
||||||
8 11 20 85 47
|
|
||||||
42 54 46 48 64
|
|
||||||
38 84 3 76 13
|
|
||||||
|
|
||||||
32 34 55 90 64
|
|
||||||
16 1 94 48 91
|
|
||||||
96 45 27 58 63
|
|
||||||
98 20 43 73 10
|
|
||||||
87 52 49 8 24
|
|
||||||
|
|
||||||
6 9 31 37 29
|
|
||||||
45 55 12 23 67
|
|
||||||
86 0 81 49 1
|
|
||||||
18 25 7 15 50
|
|
||||||
32 34 90 99 69
|
|
||||||
|
|
||||||
38 73 44 17 52
|
|
||||||
7 81 85 62 98
|
|
||||||
68 66 86 21 76
|
|
||||||
24 94 50 46 67
|
|
||||||
36 54 55 96 8
|
|
||||||
|
|
||||||
90 39 51 5 99
|
|
||||||
33 20 14 1 81
|
|
||||||
94 74 38 95 35
|
|
||||||
37 96 62 57 84
|
|
||||||
65 11 55 46 69
|
|
||||||
|
|
||||||
26 29 75 3 55
|
|
||||||
33 83 68 94 47
|
|
||||||
37 41 85 50 57
|
|
||||||
76 39 5 81 20
|
|
||||||
18 24 92 71 87
|
|
||||||
|
|
||||||
89 92 39 70 59
|
|
||||||
40 35 23 62 47
|
|
||||||
7 16 22 34 71
|
|
||||||
15 97 86 91 3
|
|
||||||
54 26 56 44 29
|
|
||||||
|
|
||||||
93 91 66 8 78
|
|
||||||
60 48 51 6 57
|
|
||||||
69 35 87 65 73
|
|
||||||
53 32 94 49 89
|
|
||||||
88 34 23 84 59
|
|
||||||
|
|
||||||
41 57 7 37 0
|
|
||||||
79 2 86 82 9
|
|
||||||
25 69 14 78 33
|
|
||||||
4 28 85 8 61
|
|
||||||
97 72 88 1 54
|
|
||||||
|
|
||||||
24 84 65 28 60
|
|
||||||
99 86 53 93 22
|
|
||||||
17 67 10 29 54
|
|
||||||
27 0 96 20 36
|
|
||||||
25 3 62 89 33
|
|
||||||
|
|
||||||
10 28 78 82 96
|
|
||||||
21 11 51 27 97
|
|
||||||
41 63 72 58 89
|
|
||||||
7 0 76 67 19
|
|
||||||
52 38 87 18 13
|
|
||||||
|
|
||||||
73 35 49 44 79
|
|
||||||
76 47 94 53 82
|
|
||||||
11 61 88 86 83
|
|
||||||
81 60 33 99 72
|
|
||||||
84 26 40 8 54
|
|
||||||
|
|
||||||
31 50 40 9 80
|
|
||||||
6 59 51 55 12
|
|
||||||
2 34 93 38 13
|
|
||||||
11 82 21 20 72
|
|
||||||
89 83 60 53 79
|
|
||||||
|
|
||||||
42 54 52 13 85
|
|
||||||
99 76 87 44 26
|
|
||||||
36 50 0 59 82
|
|
||||||
10 73 29 72 27
|
|
||||||
79 31 64 51 91
|
|
||||||
|
|
||||||
68 49 65 94 3
|
|
||||||
46 2 6 78 93
|
|
||||||
63 31 53 27 60
|
|
||||||
21 67 99 22 95
|
|
||||||
24 9 18 76 33
|
|
||||||
|
|
||||||
31 95 91 18 37
|
|
||||||
83 2 78 75 8
|
|
||||||
77 33 9 12 22
|
|
||||||
24 50 80 93 39
|
|
||||||
21 47 35 70 94
|
|
||||||
|
|
||||||
2 44 55 60 89
|
|
||||||
45 18 46 72 11
|
|
||||||
47 83 56 52 65
|
|
||||||
4 19 21 14 34
|
|
||||||
25 80 16 48 36
|
|
||||||
|
|
||||||
53 92 71 14 95
|
|
||||||
98 51 54 15 82
|
|
||||||
48 87 99 46 83
|
|
||||||
42 86 11 43 18
|
|
||||||
72 28 37 93 78
|
|
||||||
|
|
||||||
84 79 30 28 98
|
|
||||||
33 80 65 82 25
|
|
||||||
35 29 46 13 60
|
|
||||||
90 69 52 78 64
|
|
||||||
55 94 0 48 56
|
|
||||||
|
|
||||||
42 71 26 93 82
|
|
||||||
47 36 31 89 69
|
|
||||||
65 5 41 1 32
|
|
||||||
74 17 64 11 68
|
|
||||||
23 54 61 99 37
|
|
||||||
|
|
||||||
97 4 22 2 38
|
|
||||||
8 17 79 99 20
|
|
||||||
44 80 28 57 32
|
|
||||||
18 86 94 77 70
|
|
||||||
11 93 75 49 3
|
|
||||||
|
|
||||||
80 48 85 89 23
|
|
||||||
30 50 94 46 18
|
|
||||||
59 9 81 42 8
|
|
||||||
40 15 90 26 31
|
|
||||||
0 51 39 36 65
|
|
||||||
|
|
||||||
93 63 15 87 25
|
|
||||||
90 44 65 23 66
|
|
||||||
22 27 20 17 45
|
|
||||||
42 62 14 0 57
|
|
||||||
46 4 10 35 96
|
|
||||||
|
|
||||||
44 43 60 80 86
|
|
||||||
48 45 78 40 19
|
|
||||||
54 98 32 17 69
|
|
||||||
25 11 14 34 63
|
|
||||||
26 20 59 0 74
|
|
||||||
|
|
||||||
0 59 87 45 30
|
|
||||||
33 36 1 38 43
|
|
||||||
67 37 74 2 70
|
|
||||||
85 22 44 56 23
|
|
||||||
68 24 75 92 10
|
|
||||||
|
|
||||||
90 83 87 85 67
|
|
||||||
95 24 94 6 40
|
|
||||||
77 15 52 68 66
|
|
||||||
22 20 38 29 79
|
|
||||||
3 10 62 13 16
|
|
||||||
|
|
||||||
9 49 87 13 18
|
|
||||||
85 39 77 82 86
|
|
||||||
96 44 12 72 78
|
|
||||||
59 81 21 94 88
|
|
||||||
17 93 23 56 45
|
|
||||||
|
|
||||||
57 53 80 98 22
|
|
||||||
23 45 5 26 77
|
|
||||||
6 28 4 25 83
|
|
||||||
59 55 58 75 92
|
|
||||||
72 36 99 82 97
|
|
||||||
|
|
||||||
74 33 53 49 86
|
|
||||||
9 50 66 7 78
|
|
||||||
29 36 71 26 87
|
|
||||||
54 82 84 47 46
|
|
||||||
39 30 56 22 27
|
|
||||||
|
|
||||||
6 49 84 14 43
|
|
||||||
41 44 29 18 79
|
|
||||||
93 56 77 64 26
|
|
||||||
15 13 96 9 80
|
|
||||||
50 54 75 99 24
|
|
||||||
|
|
||||||
58 49 91 69 63
|
|
||||||
16 55 19 18 84
|
|
||||||
13 79 42 56 0
|
|
||||||
36 27 60 74 53
|
|
||||||
66 61 62 54 15
|
|
||||||
|
|
||||||
85 22 43 79 90
|
|
||||||
77 21 75 66 15
|
|
||||||
25 68 69 35 78
|
|
||||||
88 3 18 50 7
|
|
||||||
8 27 52 76 72
|
|
||||||
|
|
||||||
12 56 0 45 33
|
|
||||||
13 81 25 24 41
|
|
||||||
80 65 9 32 95
|
|
||||||
18 44 36 68 99
|
|
||||||
78 29 17 38 43
|
|
||||||
|
|
||||||
57 41 77 5 10
|
|
||||||
98 30 70 23 46
|
|
||||||
9 19 11 34 74
|
|
||||||
43 33 32 95 14
|
|
||||||
65 8 68 50 88
|
|
||||||
|
|
||||||
49 93 95 1 55
|
|
||||||
57 92 58 0 90
|
|
||||||
69 15 23 62 56
|
|
||||||
54 37 6 96 11
|
|
||||||
26 80 70 79 88
|
|
||||||
|
|
||||||
46 76 82 77 19
|
|
||||||
4 50 83 88 69
|
|
||||||
67 44 59 25 21
|
|
||||||
40 12 90 33 24
|
|
||||||
63 78 9 71 86
|
|
||||||
|
|
||||||
74 82 88 25 15
|
|
||||||
61 83 7 6 98
|
|
||||||
41 9 84 13 72
|
|
||||||
78 26 8 60 20
|
|
||||||
4 58 29 93 11
|
|
||||||
|
|
||||||
46 60 44 55 63
|
|
||||||
91 19 58 56 85
|
|
||||||
2 32 67 26 41
|
|
||||||
43 61 25 73 21
|
|
||||||
86 14 71 9 6
|
|
||||||
|
|
||||||
38 72 58 17 77
|
|
||||||
25 79 78 5 67
|
|
||||||
81 70 50 85 73
|
|
||||||
7 69 14 80 6
|
|
||||||
93 51 60 42 29
|
|
||||||
|
|
||||||
82 28 99 66 27
|
|
||||||
35 97 91 90 80
|
|
||||||
87 7 55 78 17
|
|
||||||
83 36 98 37 72
|
|
||||||
58 43 51 49 56
|
|
||||||
|
|
||||||
93 72 61 19 74
|
|
||||||
81 44 27 25 12
|
|
||||||
96 10 26 69 99
|
|
||||||
94 23 63 52 8
|
|
||||||
71 95 17 54 70
|
|
||||||
|
|
||||||
28 21 33 5 26
|
|
||||||
45 86 63 92 69
|
|
||||||
77 43 99 20 56
|
|
||||||
89 40 36 30 53
|
|
||||||
41 32 94 17 58
|
|
||||||
|
|
||||||
83 63 92 93 51
|
|
||||||
11 86 67 3 61
|
|
||||||
81 50 16 90 89
|
|
||||||
0 75 31 22 77
|
|
||||||
82 74 37 57 39
|
|
||||||
|
|
||||||
49 87 33 0 13
|
|
||||||
54 38 71 85 32
|
|
||||||
79 84 89 4 61
|
|
||||||
34 14 69 47 3
|
|
||||||
35 12 59 1 55
|
|
||||||
|
|
||||||
95 37 72 73 85
|
|
||||||
0 69 50 75 55
|
|
||||||
51 24 90 71 78
|
|
||||||
66 86 23 40 6
|
|
||||||
34 27 43 14 65
|
|
||||||
|
|
||||||
46 11 41 86 21
|
|
||||||
31 82 38 23 53
|
|
||||||
66 52 39 6 1
|
|
||||||
16 95 36 0 69
|
|
||||||
28 54 91 99 60
|
|
||||||
|
|
||||||
32 80 4 3 97
|
|
||||||
26 63 89 52 22
|
|
||||||
25 91 43 96 68
|
|
||||||
71 42 78 34 56
|
|
||||||
0 82 5 69 19
|
|
||||||
|
|
||||||
69 60 58 19 1
|
|
||||||
91 59 54 52 11
|
|
||||||
43 46 27 2 7
|
|
||||||
89 57 42 88 31
|
|
||||||
93 94 37 96 29
|
|
||||||
|
|
||||||
72 8 29 64 75
|
|
||||||
16 45 0 39 46
|
|
||||||
77 6 88 40 27
|
|
||||||
92 78 21 63 51
|
|
||||||
24 12 90 94 47
|
|
||||||
|
|
||||||
5 41 63 42 73
|
|
||||||
37 80 91 18 50
|
|
||||||
3 24 53 17 49
|
|
||||||
6 86 30 46 69
|
|
||||||
16 97 75 88 93
|
|
||||||
|
|
||||||
97 60 66 77 74
|
|
||||||
1 72 41 69 94
|
|
||||||
30 8 98 33 43
|
|
||||||
99 63 95 91 11
|
|
||||||
56 65 70 12 0
|
|
||||||
|
|
||||||
47 39 37 79 48
|
|
||||||
60 31 19 10 53
|
|
||||||
14 36 25 38 2
|
|
||||||
76 89 32 1 20
|
|
||||||
65 72 91 71 66
|
|
||||||
|
|
||||||
87 72 13 30 75
|
|
||||||
50 80 97 17 63
|
|
||||||
99 9 53 69 86
|
|
||||||
20 57 92 66 21
|
|
||||||
31 42 4 98 0
|
|
||||||
|
|
||||||
38 89 15 91 95
|
|
||||||
94 20 13 64 25
|
|
||||||
37 9 98 10 44
|
|
||||||
28 97 5 78 32
|
|
||||||
99 41 82 22 87
|
|
||||||
|
|
||||||
97 16 42 87 15
|
|
||||||
19 70 82 66 30
|
|
||||||
79 5 67 75 91
|
|
||||||
27 26 56 63 17
|
|
||||||
51 99 13 59 35
|
|
||||||
|
|
||||||
85 33 3 34 5
|
|
||||||
72 74 88 81 10
|
|
||||||
4 64 61 59 8
|
|
||||||
78 42 90 27 80
|
|
||||||
14 12 52 76 1
|
|
||||||
|
|
||||||
67 92 61 33 60
|
|
||||||
82 91 85 76 56
|
|
||||||
39 37 6 65 63
|
|
||||||
32 51 45 14 98
|
|
||||||
73 17 8 46 70
|
|
||||||
|
|
||||||
97 75 33 9 23
|
|
||||||
85 27 15 3 26
|
|
||||||
4 34 36 10 77
|
|
||||||
68 82 37 32 86
|
|
||||||
58 88 95 87 99
|
|
||||||
|
|
||||||
70 19 67 42 31
|
|
||||||
81 6 10 95 18
|
|
||||||
85 50 90 25 56
|
|
||||||
16 94 7 78 24
|
|
||||||
59 88 93 77 4
|
|
||||||
|
|
||||||
92 25 16 75 67
|
|
||||||
97 71 53 32 90
|
|
||||||
6 70 69 55 40
|
|
||||||
77 20 72 84 73
|
|
||||||
34 35 38 98 76
|
|
||||||
|
|
||||||
24 96 27 39 3
|
|
||||||
54 26 12 65 60
|
|
||||||
67 62 43 98 14
|
|
||||||
15 95 2 82 33
|
|
||||||
64 17 86 0 63
|
|
||||||
@@ -1,500 +0,0 @@
|
|||||||
217,490 -> 217,764
|
|
||||||
44,270 -> 373,599
|
|
||||||
440,139 -> 440,303
|
|
||||||
161,663 -> 345,663
|
|
||||||
848,963 -> 908,963
|
|
||||||
299,207 -> 162,70
|
|
||||||
77,346 -> 77,686
|
|
||||||
693,743 -> 693,127
|
|
||||||
96,459 -> 96,779
|
|
||||||
864,39 -> 233,670
|
|
||||||
58,79 -> 203,79
|
|
||||||
158,596 -> 463,291
|
|
||||||
633,293 -> 136,293
|
|
||||||
656,474 -> 656,72
|
|
||||||
148,754 -> 947,754
|
|
||||||
535,780 -> 535,460
|
|
||||||
821,701 -> 821,796
|
|
||||||
592,200 -> 592,610
|
|
||||||
620,786 -> 722,786
|
|
||||||
632,731 -> 536,731
|
|
||||||
825,640 -> 195,10
|
|
||||||
956,547 -> 956,387
|
|
||||||
25,32 -> 981,988
|
|
||||||
870,613 -> 870,16
|
|
||||||
369,780 -> 369,362
|
|
||||||
348,924 -> 243,924
|
|
||||||
28,114 -> 540,114
|
|
||||||
702,690 -> 702,335
|
|
||||||
836,442 -> 184,442
|
|
||||||
602,11 -> 602,651
|
|
||||||
76,988 -> 608,988
|
|
||||||
15,922 -> 951,922
|
|
||||||
363,18 -> 296,18
|
|
||||||
130,580 -> 516,580
|
|
||||||
799,335 -> 858,335
|
|
||||||
571,842 -> 571,800
|
|
||||||
684,654 -> 684,971
|
|
||||||
815,674 -> 66,674
|
|
||||||
575,612 -> 575,919
|
|
||||||
652,126 -> 822,296
|
|
||||||
391,493 -> 730,493
|
|
||||||
810,479 -> 810,807
|
|
||||||
397,420 -> 780,37
|
|
||||||
187,740 -> 869,740
|
|
||||||
175,626 -> 175,169
|
|
||||||
773,901 -> 773,44
|
|
||||||
45,130 -> 45,17
|
|
||||||
226,253 -> 252,279
|
|
||||||
481,928 -> 481,521
|
|
||||||
121,506 -> 121,50
|
|
||||||
306,386 -> 653,733
|
|
||||||
115,635 -> 208,542
|
|
||||||
619,67 -> 212,67
|
|
||||||
82,79 -> 972,969
|
|
||||||
15,20 -> 15,933
|
|
||||||
606,136 -> 500,136
|
|
||||||
791,250 -> 791,316
|
|
||||||
128,931 -> 781,278
|
|
||||||
11,365 -> 11,226
|
|
||||||
705,326 -> 57,326
|
|
||||||
778,632 -> 173,27
|
|
||||||
121,624 -> 121,737
|
|
||||||
30,815 -> 909,815
|
|
||||||
18,114 -> 869,965
|
|
||||||
554,741 -> 554,771
|
|
||||||
284,826 -> 945,826
|
|
||||||
386,654 -> 295,654
|
|
||||||
235,848 -> 418,848
|
|
||||||
536,59 -> 497,59
|
|
||||||
156,922 -> 29,922
|
|
||||||
57,718 -> 174,718
|
|
||||||
964,774 -> 964,426
|
|
||||||
729,950 -> 729,254
|
|
||||||
896,117 -> 152,861
|
|
||||||
603,919 -> 603,776
|
|
||||||
176,472 -> 573,472
|
|
||||||
25,970 -> 939,56
|
|
||||||
478,482 -> 38,482
|
|
||||||
155,936 -> 956,135
|
|
||||||
351,621 -> 133,403
|
|
||||||
513,323 -> 103,323
|
|
||||||
679,167 -> 679,983
|
|
||||||
910,456 -> 241,456
|
|
||||||
16,266 -> 16,829
|
|
||||||
338,791 -> 973,156
|
|
||||||
564,73 -> 564,676
|
|
||||||
196,800 -> 339,800
|
|
||||||
15,776 -> 973,776
|
|
||||||
719,134 -> 719,775
|
|
||||||
730,692 -> 272,692
|
|
||||||
247,770 -> 244,770
|
|
||||||
853,720 -> 940,720
|
|
||||||
685,379 -> 873,379
|
|
||||||
944,647 -> 944,206
|
|
||||||
67,974 -> 967,74
|
|
||||||
828,194 -> 355,194
|
|
||||||
596,522 -> 596,169
|
|
||||||
677,970 -> 638,970
|
|
||||||
587,427 -> 587,354
|
|
||||||
804,488 -> 469,153
|
|
||||||
355,653 -> 787,221
|
|
||||||
798,873 -> 133,873
|
|
||||||
565,798 -> 534,829
|
|
||||||
239,273 -> 20,273
|
|
||||||
942,138 -> 398,138
|
|
||||||
499,743 -> 958,284
|
|
||||||
913,466 -> 514,466
|
|
||||||
504,705 -> 504,983
|
|
||||||
455,863 -> 451,863
|
|
||||||
638,255 -> 425,255
|
|
||||||
338,724 -> 338,457
|
|
||||||
147,880 -> 928,99
|
|
||||||
11,955 -> 806,160
|
|
||||||
566,961 -> 231,961
|
|
||||||
870,560 -> 611,560
|
|
||||||
714,925 -> 859,925
|
|
||||||
484,946 -> 905,946
|
|
||||||
112,394 -> 266,394
|
|
||||||
191,728 -> 191,635
|
|
||||||
983,806 -> 217,40
|
|
||||||
575,286 -> 730,286
|
|
||||||
366,323 -> 366,211
|
|
||||||
383,990 -> 834,990
|
|
||||||
834,976 -> 26,168
|
|
||||||
819,492 -> 819,648
|
|
||||||
257,522 -> 257,199
|
|
||||||
756,176 -> 244,176
|
|
||||||
165,199 -> 569,199
|
|
||||||
896,943 -> 18,65
|
|
||||||
986,642 -> 354,10
|
|
||||||
864,381 -> 349,381
|
|
||||||
177,982 -> 977,182
|
|
||||||
458,254 -> 458,920
|
|
||||||
550,322 -> 550,297
|
|
||||||
956,748 -> 270,62
|
|
||||||
412,305 -> 292,305
|
|
||||||
201,571 -> 375,571
|
|
||||||
608,139 -> 608,330
|
|
||||||
646,718 -> 432,504
|
|
||||||
449,325 -> 449,115
|
|
||||||
315,971 -> 955,331
|
|
||||||
248,143 -> 477,143
|
|
||||||
956,858 -> 111,13
|
|
||||||
776,608 -> 739,608
|
|
||||||
44,842 -> 548,842
|
|
||||||
590,487 -> 590,792
|
|
||||||
978,127 -> 978,748
|
|
||||||
620,948 -> 852,948
|
|
||||||
67,403 -> 67,122
|
|
||||||
340,256 -> 346,256
|
|
||||||
803,58 -> 474,387
|
|
||||||
876,448 -> 876,55
|
|
||||||
78,288 -> 565,288
|
|
||||||
235,80 -> 480,80
|
|
||||||
949,880 -> 949,666
|
|
||||||
529,734 -> 529,332
|
|
||||||
780,973 -> 780,824
|
|
||||||
900,279 -> 698,279
|
|
||||||
290,438 -> 34,694
|
|
||||||
766,569 -> 766,443
|
|
||||||
729,690 -> 729,137
|
|
||||||
72,938 -> 72,893
|
|
||||||
960,563 -> 960,322
|
|
||||||
669,293 -> 578,293
|
|
||||||
396,388 -> 984,388
|
|
||||||
675,694 -> 211,230
|
|
||||||
152,743 -> 63,743
|
|
||||||
203,660 -> 391,660
|
|
||||||
582,806 -> 906,806
|
|
||||||
698,837 -> 698,483
|
|
||||||
869,320 -> 595,594
|
|
||||||
283,817 -> 283,861
|
|
||||||
919,926 -> 919,235
|
|
||||||
16,64 -> 930,978
|
|
||||||
980,25 -> 16,989
|
|
||||||
181,890 -> 952,119
|
|
||||||
877,731 -> 877,364
|
|
||||||
130,55 -> 130,111
|
|
||||||
30,298 -> 590,858
|
|
||||||
134,933 -> 134,41
|
|
||||||
711,853 -> 711,196
|
|
||||||
123,206 -> 841,924
|
|
||||||
130,585 -> 130,394
|
|
||||||
161,952 -> 531,952
|
|
||||||
455,830 -> 455,919
|
|
||||||
612,817 -> 30,817
|
|
||||||
461,474 -> 106,119
|
|
||||||
511,100 -> 581,30
|
|
||||||
263,550 -> 263,814
|
|
||||||
976,973 -> 14,11
|
|
||||||
749,876 -> 380,876
|
|
||||||
731,226 -> 731,659
|
|
||||||
630,682 -> 570,622
|
|
||||||
914,780 -> 311,780
|
|
||||||
975,274 -> 87,274
|
|
||||||
328,957 -> 724,957
|
|
||||||
357,950 -> 357,659
|
|
||||||
466,580 -> 466,726
|
|
||||||
854,425 -> 854,559
|
|
||||||
39,106 -> 39,82
|
|
||||||
675,711 -> 956,711
|
|
||||||
204,117 -> 672,585
|
|
||||||
867,101 -> 49,919
|
|
||||||
849,88 -> 784,88
|
|
||||||
394,249 -> 394,730
|
|
||||||
865,188 -> 125,928
|
|
||||||
316,918 -> 722,918
|
|
||||||
781,336 -> 781,551
|
|
||||||
821,826 -> 258,826
|
|
||||||
597,273 -> 597,653
|
|
||||||
726,266 -> 90,902
|
|
||||||
701,701 -> 941,701
|
|
||||||
105,401 -> 949,401
|
|
||||||
890,486 -> 890,205
|
|
||||||
651,409 -> 651,408
|
|
||||||
450,88 -> 51,88
|
|
||||||
29,478 -> 29,667
|
|
||||||
676,293 -> 676,77
|
|
||||||
380,773 -> 962,773
|
|
||||||
253,836 -> 429,836
|
|
||||||
833,706 -> 123,706
|
|
||||||
689,167 -> 665,143
|
|
||||||
375,540 -> 375,346
|
|
||||||
867,222 -> 746,343
|
|
||||||
99,832 -> 370,561
|
|
||||||
133,349 -> 133,815
|
|
||||||
950,981 -> 12,43
|
|
||||||
195,466 -> 644,466
|
|
||||||
84,876 -> 84,720
|
|
||||||
128,237 -> 34,331
|
|
||||||
872,947 -> 960,947
|
|
||||||
641,220 -> 641,472
|
|
||||||
489,950 -> 489,441
|
|
||||||
508,513 -> 721,300
|
|
||||||
394,137 -> 332,137
|
|
||||||
456,672 -> 625,503
|
|
||||||
65,463 -> 540,463
|
|
||||||
207,745 -> 529,423
|
|
||||||
948,888 -> 891,831
|
|
||||||
39,642 -> 165,642
|
|
||||||
20,228 -> 20,386
|
|
||||||
706,50 -> 57,699
|
|
||||||
66,736 -> 66,840
|
|
||||||
944,450 -> 915,479
|
|
||||||
697,988 -> 697,862
|
|
||||||
987,969 -> 57,39
|
|
||||||
64,813 -> 64,468
|
|
||||||
814,85 -> 469,85
|
|
||||||
667,749 -> 154,236
|
|
||||||
755,337 -> 755,50
|
|
||||||
536,185 -> 536,217
|
|
||||||
732,48 -> 529,48
|
|
||||||
33,578 -> 430,578
|
|
||||||
511,658 -> 669,658
|
|
||||||
294,352 -> 353,352
|
|
||||||
109,937 -> 820,226
|
|
||||||
465,346 -> 465,114
|
|
||||||
878,965 -> 34,121
|
|
||||||
259,933 -> 576,933
|
|
||||||
240,750 -> 240,296
|
|
||||||
567,633 -> 899,965
|
|
||||||
29,609 -> 169,469
|
|
||||||
962,532 -> 962,921
|
|
||||||
443,875 -> 395,875
|
|
||||||
831,584 -> 510,263
|
|
||||||
859,35 -> 84,810
|
|
||||||
829,285 -> 829,463
|
|
||||||
486,661 -> 883,661
|
|
||||||
371,672 -> 959,84
|
|
||||||
722,532 -> 722,241
|
|
||||||
49,216 -> 468,216
|
|
||||||
308,343 -> 308,277
|
|
||||||
183,626 -> 264,545
|
|
||||||
748,611 -> 356,611
|
|
||||||
67,85 -> 925,943
|
|
||||||
726,972 -> 726,272
|
|
||||||
841,222 -> 841,867
|
|
||||||
597,250 -> 813,250
|
|
||||||
20,631 -> 555,631
|
|
||||||
803,846 -> 589,632
|
|
||||||
276,654 -> 222,708
|
|
||||||
400,952 -> 672,952
|
|
||||||
939,173 -> 534,173
|
|
||||||
638,316 -> 638,935
|
|
||||||
578,120 -> 578,101
|
|
||||||
54,457 -> 723,457
|
|
||||||
904,713 -> 904,721
|
|
||||||
902,180 -> 99,983
|
|
||||||
590,426 -> 174,10
|
|
||||||
740,975 -> 309,975
|
|
||||||
84,242 -> 803,961
|
|
||||||
28,667 -> 362,333
|
|
||||||
73,703 -> 73,354
|
|
||||||
902,26 -> 902,365
|
|
||||||
602,455 -> 578,431
|
|
||||||
339,686 -> 339,846
|
|
||||||
764,444 -> 311,444
|
|
||||||
780,535 -> 862,453
|
|
||||||
333,127 -> 911,127
|
|
||||||
451,296 -> 451,832
|
|
||||||
849,681 -> 849,580
|
|
||||||
309,672 -> 309,913
|
|
||||||
339,411 -> 147,411
|
|
||||||
907,478 -> 974,545
|
|
||||||
444,753 -> 855,342
|
|
||||||
642,285 -> 683,244
|
|
||||||
307,633 -> 751,633
|
|
||||||
292,128 -> 767,603
|
|
||||||
969,92 -> 647,414
|
|
||||||
80,120 -> 942,982
|
|
||||||
886,810 -> 740,810
|
|
||||||
205,846 -> 168,846
|
|
||||||
878,230 -> 72,230
|
|
||||||
186,822 -> 628,822
|
|
||||||
472,66 -> 472,609
|
|
||||||
251,753 -> 129,753
|
|
||||||
575,959 -> 102,959
|
|
||||||
582,194 -> 858,194
|
|
||||||
43,986 -> 43,589
|
|
||||||
355,402 -> 751,402
|
|
||||||
982,292 -> 86,292
|
|
||||||
329,966 -> 329,379
|
|
||||||
475,291 -> 475,924
|
|
||||||
625,70 -> 625,350
|
|
||||||
358,467 -> 981,467
|
|
||||||
319,700 -> 736,283
|
|
||||||
657,247 -> 654,247
|
|
||||||
450,803 -> 450,497
|
|
||||||
812,15 -> 812,425
|
|
||||||
649,160 -> 377,160
|
|
||||||
684,491 -> 690,491
|
|
||||||
925,429 -> 772,429
|
|
||||||
138,91 -> 883,91
|
|
||||||
602,121 -> 774,293
|
|
||||||
700,531 -> 451,531
|
|
||||||
250,216 -> 800,766
|
|
||||||
550,784 -> 289,784
|
|
||||||
53,759 -> 228,759
|
|
||||||
678,310 -> 645,343
|
|
||||||
147,70 -> 171,46
|
|
||||||
130,653 -> 130,103
|
|
||||||
292,640 -> 731,640
|
|
||||||
797,762 -> 618,762
|
|
||||||
154,75 -> 964,885
|
|
||||||
222,523 -> 557,523
|
|
||||||
989,103 -> 989,964
|
|
||||||
335,61 -> 422,61
|
|
||||||
782,954 -> 160,332
|
|
||||||
82,929 -> 82,528
|
|
||||||
732,540 -> 635,637
|
|
||||||
950,362 -> 798,362
|
|
||||||
415,566 -> 916,566
|
|
||||||
588,446 -> 743,291
|
|
||||||
495,46 -> 495,435
|
|
||||||
913,561 -> 303,561
|
|
||||||
788,902 -> 788,698
|
|
||||||
81,783 -> 715,149
|
|
||||||
867,990 -> 867,558
|
|
||||||
145,919 -> 145,725
|
|
||||||
850,861 -> 727,861
|
|
||||||
535,129 -> 535,496
|
|
||||||
922,772 -> 922,917
|
|
||||||
882,559 -> 672,349
|
|
||||||
496,80 -> 496,948
|
|
||||||
915,244 -> 516,643
|
|
||||||
633,461 -> 748,461
|
|
||||||
899,341 -> 677,341
|
|
||||||
66,981 -> 878,169
|
|
||||||
68,24 -> 984,940
|
|
||||||
12,880 -> 23,869
|
|
||||||
779,514 -> 779,752
|
|
||||||
878,641 -> 949,641
|
|
||||||
264,919 -> 229,919
|
|
||||||
213,281 -> 213,196
|
|
||||||
538,149 -> 538,278
|
|
||||||
184,478 -> 364,298
|
|
||||||
301,136 -> 923,758
|
|
||||||
559,266 -> 559,986
|
|
||||||
384,37 -> 384,558
|
|
||||||
815,529 -> 800,514
|
|
||||||
33,80 -> 624,80
|
|
||||||
561,261 -> 215,607
|
|
||||||
169,944 -> 169,921
|
|
||||||
673,42 -> 164,42
|
|
||||||
820,977 -> 424,581
|
|
||||||
816,29 -> 802,29
|
|
||||||
374,924 -> 121,671
|
|
||||||
962,555 -> 426,19
|
|
||||||
982,199 -> 860,77
|
|
||||||
334,62 -> 359,62
|
|
||||||
960,785 -> 260,85
|
|
||||||
681,280 -> 860,280
|
|
||||||
184,925 -> 184,30
|
|
||||||
332,398 -> 858,924
|
|
||||||
405,270 -> 218,270
|
|
||||||
261,846 -> 29,614
|
|
||||||
591,941 -> 591,716
|
|
||||||
313,502 -> 313,637
|
|
||||||
930,259 -> 779,259
|
|
||||||
432,15 -> 566,149
|
|
||||||
51,182 -> 223,182
|
|
||||||
603,536 -> 603,281
|
|
||||||
139,703 -> 825,17
|
|
||||||
965,22 -> 55,932
|
|
||||||
389,608 -> 771,608
|
|
||||||
209,617 -> 923,617
|
|
||||||
769,672 -> 769,236
|
|
||||||
163,717 -> 638,717
|
|
||||||
801,604 -> 136,604
|
|
||||||
974,881 -> 110,17
|
|
||||||
187,226 -> 929,968
|
|
||||||
430,949 -> 473,949
|
|
||||||
899,279 -> 899,224
|
|
||||||
964,806 -> 964,876
|
|
||||||
635,190 -> 349,190
|
|
||||||
142,656 -> 142,216
|
|
||||||
740,814 -> 35,109
|
|
||||||
588,956 -> 534,956
|
|
||||||
107,968 -> 707,968
|
|
||||||
787,639 -> 787,50
|
|
||||||
964,491 -> 964,148
|
|
||||||
30,70 -> 30,323
|
|
||||||
30,905 -> 806,129
|
|
||||||
592,419 -> 91,419
|
|
||||||
73,87 -> 973,987
|
|
||||||
540,683 -> 540,139
|
|
||||||
422,107 -> 422,90
|
|
||||||
935,74 -> 935,590
|
|
||||||
728,566 -> 188,26
|
|
||||||
839,313 -> 839,620
|
|
||||||
723,898 -> 723,719
|
|
||||||
679,814 -> 679,617
|
|
||||||
203,633 -> 417,633
|
|
||||||
36,812 -> 546,302
|
|
||||||
112,316 -> 598,802
|
|
||||||
798,773 -> 989,964
|
|
||||||
914,69 -> 520,69
|
|
||||||
213,556 -> 213,19
|
|
||||||
795,516 -> 795,220
|
|
||||||
348,803 -> 664,803
|
|
||||||
910,861 -> 238,189
|
|
||||||
633,691 -> 594,691
|
|
||||||
96,166 -> 96,60
|
|
||||||
278,848 -> 854,272
|
|
||||||
64,370 -> 64,815
|
|
||||||
386,196 -> 386,222
|
|
||||||
888,330 -> 888,834
|
|
||||||
166,482 -> 37,482
|
|
||||||
594,283 -> 594,865
|
|
||||||
515,267 -> 515,448
|
|
||||||
707,279 -> 239,747
|
|
||||||
302,745 -> 302,268
|
|
||||||
210,830 -> 885,155
|
|
||||||
592,180 -> 592,324
|
|
||||||
245,154 -> 245,613
|
|
||||||
607,954 -> 545,954
|
|
||||||
854,951 -> 19,116
|
|
||||||
77,878 -> 963,878
|
|
||||||
759,585 -> 759,892
|
|
||||||
750,918 -> 750,130
|
|
||||||
62,716 -> 329,983
|
|
||||||
785,880 -> 785,590
|
|
||||||
318,794 -> 318,599
|
|
||||||
403,547 -> 719,863
|
|
||||||
742,803 -> 742,937
|
|
||||||
680,579 -> 680,425
|
|
||||||
268,404 -> 826,962
|
|
||||||
425,959 -> 710,959
|
|
||||||
406,823 -> 976,253
|
|
||||||
359,361 -> 165,361
|
|
||||||
276,861 -> 657,480
|
|
||||||
74,260 -> 743,929
|
|
||||||
194,129 -> 194,651
|
|
||||||
879,835 -> 65,21
|
|
||||||
16,977 -> 980,13
|
|
||||||
538,525 -> 624,439
|
|
||||||
985,789 -> 985,510
|
|
||||||
699,850 -> 560,711
|
|
||||||
301,48 -> 477,224
|
|
||||||
28,938 -> 905,61
|
|
||||||
844,530 -> 793,530
|
|
||||||
286,325 -> 936,975
|
|
||||||
368,122 -> 677,431
|
|
||||||
924,153 -> 924,774
|
|
||||||
783,498 -> 783,148
|
|
||||||
250,392 -> 578,392
|
|
||||||
465,345 -> 573,345
|
|
||||||
860,763 -> 860,40
|
|
||||||
373,226 -> 599,226
|
|
||||||
169,562 -> 169,292
|
|
||||||
408,123 -> 569,123
|
|
||||||
510,396 -> 733,396
|
|
||||||
199,20 -> 199,770
|
|
||||||
892,631 -> 237,631
|
|
||||||
671,863 -> 705,863
|
|
||||||
141,530 -> 141,630
|
|
||||||
467,159 -> 367,159
|
|
||||||
729,501 -> 255,975
|
|
||||||
578,871 -> 578,225
|
|
||||||
821,363 -> 821,820
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
1,1,3,1,3,2,1,3,1,1,3,1,1,2,1,3,1,1,3,5,1,1,1,3,1,2,1,1,1,1,4,4,1,2,1,2,1,1,1,5,3,2,1,5,2,5,3,3,2,2,5,4,1,1,4,4,1,1,1,1,1,1,5,1,2,4,3,2,2,2,2,1,4,1,1,5,1,3,4,4,1,1,3,3,5,5,3,1,3,3,3,1,4,2,2,1,3,4,1,4,3,3,2,3,1,1,1,5,3,1,4,2,2,3,1,3,1,2,3,3,1,4,2,2,4,1,3,1,1,1,1,1,2,1,3,3,1,2,1,1,3,4,1,1,1,1,5,1,1,5,1,1,1,4,1,5,3,1,1,3,2,1,1,3,1,1,1,5,4,3,3,5,1,3,4,3,3,1,4,4,1,2,1,1,2,1,1,1,2,1,1,1,1,1,5,1,1,2,1,5,2,1,1,2,3,2,3,1,3,1,1,1,5,1,1,2,1,1,1,1,3,4,5,3,1,4,1,1,4,1,4,1,1,1,4,5,1,1,1,4,1,3,2,2,1,1,2,3,1,4,3,5,1,5,1,1,4,5,5,1,1,3,3,1,1,1,1,5,5,3,3,2,4,1,1,1,1,1,5,1,1,2,5,5,4,2,4,4,1,1,3,3,1,5,1,1,1,1,1,1
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,281,282,677,25,264,2,413,1654,100,68,1111,667,281,128,172,188,4,432,250,232,1282,773,24,1182,33,200,989,148,179,108,208,330,152,227,597,517,1205,489,342,98,287,375,413,385,419,115,42,1363,425,1104,1869,362,111,985,1028,192,504,381,58,634,391,174,125,23,39,255,1437,198,259,154,1644,1275,250,444,122,71,697,184,594,307,694,177,131,269,1780,592,678,128,33,41,541,132,241,883,82,498,1008,153,985,127,801,78,137,128,68,69,180,833,250,1476,127,439,1856,276,58,1785,520,1214,749,429,126,576,9,184,578,1173,83,896,475,23,183,108,532,1114,775,748,422,577,758,1365,97,726,118,206,283,485,798,338,459,954,361,205,30,736,65,94,857,986,452,273,210,1551,354,91,26,60,1691,391,163,132,833,52,629,309,261,148,328,17,604,309,907,441,361,104,190,434,246,295,223,141,239,662,682,494,467,185,1,236,367,125,139,1289,657,279,238,482,512,1498,3,1297,148,548,1053,277,400,713,33,140,227,408,1,1592,219,805,538,535,567,703,939,662,546,993,552,341,144,396,922,324,662,82,142,320,859,369,28,106,741,254,389,483,680,1317,3,177,46,1461,53,1516,858,993,968,1325,4,4,175,303,126,847,754,1129,993,79,67,1381,766,470,1324,726,48,26,703,5,1002,102,1839,236,370,1005,855,262,1018,325,3,681,397,1420,1163,155,961,452,512,112,222,39,435,64,746,185,151,397,1648,315,381,25,1053,151,280,230,602,130,173,784,664,129,625,114,405,773,191,116,1017,1401,16,47,72,192,88,68,802,446,479,7,347,167,35,713,74,404,628,283,920,402,1173,273,436,671,1544,149,278,331,766,888,10,567,53,138,10,132,1273,266,270,305,93,1649,86,3,224,79,1188,609,1107,308,1525,159,895,911,824,1135,560,43,436,1225,1332,57,245,90,1057,814,54,68,168,9,190,572,916,42,330,500,310,1269,583,27,482,399,361,706,1109,252,433,851,137,1081,118,107,254,1062,640,1284,297,379,177,268,230,1148,727,829,129,51,808,223,559,14,155,189,1050,931,1069,927,73,594,44,1049,32,253,1621,134,263,5,926,339,141,220,1330,319,408,722,611,0,303,680,323,502,373,46,61,3,121,263,346,88,39,1084,297,822,468,764,138,161,449,35,1162,1308,312,694,207,921,330,1621,302,707,378,612,7,3,1595,1075,915,171,370,516,115,157,340,603,984,239,2,266,1501,129,110,1272,1105,221,431,1002,455,1204,595,914,1396,59,1576,260,446,1898,584,18,204,66,920,526,0,1199,290,1275,12,14,187,818,448,1015,442,292,1019,383,1217,17,228,214,778,53,148,68,388,15,496,310,428,186,18,206,104,760,790,408,1652,95,1351,325,144,73,1301,1085,29,967,342,656,428,533,67,1252,365,130,49,457,34,808,88,47,803,125,291,558,457,160,1157,1410,90,215,638,1009,446,698,1102,171,1736,878,115,1195,1453,261,121,1,59,56,295,368,646,1220,73,370,555,27,94,186,1536,1527,641,8,626,44,86,266,0,110,329,278,777,1839,20,651,435,172,4,144,617,48,201,751,440,231,0,686,1550,605,208,0,10,613,552,788,183,18,71,119,705,223,17,645,77,83,1342,1671,561,499,836,247,678,923,205,69,69,353,242,114,97,132,234,245,364,40,1061,117,665,183,192,448,283,593,71,208,1537,386,35,434,840,462,27,458,347,293,93,288,250,753,536,1317,124,968,937,503,305,19,24,638,560,488,254,1556,748,86,551,972,1675,28,175,1008,607,263,19,446,566,316,236,1577,0,802,340,526,778,763,41,489,1225,145,116,1,1556,221,703,624,33,74,1404,869,574,190,326,646,33,582,1212,703,76,97,54,41,127,48,309,556,10,356,1028,306,712,193,325,81,100,1414,107,81,1150,339,70,346,523,250,265,104,1302,797,499,829,455,591,170,1339,60,1312,631,665,530,95,348,36,1122,1334,775,54,819,604,759,708,139,1394,481,683,26,66,177,54,318,33,1714,43,801,121,384,560,658,50,159,1835,333,232,203,449,221,659,160,83,93,1176,1170,279,265,907,617,45,342,104,723,1027,697,494,952,494,820,90,462,208,1596,513,24,192,438,138,132,2,566,324,826,444,866,1038,851,629,646,48,334,258,14,571,963,458,62,208,233,31,368,884,207,88,682,118,634,1277,51,352,90,194,323,99,24,138,82,501,1084,403,270,638,401
|
|
||||||
@@ -1,200 +0,0 @@
|
|||||||
ecfdbg decfba aegd fdcag fagecd gd gcafb efdac cbgeafd dfg | bgacf afdebc fceda cabfg
|
|
||||||
cfdabeg cda bcgad bedfac aefbgd bfgcad dfbga egabc dgfc cd | gdbefac fgabcd dcbefag aedgfb
|
|
||||||
aedbfgc gcaf ebgfca bca edgcfb adbge gebac fbegc ac afdcbe | ceafbg acb egbad gfaebc
|
|
||||||
gaeb cafdbg aedfc ecfgdb ab cdaefgb cgbdae bdecg cba eacdb | gfacdeb gabdec begcd adbce
|
|
||||||
fcbgea fbedg bc cbefg befgcda cfgdab gbc efdgca fecag aceb | faecg cb cb fecbga
|
|
||||||
fdebcg bag gdefa ceadgb fcab ebagfc ab fbegc fcaedbg fbeag | cfegb bga edfga fgbec
|
|
||||||
fg fcagb dfgceba edgacb fagd gfb dcgba agcfdb gecfbd ceafb | facgb fbdcge gf gfabc
|
|
||||||
eabfd dfb gbcfad ebdag fagbce gefabdc edcf aecfb cbdafe df | egbcdfa afdebcg aecfbd acefb
|
|
||||||
fbaec bfegad bga deacbg gb fbdg acgdef deagf fgabe gabecdf | fgdb gefba gcdafe bg
|
|
||||||
bfdea agfbc gbd faecdbg gd efgd cdgeab efadbg faebcd fabdg | cdbgea fged cfabed bgd
|
|
||||||
gfedac cgaef gab ceba ba afcdgb gdefbac fegbd bafeg abcgfe | gcbadf egafb ebafg ab
|
|
||||||
bgda agfcdbe agfde faegb baedgf fcdaeg fdbeac ba bcegf bfa | bcefg eagdf ab bacefd
|
|
||||||
dfgbac fdcaeb cbgeda bfdea dcabf ebadcfg gfbea dbe fecd ed | ebd cdfe bgeaf cdbfea
|
|
||||||
efdba edb eagbcd bacef bd bcfd becfagd begcaf cbaefd aefdg | fdage edbgac cgaebd bed
|
|
||||||
gfecbd gbadf fabged gbf cbdage fagcd feab edgcbaf fb aedbg | agdcf bgfda afdgc afdgb
|
|
||||||
gfaedc caefb badcfge dgfe acdgbf eag eg fgacd gecfa ecbdag | acdbgf cbegad cgdaf eag
|
|
||||||
gfebda fgacd dfbag bg geab gcbdeaf eacbdf cedbgf fbg abfed | aedfb gb eafdb dbafe
|
|
||||||
ebadfc efdbga bega fdgcae dbgaefc edfab fag ag dagbf cfgbd | efacgd dbefag fadebg bgfad
|
|
||||||
bf fbd cgbdaf dcfbae fgbcd gcbadef gafcde bfag cebgd dcafg | afbedc gcdeb fbgadc dbf
|
|
||||||
gfecab fageb cgb acgeb gdfeab ecbafdg gfca aecbd gc edcgbf | afcg cedba aecdb cgeba
|
|
||||||
cdge abfdge cgfeadb bdc gbacd cd cdaebf bgeda cgdaeb acfgb | baecdg fcbag dfeagb gcde
|
|
||||||
efabdgc ecafg dacgbf ecgfd dfe gbfdec ed bedc cfdgb gedafb | egcaf cfgae efcgd de
|
|
||||||
bfagdc dbagef gbedcf afdeb ab edgfb gdebfac fdeca baf eagb | bfa bgadfc adcef ab
|
|
||||||
cfdbae dgefc fcaeg geafdc dfag fd cegbd daefbgc cfd cefbag | efgcd cgdfe cefdg cdf
|
|
||||||
cbged feabc fdgb egf ecfdbg dfgcea gabfdce ebcdag bgefc fg | fbgec bgdf efgcbda cbedg
|
|
||||||
ebcdfa ef cfe cadbfge becfd dgbeac dafe gbdfc cefgba ceabd | bfcaeg gfedcab acbfge fe
|
|
||||||
fbdage bf acdgb cabf gcfed gdcfbea fgbdc fbd fcbadg bgedca | bcadeg bf facbdeg gdabef
|
|
||||||
gfacdbe fga gbdaf gadbc dfeagc fg bcgf eacgbd acdgfb debfa | gdcab agcbd dafbecg gfa
|
|
||||||
gadbcf badfe bae cfaed abfdg adfecbg eb bedgaf ecfagb egdb | bdaef egfdcab eb be
|
|
||||||
dbgecaf gacd dfbac dbaefg dba bfgced cafbdg cbfgd faecb ad | degbcf baegdf gaedbf dfegbc
|
|
||||||
afgcd dabgf gedfba agc bdfgac gdefc bcaf cfeadgb ac ecdbga | gfadbec fgcda edgbac fbagd
|
|
||||||
acbegfd cgeb dagbef gbaed caebdg gc dafgec adcbg cdbfa gdc | bdaeg bdfac bdfac bcgad
|
|
||||||
gfab agfbde fa edbgf cbedfa decga cdagefb degbfc egfda afd | daf fa afd efacbd
|
|
||||||
caegdbf daefg fbgac be fgaeb cbea bge cdfagb dgecfb abecfg | gebaf aceb gfdecb befga
|
|
||||||
efcgda bd efgdcab afbec bgcd fdagc dgabef dab dafbc cfdagb | dba dcgb ecbdfga abfcd
|
|
||||||
abdge fd fda fecd bfcage fecdba fdgbcea afbde acdbfg cfbea | fedc fced adebf fbacde
|
|
||||||
acfdbe egcadb gfbacd acfbd bagefcd bgfa cefgd gac cdagf ag | ag bcadeg dgcafb cefdg
|
|
||||||
eabdfc fcaeg fecad bcfda dcfbge ebda de ced fdacbg dfbcega | gcebfda gdecfba dbgfec defca
|
|
||||||
bfc gdfceb cf eafgbd edcab ebcfa gfeacb acgf adcbgef fabge | bafgecd fgabe aegbcf badec
|
|
||||||
gfbc gaced fg bfcda fgd fcgad dgefbac bcafde dgcfab edgfba | bcgf bdceaf dbfaec bdacf
|
|
||||||
acbdgf dfcgb dcfeg egbd aedfc fcebag ge gef cfegdba fgbdce | gcbfea fceda dcfgb dfgbc
|
|
||||||
agcfd fga fecda gadebf dbgcfe fcbdga dcfgb ga gbac cbfgead | fdeca gbcdf cfdgb afg
|
|
||||||
eba ebdc gbefda dcbegaf fbaced afgec be dcfba ebacf dfcagb | eb eab bea be
|
|
||||||
bfcge bfead edgfacb edcfag abegfd becdf dacb cd cde bfdcea | adefgc cdab fbead dcba
|
|
||||||
bacegd gafcbe begfa bcfad ed gedf ebgfda bdefa ead fegdbac | geafb fedba dbcage egdf
|
|
||||||
df fbgdc fcd bfgce abfd cdfgba cgefad cgbad ecadgb egbfacd | bcdgaf cedfga dbgafc dgfbc
|
|
||||||
dfabge bcfdg egfbca bdaefcg decbfg ebfgd fgdca cb cbde cbg | beadcgf dgacf adfgc bc
|
|
||||||
fgda dafecgb egdbf gef dbgec agebcf gf edgafb fcaedb bafde | fg fecdab bdefg bgfde
|
|
||||||
abfgecd eabgf fcdabe gbdafe acebg dfecgb gf gfb fgad dafeb | efdacb efadcgb dagf dfabe
|
|
||||||
ceafbg dfcabe gcfea gbac fgead gc cbdgef egc aecfgbd cefba | badecf badefgc bfaec cbeaf
|
|
||||||
cadfb caefbd cbfega fdbga cad dc edbc aefbc egbacfd dfgeca | cefdab cdfage bacdf dbafc
|
|
||||||
gfcb cf ecafdg fcbed dfbagce fbgeda gdfbec cef eacbd ebdfg | gbdaef caedfg cf gbdefc
|
|
||||||
gd cgd ebdafgc cfbega gcbfde bcfdg badfc bgaced bcefg gedf | gfed fcbgd cdgfbe cfbeg
|
|
||||||
bfga dabge befacd agbdce fb aegfbd fcged dbegf ebf ebgdcaf | bagf ecfdg fbe bedagc
|
|
||||||
beac ea ade gefcd ecgbad cbagd badgcfe ebfgad acgde gcfdab | ea gceadb gcbad cbdga
|
|
||||||
cadfbg bcgafed cbedf afeg abegdc adf gedca efacd acdgfe fa | daecg fdecga edafc adbgce
|
|
||||||
egd ed egacd cgabfed efcd degfca dagbfc dcagf bgfdea abecg | dge egcad ged cgdfa
|
|
||||||
cgdeaf fcbdeg fgc dgcea cadgbe abdcfeg gf cafbe gadf cfega | aecgfd bfaec gf dceabg
|
|
||||||
caegd cbfgae dafg egd gd ecafg gfabdec cafdge bacde bdfecg | gedfcb edcagfb cdega becgfd
|
|
||||||
badgfe ed dcge fgdceb cebfd cbfedga dabcf efd ecgafb cgbef | dgec dfe ecbgfa cebgaf
|
|
||||||
dgabcef bcd cfeadb degfca bgace gcebd cegfd gbdf bd begfdc | acbeg dbc gdfb gfdb
|
|
||||||
edafgb bagf acedb dbg fcgdabe bcdgfe gb bgead dfaecg faged | gafb dgafeb gbaf fadegb
|
|
||||||
bc abcegf bfcgd gdcbef dcbe gcb cafegbd aegdbf dfagc dbegf | cbg cbg cfedgba dgcfabe
|
|
||||||
be ecgbf cbafg ebg bagedc fbae degfabc fgcdab dgfce cabfeg | gfcde dgfbca dcabgf bacegd
|
|
||||||
af dbacge efa abegfdc gfdce begcfa aecfg afbced fgba ecabg | ecadfb gfeca efa gefdc
|
|
||||||
acbedg edfacbg begd cdfabe dagcb eacdb gfeabc bg gba dfgac | cegbaf ecfdba cgbda dfebca
|
|
||||||
dcbgaef bca abed cbgad gdaec fecbag edgbca geadfc ab cdgfb | beagcd dgbca eabd ceabgd
|
|
||||||
cgabe gfcbe cfegba fdbgc fe fdgebca aedcbg gfea bfdcea fbe | feb gaef badgec ecgabf
|
|
||||||
afecdg dfbc cd dcg aegcb baedgf becgd becfdg eacgbdf ebdgf | gbedf edgbf bcdeg gfadbe
|
|
||||||
gfdba adbefc ebcdfag bcgaf bfdaeg dg adbfe egbacd bgd dfge | gbd bgd bcgfa fbgad
|
|
||||||
dfaegb fe bcgde face afgbdc acgebdf agfcb cgbef fcgbea gfe | acef afedgb bgdfcea fgedab
|
|
||||||
abdcef gdfea cbaef gaefb cagebf agfdbec agdbfc ecgb fbg bg | aebfc egcb acfgbe gebc
|
|
||||||
bcf gbadec bf bgaf fcdea cgbda gebdfc dgefcab fcabd bdagcf | edacf bf cfb gadcb
|
|
||||||
cdafgb bgdf gacefd cdb bd ecfadbg cdafg cdebag bfadc ecafb | bcefa cfdba agdfc fabdc
|
|
||||||
egb dgbf bgdeca febag fbadge ebadf aecfg gb geacfdb fbacde | fdbg bg caegf egfab
|
|
||||||
ac eagfbdc bgacf cbdgae gabdf acdf gdfaeb acg dbgafc gbfce | gdbeaf agbcf dcbagf fgadeb
|
|
||||||
ef eagf bfegcd gbaefd fbe eafbd dagfb abced agcfbd abcefdg | ef ef ecdgfab deafb
|
|
||||||
fdgbc efbgd aedbg dfce bcagdf fe fegcab cdgabef efg cgdfbe | efgcdb efg agcfeb dgfabc
|
|
||||||
fe dbefgac baegc eagfc ebgf acdgf aedbfc bgafce cef bcgdea | agbdce aecbfg cdgaf ef
|
|
||||||
fbgcd bdf dfbega dfcga abfdcg db dabc cfebg feadgc ecgbdaf | fcbeg gcdfb cgbdf acfdg
|
|
||||||
bac cdbeagf abfd bcfea edcfba abdcge edacf gcbfe gcdefa ba | cegfb cafde ba fegdcba
|
|
||||||
gcabfd acdg cg gfdbcae ecbgfa cbg bfegd gdcfb cedafb fadcb | cgfbd cfgdb fdegb cg
|
|
||||||
fcdaegb gdefcb dgfacb dcgea eb dgcbf afcegb bgced bdef bec | ecdag eb befd dabcfge
|
|
||||||
defcb eabcf bca abfeg ac cafbge gfac dbaecg fcbegad bagedf | bfgae cfga ecabf aegbcf
|
|
||||||
gdcfea adgcf cbged bgadfc gbf gfdbc cfegdba bcfa bf dgaefb | fgadc bfg fb bf
|
|
||||||
bdgcaef adg egbca cdabg eadbcg eadc cgdfb efagbd ad ebfagc | da dace dga gedfab
|
|
||||||
cade afgecd fgedc cbaegf efbgd gdfcabe ce fec cadgfb dcgaf | ce adefgc cdea fce
|
|
||||||
efgcba ged gcdbea acgeb decag cdgaf egbcafd bdae fgcbed de | adeb edg cgadf agdec
|
|
||||||
agfce af febgc ebgadc cadeg dafg faegcd bceadf bfaecgd efa | egbcf fbgec acedg af
|
|
||||||
cbgdae debcfa becadfg agecb gcde cfgba ce begda bec fdaebg | bec eadgb eadbg badefgc
|
|
||||||
bagedf ecf ec dbefc cbedfa edca dfbcg edbfa eabgfc aefgcdb | fec dafebc cfe aefdb
|
|
||||||
aef bface dabefg ebfdgac caeg bgfac fcegba fcbed ae cfgbad | efcba baefc afbcg gbcfa
|
|
||||||
dfeca fdagcb feagc adcbef fg gefd cabge fgdbace cegadf cgf | fg decfab cfdbga baecg
|
|
||||||
gbaefd agedbcf cagbe fb cgbeaf baefc bfgc bgeacd efb dcfae | gcbaed fb bgfcae bcfg
|
|
||||||
cegf bcedg bgacdef gbedf fg ebadf ebgdcf dgcfba debgac bfg | bdfgca bgf fgdbce becfadg
|
|
||||||
decafgb acgbd fegdab cefag dfcga gdf fd aecfgb dfecga cefd | gcebfa fgacbe fgbdae fcde
|
|
||||||
faebc acb bdfgca afgedcb ab daeb fcbge afcebd feacd cafedg | fbgdca ab afedgc ceafbd
|
|
||||||
gfeb ebgcdfa dfgca abfdg agebd bf abf bceafd dabgce dbfgae | fgeb gadbf gcafd bf
|
|
||||||
ecbdfg gecdfa efcadgb ebdac deabf fbga bf dbf efagbd dfgae | adfbe cfdage efdcga gfab
|
|
||||||
fg cedbgaf feacbd dafgeb fag gfecba acgde febac cfega fcgb | decbgfa fg ecgad afdbgce
|
|
||||||
cfbgde aegcdf daefbc dgceb fcged gafdecb cbfg bc ceb gebad | dafecbg eagdb bec begdc
|
|
||||||
cdefga fbgcade fgdca cd bafdec adc dbgeaf cafgb efgda cegd | afcgb ecdg bcfag caedfg
|
|
||||||
agfbc af deagfbc fecbg gfa fcegbd cfae bgafec edagbf bcadg | agf ecfa becfg af
|
|
||||||
bdgf afceg adcfeb egbaf afgbde afb fb cegbfda daebg adgbec | fba ceadgbf bf fb
|
|
||||||
efgb eg aecbd ecbdg daecgf dcgfb fbagdc egfadcb gce ecbgdf | afbegcd fegdac cebad bgafdc
|
|
||||||
acgbd eb dbace bdafgc fabdge bceg gecdba edcaf aeb bagcdef | fdgabc fegadb dgbcfea egabfd
|
|
||||||
cadfgb acefdg fcb fbea fb ebdfca ebcdf degcb dfaec cbdefga | aefcdbg cdegaf gdbec dcfae
|
|
||||||
fcdab edc cfeb gdfcae dcaeb ec gdcbaf fdcabe debga efbgadc | fcbe gbaed fcaedb acedgf
|
|
||||||
gb gefca acbfge bdgaecf bfcag bdfca abg aedfgb gebc agfecd | cgafb ebcg aecfg efgbac
|
|
||||||
dgabcef fbdgea fb cdbf cebfg bdaegc dgceb egcdfb bfg acgef | cbgde faegc befgdca cbdf
|
|
||||||
cfaebdg fg fgcead agedb fge ebcdf gebdf dfeagb dbgace fgab | gfba eagdfcb dcabeg cegafd
|
|
||||||
fbe egcba bgefdca bgdafe afdgb fdbgac dgcbfe fbega defa fe | ebf egafb fbgdac egafb
|
|
||||||
gdc acfdeg geabc dbfg dabcfe dbeafcg dg bedcf edcgb efcbdg | agcefd cbdfe dg bcedf
|
|
||||||
bafgcd febdgca abgcf bcgea be edgac aeb cbef afebgd ecgbfa | bea eb ecfbag abfcg
|
|
||||||
cdae cbd gacbe fcbdge cefbag bagcde gcabd bdafg dc fdgebca | cegdfb gbeacd cd cabdge
|
|
||||||
dac dfgae fcdabg agbc dcfbg gfedbc fadcg bfaegcd ca eadbcf | cfabged ac cbag dfceab
|
|
||||||
egbdcf bdeagfc aegcb bafec fdceb edgafc caebfd aef fbad af | efa adfcbge dfba ebgac
|
|
||||||
ebadg fcaeb dc acdg becgfd adecgbf dbc dbeafg dbaec bedagc | cdb bdc dc aecbd
|
|
||||||
cfaegbd agbdce edca badgf edgfbc ebagd ed gde aebfgc ebcag | cbeag edca gdbea fbedgc
|
|
||||||
fgb dfagceb cabgdf gf afge ecbaf deabcf cbdeg bgefc gfceba | bgecd gf bacef fg
|
|
||||||
abd fgcdaeb gfeabc gdfacb fcbea faebcd dcbeg badce ad dafe | adecb gfaebc fdcbga aecdb
|
|
||||||
fcgdeab eabgf feagd dge dg cdaefb acedbg cdfg gcaedf efadc | cfade cbeadg bgfea dg
|
|
||||||
fegcb fcedag badgce fcbdgea afg gafeb af dbgefa degba fadb | fbegc fabge af dcgabe
|
|
||||||
abcdfg dcbfea bagd cegfb bd dbf cgafde edgcbfa fgdca bcdfg | fdabce gbcfd cbefda ecabdf
|
|
||||||
afgbd fbgde dcfageb ag gba gfdcab eadgcb cfag daebfc cdbfa | ga ag bdaefc ga
|
|
||||||
egf ecabfd fg ecdfb cfgb cbegadf dgbfae begcfd agcde cgdfe | gbdefa fedgc cafedb cfdge
|
|
||||||
bafcdge dgbace cgbad cdafe bedcfg be abge cebad dcfabg bed | dbe gabfced cgbedf cbadg
|
|
||||||
becagf fdec debafc afedb adbgc bgdfea dabcf cf cabegfd afc | bagdc decf fca dfbae
|
|
||||||
dcagb gfcade cgdebf fdbeag gdfeabc efdcg ecfb deb egbcd eb | eb edagbf ebfc eagdcf
|
|
||||||
ebcdaf fgdc gbeac dgfae efadbg cd gcefda dgace fbgedac cda | aegdc dfabge gcade daceg
|
|
||||||
fgdcb adceb fcgeabd acedbg af fba aebgdf efac dcabfe adbcf | cdbaf cgeadb bdcae bfgaed
|
|
||||||
fcb fc fcdgb dabfg eabcfdg cbged cefg begdca gcdbfe efdacb | ecfg fabgcde gdecbaf bacged
|
|
||||||
gfdabc ad bdfgea fegbdac gbaecf bfega adg adbe afged egdcf | dcfgab bgcefa gad gafcbd
|
|
||||||
bgdcfea afb gabfcd adbfeg efdba bgdfe dfgbce eafdc bage ab | ab dgefb baf bgaedcf
|
|
||||||
geabd adecfgb cg ebcdfa agfbdc fdcg dabcf dcbag faebcg cbg | dagbe fgdbeca cbagdfe fcbeda
|
|
||||||
bdfa dafbge fgedb bfceg bdg afdebgc bd bdaecg defcga gfdea | bagfdce dcgafe fegbc dbegca
|
|
||||||
aedcgb fb gdbaf dgabe acdfg fabgde fadecgb gbf edfb facegb | agdcf badeg fb fabcge
|
|
||||||
dfbce gafed ba eagb gfdbca aefdb fecdag fagbedc abf egadfb | eafdb edfcbag dcfbe ba
|
|
||||||
afdec fcegda edgabc bgdfc faebdc ba bac dcfebag fadbc fbae | deafc acb fbgaecd cfdea
|
|
||||||
gecd dgf eabdf gd gfdeb fgcadb gcbfae cefbg cedfbg cfeabdg | gd edfba fgbce fbgec
|
|
||||||
adfge bcgfde baecg dcfgaeb bafdge gdeac dagcef dc cdg acdf | cgd dgcae gcead cd
|
|
||||||
efgac agbfedc aecbfd agbfde dcbg fdbag gacdfb bc fgbac fbc | bc afdegb bgdc edbafg
|
|
||||||
be cbfgad acegdb agefd dabgc cebfgad gbce bdega dfbace bed | bagde eb egcb edfbac
|
|
||||||
gf fag afgbe ecbaf geadb eabgdf egdf dagbfc ecagdb cbgdeaf | cbefa fg bdega gfacbed
|
|
||||||
bag defba gcfdae cgbd gb eabgfc gcfabd dfagb gcdfa ecbgfda | begacf agb cgfade fcdga
|
|
||||||
adgfcbe egd fgadeb cgbdae acdgb cgedb deca de efcbg acbdgf | cfbdag dcgba geabdf eadc
|
|
||||||
cagdebf dgebcf edc abecfd egfadb fabed ec gadbc efca dabce | dec fbadec debac edc
|
|
||||||
fcedg dfgbae eg deg egcb fgcebd efacd gfdcb gbfecda gdafbc | efacd ge cfgabde fagecdb
|
|
||||||
dbag aefcbd gbc gcdbf bdcfa bg dfabcg ebadgcf cfgeba dgecf | bfaced gedcf dbag cgbdaf
|
|
||||||
cdgfbea gd bdag gebca bdcgfe dgc fcagbe gabedc afcde cdaeg | abgcde ebcga dagb bgcefa
|
|
||||||
cedgbfa ecabgd cdafeb bafcg cegdbf cae gdae gabce ae edcgb | aec cageb ecdgfb egda
|
|
||||||
eacgbf afbdg gdecaf gafbcde gfc baefc bcge fcabg fdcbea cg | agfdb cgfba bgafc eacgdf
|
|
||||||
fgebd fed bfea cbdeg decfga fe cfdgba defbgac dfgba afdbeg | fgdba abegdfc bcadgf fbegd
|
|
||||||
adbfcg fagdbe bagec dc fbaedcg bdfag gbdca fcgedb dcfa cgd | fcad bfdgae dgc eagbc
|
|
||||||
fgbaecd fgecd cafeg feacbg fdgcb fgaecd acdbge ed adfe dge | cfgdb gcedf deaf cfdbg
|
|
||||||
gedab afdcbeg decabg bfedcg dgefab ef aedf cfgab gbaef efb | abcgf cabgf feagdcb cdbaefg
|
|
||||||
fdb ebdgfc bd adefgcb efgad gbcd dfbge afcgeb fecgb dbeacf | bfd cgfdeba cafdeb gedfa
|
|
||||||
abgde bdefa fagdbe fbadceg dgecab dfe ef edfgca bfdac fbge | fegb cagdeb ecdgab bdagefc
|
|
||||||
febad bacged fge cdbeg cfebdag fgdc gf debcgf bdefg cfebga | fg egf beafd efg
|
|
||||||
agdcbf bdefcga cbgefd dcagb gbedac faedc gfc bfag gfcad gf | bgfa dbagc bfgdca bcgad
|
|
||||||
bdce gafbed gaecf bcefdag gbc dacbeg fcbgad egdab cb cegba | eadbgc cb ebadgf debc
|
|
||||||
ac afgceb eagbf befcagd abcg degcf aefbdg ceagf edbacf acf | abecgf bgac gacb ceadbf
|
|
||||||
abcg fcaeb gfdcabe ab befdc cfage gdbfea gecdaf efcgba bfa | bgac bcga cagb efgbda
|
|
||||||
fbdeg gb fcdeb dfecbg eafgdbc edgfa eagbdc baedfc cbfg beg | adbgce dfcaeb bgfc abcged
|
|
||||||
afg afdbec cbdgaf afcgedb bedgf cdagef ga afcdb gbca gfbda | cfagdb edcafg cbfgda bgfed
|
|
||||||
edgafcb fdeab dgabcf cbgf gdfeac dgfab gdeacb acgbd gfa gf | gaf bcgf ecbagd agf
|
|
||||||
dcbfa gfbace ebfca efcg bgfeadc abgce gbafde ef beadcg fbe | egcf fabdc adebgf bdcage
|
|
||||||
gc cfdbe fgcebd bcgef ceg fdagceb ecadbg fgdc fageb bedcfa | adgcbe aefgdcb gabfe gc
|
|
||||||
fgead bcdafg ba bcae edafb bcefad dbcfe cafbgde gbcdef adb | dcfeb gecdfb caeb bacdfe
|
|
||||||
gfeab abc bc ecbf gdebaf gebac gdcea gecdfba acdfbg fbgcae | cbdagf gbcae bc edgbaf
|
|
||||||
aecgf acbf cgadef fecbg bc ebc dcegba befdg aebgcf afdebgc | ecb bcgfe bgedf abcf
|
|
||||||
fg facg efcagd eadfg cebfda feg daegb bdfcge afced cfeadgb | acdfe fgeda fg cdbegf
|
|
||||||
gefda fed edfbgc fgeab cfad cdeag fd cebgad dcefabg fagdce | faegdc eafdg fd cgbfdea
|
|
||||||
ebfad cf befca gabedc fac cabeg dcaefg abfecg fbacged gcbf | bfade fcbg fc cgbf
|
|
||||||
aegbf cbdfega adbfg ef cebdgf dfcbga gebca fadgbe afde gfe | fdae afcbgd bgcedaf gef
|
|
||||||
cdgab cg edgbac gbedfa gebcdaf dcebfg gcd degba aceg dacfb | gdc cgdba cdg gbadc
|
|
||||||
daebfg fcebgad db gacbf feacdg gafdb eafdbc dgaef dfb bedg | cefdbag gedfca gafdeb befcda
|
|
||||||
ecfd fcdgba cebgf fge bgafed febdcg cbfegad cabeg fe gfdbc | ecgdfb edfc gebdaf fecd
|
|
||||||
fac gbeaf bcdga adgbcef febcda cfgba gefbda bagcfe cfge fc | gcfe gbcaf acfbeg acdgb
|
|
||||||
afegdcb fdgba bfgacd fdcg fd cbfga adf ebcagf dcfabe gbdae | df bcaefd cfagb df
|
|
||||||
cdbgef bgef ge ged badec agfdcb adgecf cgdeb cbgdf fdbceag | dcfgb gcebd egbf dcegb
|
|
||||||
dfbea gb cfgea bag fgbc debcga acdbgef afcgbe gfeba cfdaeg | beafd bag cbgf gba
|
|
||||||
fdgcab cd ebdaf baecdgf cda bcgaf cfebga acebgd cbdaf cfgd | aegcfb cdgf cdgf afegbdc
|
|
||||||
fcbga cbeagf dcabg da dfabcg bdaf begcd dca fdagce bcgfdae | acgbd dbceg acd cfbga
|
|
||||||
degacbf cf dcgfba adegbf efgab gfce acfeb dbeca caf gcebaf | bacfe abfecg ebafc debac
|
|
||||||
bcaefd gbce dcegfb gcbadf dgfaecb fbdce dgcfe cg agfed fcg | dbgfec gc acdgfb efbcd
|
|
||||||
cdfag dgebacf bdfagc fba acdgef fcdab bfdg baedc gbfaec fb | cedbafg fb dgfeac cadbf
|
|
||||||
bcdgf eafcbgd bd adfb dcabeg gebfac gcfba gfdacb fdgce bgd | cfbga fgcab db fcegd
|
|
||||||
cdgafe deg bedfc dfgb cgdbe dg dcefba efdgbc cagbefd cegab | bgdf abfdec egd gedbfc
|
|
||||||
bg febdca edgcb cdeab gbc edgbca gdab beagcf cdegf debacfg | bcaedf dgcef badg fecadbg
|
|
||||||
dbca cgaedb gcfbe cea fadbeg gabce ca edcafg degab abfedgc | fdebag beacg abcd adcegb
|
|
||||||
gcdfe adbfgec cbafge dgbaf ebf gfbced eb adcgfe becd fgebd | ecgfba gcbfde dbec cdafge
|
|
||||||
dbgeafc dacbg badfge abfce ed eda dcfe decba dcfeab gfbeca | febcda defc beacf fdgabe
|
|
||||||
efcd bfcadge fcdba egabf bfdcag dcefba deagbc fabed ed edb | gbeacd fdeab ebcfad fageb
|
|
||||||
dcgf fegdab bcaeg dcegaf dga gd dcfbea fcdea aedcg bdefgca | cbegdfa eabcfd adfce cbefda
|
|
||||||
bf edfbgc cegbf bcadefg ebf acbfde gcedf feadgc gbcae gfbd | feb dfgb egbcdfa dfegc
|
|
||||||
efgba eacd efadcg dcgefb gacdf dbcfgae efd bgcdaf edfga ed | cfbgda dgcfa gcfead eadfg
|
|
||||||
afgdc fbg cdgaef fagbdc bgcefa cdbf bgdaf bdaeg fb dgabcfe | dagfc cefagb egcabf fcbd
|
|
||||||
cadgfe acbed cfabgde fdbcge cfga fad fdeabg fa dcaef dcfge | fad bafgecd cfegad adbfcge
|
|
||||||
agdefc cfad bdgecfa gadfe aefgc ad ceadgb gbafce bfedg agd | dag ad fcage cgbafe
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
8656456789432129876532356789899998754320146789767893213468953205459323997678901997655423567797655667
|
|
||||||
6545345996543234987321567896798749886531235697657999304989764312378999886567899876543212345679543156
|
|
||||||
5431239879694349876432398945976532997782356789547898919898765434567988765456789997654323456789654345
|
|
||||||
6520139768989556987543499239854321098993768996536587998789876597679876544245690198965654567899875456
|
|
||||||
7631297657679697998756789349765432129654879797627456789678997698789997432136789999876765698969987887
|
|
||||||
9799989844568989869897996459876543439865994599210235893459998899995986543545699888989876899458998998
|
|
||||||
9898766532345678954998987968989675649876789987421346932398899942134987654676789767891987894357899999
|
|
||||||
5999854321234799123459999899699876789989899876532457891987678991013498767898896556790198965456789899
|
|
||||||
4598765310138921014968998799543987893298964989547598920986598989139999878999964346891249876597898798
|
|
||||||
3459977731257893929899987578932498932127893499987699439877487568998899989998894234979957987989987667
|
|
||||||
1349998643467899896798795467890239643456789989998789949765326489987688993986789124567899299878975558
|
|
||||||
2498997654989998765987654356789349954677999878999899899874212378996577992975569012398965499767894346
|
|
||||||
3987898775894359979879864236789998766789998767999998799763104569987456789864398923579896987656789235
|
|
||||||
9876769986789469898765432045898889898999987658989987698654323779594357897953287899798789199867890123
|
|
||||||
9965454599897698759979564157976778999549876547679997569976457899492166986541026678987679013979989245
|
|
||||||
9895323457998987646898783298965767889698984328456789678998569978989234598632134567896589999989569346
|
|
||||||
9789912345689865435789894369893453978987653212359899899659698767878945987654346889995459887694458956
|
|
||||||
4567895456792979524699965456792012367998864434578956999543987654667896899865456799984349765532347897
|
|
||||||
3458976569891298912349876768943224459899976646789643598759876543456789942987869899873298654321236898
|
|
||||||
4567898678932987899457989879654569598765987757899656999978965432346789321098989998764459876434345789
|
|
||||||
5678979989743976798967899989975998949654598868998979889899976321245678993129894329878689999545457890
|
|
||||||
7989467999654984676978979995989877929012679979987998775667895452356799789298789212999894298956567891
|
|
||||||
8992346898795993235899767894598765698934567899876798654356789673459895678999678923457996987899678943
|
|
||||||
9321456789989892124688956943987654567896989998754987654234678984578954569987546894678989976778999894
|
|
||||||
5432357899877789013467897899876543458987999986543499875345689875699875979876435689789976564569986789
|
|
||||||
6643567998765678925678998921965432356899998775432986985456789996989989898986546798998765423678965799
|
|
||||||
7656798989874567899789239939954321245689987654301995496677899989879998787897657956879876534569754589
|
|
||||||
8799989878965678969899197898765534345796976543219876398889999976767987656789878945265987875678923578
|
|
||||||
9988679769876789354998976989977545656895987654323981239995598765459987545879989432123498976799999989
|
|
||||||
9876544346989992123987755678989656767976798765549854346894398853298766434568996553464569989895878999
|
|
||||||
8765321235898765019986543567998787889989899876898765557995987632129854323799998779878978999964567898
|
|
||||||
9865210756789654198764332456789898995499986989969886768989976543298765545678989890989989987653456796
|
|
||||||
9954331987896543239954210167899949543298765497656998879876987655689876677899678941293293496542397895
|
|
||||||
9878543499987654549865423456789434956099979987542109989765799876796997798975568932999101987921789954
|
|
||||||
0987654567899765669876534667894329899989998699667825699924678987895498999544456899788992498932678965
|
|
||||||
1298776778969896789987645789987498788778987579878434578912457899989399987732345987656789598753489999
|
|
||||||
2399897889759997898998756899876569679567898434989545678901238998777989996543469898745578979767598977
|
|
||||||
3989959999898789997899768965989698546456789023497676989893349897665678987674579764323499767978797866
|
|
||||||
9879943209986577976789979554698987635349892144998989899799599786564567998799699987635789945989976545
|
|
||||||
8967894398995456895678989323597654321298943359889998789688987655443468899987989996546899896799765434
|
|
||||||
6456889987654329923499994312398987310987894498767899643567898543312356789876478987756789789899876323
|
|
||||||
4345679298799498936567892101269876499896789597656978942456798652101235799985356899877897679998764212
|
|
||||||
6456792139898967897678943242456987987685678976545767896599899964214546987876237978998943589987673101
|
|
||||||
6597891098987856789989655443999998998534889995434456789678999876323459876432123467899532359876543212
|
|
||||||
7989989987986537892198987679878999359676899876212347898789998765459698765421012346789643469988654357
|
|
||||||
9875778976897429799097899798767893298787976998455456789897899887678789886532326459899864578998795469
|
|
||||||
8734567895976535678986789999656932109899954597568567893956989998789892998693434667899975689659986778
|
|
||||||
7623478997898545789765999978946893919976895698978879912345678999999953489784546899969876789545698989
|
|
||||||
9537889429987667893986798767835679898965998789989989895456989988998764569875657894356997896432129699
|
|
||||||
7545789512399878912498996553124598787996789899999996789567899876789897679997798965767998954321013578
|
|
||||||
8657897623943989993569987431013987676789999998999875679679998685679999789898899999879329765432125689
|
|
||||||
9767898939894599989689876548923976465678999987899754579999997544334989898789939879998919876654345678
|
|
||||||
9879999898789798868999987857549875334589998965999843267899876432123778987679549967897899988765457999
|
|
||||||
0989987656678987656999898967659854213699987954889954345913987621014569876578998756786989999896769999
|
|
||||||
1995495434589998745799769879898762104789986313767895876799599737123498787366799546565679953987879989
|
|
||||||
9896989213478999856987656991999873215678965301456789989897498976544987643245678931344567894599998767
|
|
||||||
8789878923568998767897543210197654323489987212345789998996597899656799732124578920123456789999987543
|
|
||||||
7678969894567899898987654321298776564599654323456799986579986798967899541013467894234567896789195432
|
|
||||||
6569548789878999979898767435349987676678998764678919877498765677898987643144588986785798935691019541
|
|
||||||
5478934678999298765789998576467898887789999875799101954329854356799099653234679997996799123899998652
|
|
||||||
6569325466789398754679459988568989998999987986945919976598754245689198754556789998987893254567899768
|
|
||||||
7678912345696497643496578998679678999249876597896898899987543134568979877667897899998919875678999879
|
|
||||||
8889101236797989821989679999893479892129765439987987678998621012799456998988945697989323997899999989
|
|
||||||
9993257345899878992978989987932356789934984321099934589987542133789349899399239976878934998921989892
|
|
||||||
7654347867898768789767892196544577897896976439198755698999653234679298789210198765767895789999876791
|
|
||||||
9987656789999654578957899987666798935679897598999978797849796546892987678921349864656899899989965689
|
|
||||||
4698798898998767689437578998977899219789789987890989975435987698921097586893998953245699999878454597
|
|
||||||
2789989997899898992126459899998954398998678956921298765424698789992975435689897965369789999967323456
|
|
||||||
0299878876789939987012346789879895997879567897932398654313799996789987645796756896878999989654212359
|
|
||||||
1998765655678921096543458993456789876565456789545459432102987435678999856965945899989659876532103498
|
|
||||||
9898754434589432987678967912345678985434234698957897643219876323899899767893126788994345987678924997
|
|
||||||
9769963124678943498789978901956789976321012567898998755698765439988799898941012767898659998799899865
|
|
||||||
8754321024569654579899989219897898765462133456789239976999876598767678989432123456998767899987678943
|
|
||||||
9865542147679765989999998998798929876873235578995346989899989987654557976553349567899879994598989432
|
|
||||||
7987653267889876794678987657689012989989356789996459897689998698842346898764498978978998989989996521
|
|
||||||
6699879879999987912459876543579934597699868996789598656579997569976456799879597899569987879979789632
|
|
||||||
5420989998999998923468987632456895987434989865678987643456896434988968899997986965498765468967579544
|
|
||||||
6532399987888999436567899854667989876425698954599986532397895423499879979996565894349876579656498965
|
|
||||||
7683469885467997598798998768788979654214567895789997710145694312345989767986434689456987896432367896
|
|
||||||
9794998764346789679919349889899868965323578976899865431236789103466797656975426896567898954521356789
|
|
||||||
8999899653235678989401239999987654596654567897946976642345678994567898943976545679878939863210145799
|
|
||||||
7898765432123499995319398989998768789785789989023497656466789789678989991297676789999329974321234889
|
|
||||||
6799899843435689989498987878999878999897894569199998787978997678999878989398988997988998765433445678
|
|
||||||
5679998656746797878987656767999989997959923478987899998989899789234569978989899656867899976587676799
|
|
||||||
4598789767899896569876645456789995986543205589876545679998789890124879767566798745556789597698787893
|
|
||||||
3286569898999954398765432367999764698996456991985434589988679932438998754375789432346993459789898932
|
|
||||||
3123489999989654249864321278998653499889599890997595699875497653546799663234598921268932499991999321
|
|
||||||
1012679999879953198765438989999767989778987649898989999954319865678987542159987992357921989432987990
|
|
||||||
4323578988767893239879567899899879865659897435789879887895402976799999531098976789467899878949876789
|
|
||||||
5434989976458994345998678958789998764349765324679664765986514987899976542987895678989998767895465977
|
|
||||||
6565789993256789469899989345678998765239896213469543224998695698989987669876474788999987656789213456
|
|
||||||
7679899864345896598754591257999987654345989304678942105789989999678998798765353567899986548678902878
|
|
||||||
8798998979656789689643210456897899765769878913567893987899879896545999899986212368898765434579924567
|
|
||||||
9987897898767998798754321567976788978998767894579954598999965689659898999875433456789976755989895699
|
|
||||||
8656456789878939899896432378965567899892459965678967999789897799998767879976557677899988767898799789
|
|
||||||
6543236989989921998989543599434458999751346798789878997668799998754354567987667789968999978987688991
|
|
||||||
7654345678997892987978994678912349998540125689898989786554677897643263566799789893457943989768457990
|
|
||||||
8767656899566789976567789899101257987631234599957897654323456986532102345899899954567891098654345789
|
|
||||||
9888987910345678985435678943212346799732545678945698986434678999543313476789929877678932139765456991
|
|
||||||
9999998931234589997523567894324578999843756789234579997876899987654574597894212998989653345989987890
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
{[<([<[[(<[({<<><>><()[]>}<(()())(())>)<(([]())){<()()><{}<>)}>][(((()<>)[{}{}]){<[]<>>({}{})})]>)[(({([{}[]]
|
|
||||||
{{[[(<[[[<[<<{()()}(<>{})>[<<><>>[[]]]>[{{[]<>}[[]]}<<[]{}>[<>[]]>]]([[[{}<>]]<<()[]>{()<>}>]([<<
|
|
||||||
([<{[[{{((([(<[]<>>{[]<>})<([]){<>{}}>][([<>[]][[]{}])])[[{{()[]}<()[]>}<{(){}}>]]]<{(<[{}<
|
|
||||||
(({(<{(([<[({([]())(<>())}{([]{})[{}{}]})]{(({{}()}{<>()}](<[]<>>(()[])))({[[]{}]<[]<>>})}>[[[{<<>[]>(()
|
|
||||||
[([<([{({{[{[([]{})[{}[]]][[{}{})]}<([<>{}]<<>()>)>]}([<{[()<>]{()<>}}[[{}{}]<(){}>]><{{{}[]}[()<>]}[{{
|
|
||||||
<(([<{{<(<[(<{()()}>(({}()){()[]}))<[<[]()>[[]()]]<{[]()}<<>{}>>>](<[([]())]>(([()()][()<>])({()<>}<[]<>>))
|
|
||||||
[{({<(<[{({{{[()[]](<>[])}{([]{})<<>{}>}}}{{<<{}[]>(<>)><(<><>)([]())>}<{({}<>)(<><>)}{[{}{}
|
|
||||||
([(<{<[<{[({[<[]{}><<><>>]<({}[])({}<>)>}([{{}<>}<[]()>]<<<><>>>)){({<<><>>[[]{}]}(<()<>>{()}))<{<[
|
|
||||||
({{([(<{{{{{{([]{}){<>{}}}}{<<()>{{}{}}>[({}())(()<>)]}}[[[[{}{}](<><>)]{<()[]><[][]>}](([[]](()()))<[[]
|
|
||||||
(<<[<{{{({{<{{(){}}{<>()}}<({}{}){[][]}>>[{<[]{}>{<>()}}<{[]<>}[()<>]>]}}({([({}[])(<>{})][{<>}])[{[()<>]<{}
|
|
||||||
{[(<<((<[[<{<{<>()}[{}[]]>}{{((){})[()<>]}<{(){})[{}{}]>}>]({((<<>()>){[<>()]{{}()}}){{[()()][<><>]}
|
|
||||||
{(((([[(<[({({{}()}[<>[]])<(<><>)([]())>}{<[[]<>]><<()<>><()<>>>})<[[<[]{}><<>{}>]]>]<<{{[
|
|
||||||
[{(<[[(<(<[{<({}[])<{}{}>>(<[]<>>)}]<{(<[]()>[()()])}>>{({<{{}()}[<>()]>})<[[(<>())(<>{})]{{{}[]}}][({{}[]}
|
|
||||||
{[[<([{[(<<[<<()()>[[]]>[{()()}]](<[()]<()[]>><<{}()>{()()}>)>><[[([{}<>]{{}()})<{{}[]}<()[]>>]]})[([{{{<>()}
|
|
||||||
((({[(<<{(((<<{}()>><{<><>}>)))[[{<({}[])[{}[]]>}(<[<><>][()()]><[[][]]<{}[]>>)]]}((({<(<>())>[({}{
|
|
||||||
{<{{[(<<{(<{[({}<>)<{}[]>]([(){}](<>[]))}<(({}()){[][]}}[<()[]><{}()>]>>)}<<{(<[{}()]{<>{}}>[[[]()](()
|
|
||||||
{(<<({{([<[<[<{}<>>{[][]}]<[<><>][()[]]>>{(({}{})){<()><()()>}}]>(<({{()()}({}<>)}<([]<>){[]{}}>){([[]<>
|
|
||||||
<(<({{{([({{<<{}<>><()[]>>[{()<>}[<>{}]]}})({([{()[]}{(){}}]<(()<>)<{}<>>>)}<{{<{}<>>[[][]]}}<[{<>}[<>
|
|
||||||
{({{(<<([({{[(()<>)[[]<>]][(<>{})({}())]}})]{(<[<(<>()){<><>}><<{}()>[[]]>][{{<>()}{[]()}}{[()<>]{<>()}}]>)
|
|
||||||
([<({{{([[<<[[()[]][<><>]]<<<>[]><()()>>>(<{()<>}<()[]>><{<>()}<[]{}>>)>({(<()[]]<()()>)<[<>()][{}]>
|
|
||||||
{[{<((<[<<({<{[]{}}[()()>>({[][]}[[]()])})(([{()}{{}()}]<<{}()>{{}{}}>)<([<>()])(<{}<>><{}[]>)>)>{[{
|
|
||||||
{{([([{(<[[{[{()<>}({}())][[[]<>]<{}{}>]}]<<[({}[])(()<>)]({(){}}[()()])>{{(())<(){}>}}>]{[<{[[]()]{<>[]}}
|
|
||||||
<(<({<{<<<([<([]<>)([]<>)>]<{{{}{}}<<>()>}>)<<{[[]()](<>{})}(([]())<[]()>)><[{<>{}}[(){}]]>>>>>(<{<[[[{
|
|
||||||
(([({<{(<{[<({<><>}){{[][]}}>{<([]()){{}{}}>[([][])<{}{}>]}]}[((<{()<>}>)[{{()<>}{[][]}}])]
|
|
||||||
(<<<(({{{([[<{(){}}>{(()())(()[])}]{({{}[]}<[][]>]<{{}<>}{()}>}])<(({[[][]]{{}{}}}(([][])<(){}>)
|
|
||||||
{<{{[[({<<{{({{}()}({}{})><[()<>][<>{}]>}([<()[]>({}())][{()<>}[()]])}{<[{(){}}<[]{}>][[[]<>][[][]]]>([[<>]
|
|
||||||
{{{[(<([[[[{[[(){}}<{}>]<{<>[]}{{}{}}>}]<[[(<>())((){})]((<>()))]{(<[]{}>([][])){<[]<>>(()[])}}>]
|
|
||||||
(<{[([[<(<[<{[<>{}]}(<[]<>>{{}<>})>[{(())}]]>){<{(<(<>())<{}()>>]}({<<[]<>>[[]<>]>((()<>)[<><>])}
|
|
||||||
[<{[[(({([((({[]{}}[()()])))]>[((<<[<><>][[]()]>{[()<>][()()]}>({{<>[]}({}<>)})))]})){((<[<[<[<>()]>
|
|
||||||
<({[{{{<{[<[({[]{}}<[]>)(({}[])({}<>))]><{((()()))[[()<>]{<>[]}]}(<((){})<{}{}>><({}[])>)]][([<{
|
|
||||||
<(<<<<<[(<<[{{[][]}{{}{}}}{{[][]}<()>}](<([]{})[()[]]>[[{}{}]{<>()}])>([{[[]()]<<>[]>}[<<>{}>{<>
|
|
||||||
<(<[[<[[[<<(<(()[])<{}()>><(<>{})>)[([{}{}]([]{}))]><<<[<>[]]{<>[]}>{(()<>)({}[])}>>><[[[{<
|
|
||||||
([[{[({<({(([<(){}><[]<>>]<{()<>}({})>))([([{}<>][{}[]]){[<>[]]({}<>)}][[({}[]){[]()}]])})>[({{(<(()[]){<>
|
|
||||||
<[<{<[{(<<[[{{(){}}({}<>)}<(()[])>]<<<()()>(()<>)>({{}})>]({[(<>{})<{}()>]{<{}<>><<><>>}}<<{()<>}
|
|
||||||
{[{({[[(({{{{<()()>{[]{}}}{[<>[]]<()<>>}}(<<<>()><{}<>>>({()<>}[()<>])}}{<{[()[]]{(){}}}>[<<[]{}>>[((){})<(
|
|
||||||
{{(<[<(<(<{{(<[]()><()<>>)}{((<><>))[<<>{}>{()[]}]}}>{{<({{}{}}[()<>])[<(){}>(<>[])]><<(<>{}}[{}
|
|
||||||
[{{{[[[[{(<{<[<>[]](()[])]{{<>{}}}}{[(()()){[][]}]{([][])}}><<{<<>()>([])}[[[]{}]<{}{}>]>(([{}<>]<[]()>)
|
|
||||||
{[[(<([[[[((({<>{}}(<>())){<{}[]>})[([<>[]](<>[])}[({}[])([]())]])([<{{}()}(<>())><[[][]][<>()]>][([()()]<<>[
|
|
||||||
<[{[{({(<(((<<<>{}><[]()>][{{}()}{[][]}])[(((){})([][]))[[()<>][[]{}]]])[[(((){})[()])[[(){}]<{}
|
|
||||||
[{[[<[<{{(({([(){}]<()()>](([]<>)[()[]])}<<{[][]}([][])>>)<[[([]())<{}[]>]]>){[[[{{}()}[<>[]]]{<[]{}>
|
|
||||||
[[<([([[<<<{{[{}[]][<><>]}}{{{{}{}}}}>>>[([[(<<>[]>({}<>))<([]())<<><>>>]{{<<>[]>{<>()}}}][<{{[
|
|
||||||
({[<<<((<<<<<<[]{}>[()()]>{[()[]]{()<>}}>[((<>()){()()}){<[][]]<{}{}>}]>{{[[{}{}]<{}[]>]([[]<>])}((
|
|
||||||
({<<[[{{<{[[{<()><<>>}<<()[]>([][])>]]([[({}<>)[()[]]](([]{})<<>[]])]<[([]<>){[]}]>)}(((<<{}[
|
|
||||||
<(<(<(([([[[{{[]()}{<>()}}{<{}[]>[{}()]}]{{[{}{}]<()[]>}({<>()}<(){}>)}][[{<{}()><[][]>}](<[
|
|
||||||
[[<{<[<[<({<<{[]}<()<>>>({<><>}{[]<>})><([<>()]([][]))>}[({[{}{}]<{}[]>})({[<><>]})])>]([[{<({
|
|
||||||
<([{[[<<[({<<[{}()]({}[])>{<[][]>{()()}}>{<(<>[])([]{})>([{}[]}[<>])}}{{[<<>[]>{[]<>}][([][]){{}{}}]
|
|
||||||
[([({((<[{{{[<{}><<>()>]<<()[]>>}<[{{}{}}([][])]{{()<>}<(){}>}>}<{<[[][]]>({{}<>}{()[]})}>
|
|
||||||
[[[{([({{{<{[[[][]]{()()}]}{{<<>[]>[{}[]]}[[[]()]<<>>]}>({{(<>[])[{}[]]}({<>()}[{}[]])}{{(()<
|
|
||||||
{<{{{<[{[<{(<{[]{}}{[][]}>{{[]<>}}}}[{((()[])<()()>)[<<>[]><{}()>]}<[{<>{}}[()<>]]<[<>[]][<>{}]>>]>[<[
|
|
||||||
<[<{[[<{<[([{({}[])(()<>)}[[<>()]{()[]}]])][[<{[<>[]][<>[]]}<{<>{}}{<>{}}>>{<<()()><()<>>>{([]()
|
|
||||||
<[{{({<[<([[[([]{})({}())]]<[{{}}[()<>]]<{<>{}}{()}>>])<[<[<<>()>]{<{}{}>[[]<>]}><({[]()}<<><>>)[(()<>)(<>())
|
|
||||||
{<[[[<(<[<{<({<>{}}[<><>])([{}<>]<[][]>)><<[(){}](<>[])>[({}[])<<>[]}]>}{{{(<>())(<>{})}}<((<>())
|
|
||||||
<{(<<[{[{<{<<((){})[[]{}]><([]<>)<{}[]>>>{[[[][]]<()()>]}}{({{<>()}<<>()>}{<{}<>><()[]>})}>}<[<([<()()>{()()
|
|
||||||
{{([<{[[((<<{<<>()><<>[]>}<(()<>)>>><<[<[][]><{}<>>]>{<([]()){[]<>}>}>))]<{(((<[[]<>]([]<>)>[{{}()}<<
|
|
||||||
([{{({{<[[(((<[][]>{<>{}}){<()[]>{[]()}})(<({}<>)([]<>)>(([])[()<>])))(([([][]){()<>}]{{[]<>}{[](
|
|
||||||
[{{<{({[<{<{((<>())({}[]))<{<>()}({}[])>}(<[{}()]<{}<>>>({[][]}{()<>}))}{([({}[]){{}[]}]<([][])>)}}{<{({{}(
|
|
||||||
[{(([[[([<<(<([]()){<>}>(({}<>)(()())))[((<>{})){[()<>]<<>{}>}]>>][<{{[<()<>>{{}[]}]<<{}[]><{}[]>]}[
|
|
||||||
{<<<(<[<[{<[<({}[])>(([])<[]<>>)]<<<{}{}>({}())>{[<>{}}<[][]>}>>[{[<<>()><()()>]{[<>[]]<[]>}}[<<<>[]>{[]()
|
|
||||||
([(((<<(<[[<[<{}<>>(<><>)]>([<{}[]>{<>{}}]({<>{}}[()()]))]](<({<<>[]>({}[])}<[[]<>]{<>[]}>)(<{
|
|
||||||
([{({{{[(((<<{[]()}<{}<>>>((<><>){[]()>)>({<{}()><(){}>}<[<>()]>))){((([[][]]{<>{}})[([]<>){<>[]}]
|
|
||||||
<(({{{[(([<[{<(){}>([]<>)}(<[]><()<>>)]><<([()[]]([]()))>{[(()<>}<{}>]}>]){{[{(({}{})<(){}>){[[]]{[]
|
|
||||||
[<{(<({<{((<<<[]<>>([]())>(((){})[[]()])>{[[<>]<{}<>>]}){[<[<>[]]({}())]{{()[]}<()>}]})<([[([]())<<
|
|
||||||
[[<<[<{{[{({<[()<>]{<>[]}>{([][]){<><>}}}<[[{}()]][<<><>>{{}[]}]>)}{<{{({}<>)(()())}[{{}{}}[{}()]]
|
|
||||||
({<({[{[{(([<<()()>{<>[]}>[([]<>)<()<>>]]{<{<>()}[{}{}]>((<>{}){<>{}})})([<([][])[[]{}]>(<[]()>{<>
|
|
||||||
{[[((<{[[<<({<[]<>>[()<>]}{[()]{<>}})>[<{<<>()><()[]>}{{()[]}<()<>>}>(([{}[]]))]>[[{({<><>})}
|
|
||||||
{{(<[{{[{<[({(()){{}<>}}(<{}[]>[[]()]))]>}({(<((()[])((){}))<{<><>}[<>()]>>)}(<<[(())<{}<>>]{[[]]<{}
|
|
||||||
<{{([<<<<[([<[<><>][[]]><<(){}>[()()]>]<{(<><>)<<><>>}([{}{}])>)][[([<()()><<>()>])(({[]<>}([]{}]){<[]><[]
|
|
||||||
{(<<[[<{{((([<[]<>>[{}<>]][([][]){{}{}}>)(<<<><>><[]{}>>{{(){}}[<>{}]}))({<(())[<>()]><{<>{}}(<>[])>}(({
|
|
||||||
[[[([({([<<[[[<>{}]{<>{}}]<[<><>]{{}<>}>]>[({[()()]<<>()>}{[()()][{}()]}){({{}()}[(){}))}]>[(<{[()<>
|
|
||||||
[{{(<<<[{(((<<()<>>([])>({<>{}}<()[]>)))[{(([]){()<>})(({}[])<{}})}<{([]{})({}())}<(<>[])<<>[]>>>
|
|
||||||
{<<<<[{[{({{[<<>()><{}[]>]<[[]{}][{}{}]>}(<({}{})<()<>>>{{()<>}})}{[[{{}{}}[{}{}]]<[<><>](<>{})>]})(([{[<>()
|
|
||||||
<(<[<{(<{[{<{[[]{}]{{}[]}}>[{[[]<>][{}{}]}(([]())(<>))]}<{{[{}{}]([]{})}[({}())]}{<<<>()>>([(
|
|
||||||
<{{[{[<{[[<[{<[]{}><<>{}>}]{({()<>}(<><>)){[<>[]]}}>{([[<>{}]({}{})](({}{})<[]{}>))<{[{}<>
|
|
||||||
{{<<{<<<[{[[([[]()][()()])(({}()))][[({}[])<()()>]]]{<[<{}[]>{{}{}}]>}}[[[[([]())]([<>[]][[]{}]>]]
|
|
||||||
[[<<[({{{(<[(<()<>>[<>])]([(()<>){<>())]([<>[]][[]<>]))>{{[[[]()]([]())]{<[]{}>{()<>}}}[<([]<>)<()>>({<>{}}[<
|
|
||||||
([[([<{<[<((<(<>[])(<>[])>(<<><>><{}[]>)){<<{}<>>>({{}{}}<()[]>)}>[{{(<><>)(()<>)}[<<>[]>]}]>]<{{
|
|
||||||
{{{((<<{[[{<([[]{}][{}<>])>}<[((()())<()<>>)[[[]{}]{[][]}]]<<<[]{}>{{}[]}>(<<>()><(){}>)>>](<
|
|
||||||
{(([[{{<[[<{(({}<>)[<>[]])}<{({}{}){{}}}[[()[]](()())]>>]([<[{()[]})({<>}[<>{}])>{[{{}{}}{(){}}]{<{}{}>}}])
|
|
||||||
{([(<{<<({[<[{()()}<[]<>>]{<[]{}>}><[[<>][()<>]]>]{<{{[]{}}<(){}>}[({})]>{{<{}{}><()<>>}([{}
|
|
||||||
{{[[({{({[(([{{}()}[{}]]({{}<>}([][]))){({{}<>}[[]{}])<<()<>>>})]{(<[<{}{}>{<>()}](({}())((){
|
|
||||||
{<({{<<{{([{{{[]<>}{<>{}}}((<><>)<()<>>)}[<[{}<>][()[]]><[<>()][<><>]>]]{{[[()<>]<<>[]>]<(<><>)
|
|
||||||
<(<[(<<[[<<<[({}())<[][]>](({}<>)[{}<>])>>[<{{{}}<()<>>}<(()<>){{}{}}>>]>({{<[<><>](<><>)>[(<>{}
|
|
||||||
[((<{[{{(<{[({{}[]}((){}))([[][]]{<>[]})]<{<{}[]>[{}<>]}[<{}()><{}<>>]>]>)}}]}{{{(<[(<{{()()}}>{[<{}<>><<>[]>
|
|
||||||
{([<<{(<([[({{{}<>}<(){}>}<<()[]>{<>{}}>)((<[][]>[<><>])<<[][]>{<>()}>)]((<{<>[]}{[][]}>[[<>()]{<>[]}]]{{[
|
|
||||||
[<{(<{([{{(([<<>()>]{<(){}><()<>>}){(([]{}>)<(<><>)>})}({({[<>]{<>[]}}[[{}<>]])}[{<[()[]]<{}<>
|
|
||||||
{[(<(<{(<<[{[<[]()>(<>[])][{{}}[()[]]]}{{[[]{}]{()()}}<<<>>[[]()]>}]>{{<[<{}()>([]())]({(){}}(()<>))>([(<>(
|
|
||||||
{{([[([[[<(({<{}<>>[<>[]]}{([]<>)<<>{}>})<{{[]<>}{{}<>}}([()()]<<>[]>>>){{[[()<>]]<((){})<[]{}>>}{<<[]<>><()
|
|
||||||
<({([[[[[({[[{{}<>}({}<>)]({<>[]}[<>{}])][([<>[]](<>()))<([]())[{}{}]>]}(((({}[])[()[]])[{{}{}}(<>)])(<<<>
|
|
||||||
[({{<{[([(((<{[]{}}{<>()}><[{}<>>{<>[]}>)){([<{}{}><()[]>]<([]{})[{}{}]>){{[[]]<[]{}>}((()[])[(
|
|
||||||
(({<[<<{{[[<{(<>{})([]())}([[]{}]{{}()})><[<{}()><{}{}>]<<<>()>[[]()]>>]<[<<()[]><<>()>>[{{}<>}[<>]]]>]
|
|
||||||
((<[[<{{{[({<(()[])<()<>>>})]{<(([()()][[]]))({[[]()]{[]<>}}{[<>()]})><<(({}[])[{}{}])>>}}}[[[{{{{[]{}}({}[
|
|
||||||
([<[<{{{{[<<{{<>[]}([]<>)}><{{()[]}[<><>]}{<[]>[()<>]}>><{[{[][]}<()[]>]({[][]}(()<>))}<{(<>())(
|
|
||||||
{((<(([[<[(<[{()[]}([]())>>[<[<>()]<[]{}>>(<()<>><[]>)])<(<{()}>(([]<>){<>{}}))<[[[]<>]{[]()}
|
|
||||||
[(<[([([{{{<([[]<>]<<>>)[{<>[]}{{}<>}]}({(())[{}()]}[<{}<>>{<>()}])}([<[(){}]([][])><(()())
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
7222221271
|
|
||||||
6463754232
|
|
||||||
3373484684
|
|
||||||
4674461265
|
|
||||||
1187834788
|
|
||||||
1175316351
|
|
||||||
8211411846
|
|
||||||
4657828333
|
|
||||||
5286325337
|
|
||||||
5771324832
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
pn-TY
|
|
||||||
rp-ka
|
|
||||||
az-aw
|
|
||||||
al-IV
|
|
||||||
pn-co
|
|
||||||
end-rp
|
|
||||||
aw-TY
|
|
||||||
rp-pn
|
|
||||||
al-rp
|
|
||||||
end-al
|
|
||||||
IV-co
|
|
||||||
end-TM
|
|
||||||
co-TY
|
|
||||||
TY-ka
|
|
||||||
aw-pn
|
|
||||||
aw-IV
|
|
||||||
pn-IV
|
|
||||||
IV-ka
|
|
||||||
TM-rp
|
|
||||||
aw-PD
|
|
||||||
start-IV
|
|
||||||
start-co
|
|
||||||
start-pn
|
|
||||||
@@ -1,915 +0,0 @@
|
|||||||
938,670
|
|
||||||
246,156
|
|
||||||
622,476
|
|
||||||
137,296
|
|
||||||
708,323
|
|
||||||
1019,283
|
|
||||||
415,505
|
|
||||||
1043,234
|
|
||||||
666,871
|
|
||||||
157,893
|
|
||||||
969,266
|
|
||||||
1280,690
|
|
||||||
987,260
|
|
||||||
296,428
|
|
||||||
1302,361
|
|
||||||
92,168
|
|
||||||
206,204
|
|
||||||
937,659
|
|
||||||
551,488
|
|
||||||
147,456
|
|
||||||
1279,42
|
|
||||||
463,154
|
|
||||||
407,266
|
|
||||||
1153,893
|
|
||||||
495,372
|
|
||||||
733,459
|
|
||||||
378,169
|
|
||||||
48,705
|
|
||||||
31,852
|
|
||||||
577,571
|
|
||||||
36,672
|
|
||||||
1014,661
|
|
||||||
441,880
|
|
||||||
1305,791
|
|
||||||
115,553
|
|
||||||
455,267
|
|
||||||
360,833
|
|
||||||
915,455
|
|
||||||
346,53
|
|
||||||
606,367
|
|
||||||
1014,513
|
|
||||||
930,633
|
|
||||||
190,350
|
|
||||||
564,577
|
|
||||||
1205,376
|
|
||||||
928,462
|
|
||||||
577,435
|
|
||||||
825,686
|
|
||||||
517,598
|
|
||||||
782,119
|
|
||||||
1110,539
|
|
||||||
67,236
|
|
||||||
77,185
|
|
||||||
577,723
|
|
||||||
808,855
|
|
||||||
139,742
|
|
||||||
865,414
|
|
||||||
159,522
|
|
||||||
1159,626
|
|
||||||
440,58
|
|
||||||
743,505
|
|
||||||
252,502
|
|
||||||
1190,659
|
|
||||||
855,521
|
|
||||||
1094,185
|
|
||||||
798,176
|
|
||||||
1114,61
|
|
||||||
174,695
|
|
||||||
427,581
|
|
||||||
161,670
|
|
||||||
74,222
|
|
||||||
1250,829
|
|
||||||
930,261
|
|
||||||
398,497
|
|
||||||
541,47
|
|
||||||
340,102
|
|
||||||
1057,614
|
|
||||||
820,753
|
|
||||||
1057,453
|
|
||||||
1158,141
|
|
||||||
492,499
|
|
||||||
267,234
|
|
||||||
642,568
|
|
||||||
904,586
|
|
||||||
1274,47
|
|
||||||
169,781
|
|
||||||
241,164
|
|
||||||
1037,621
|
|
||||||
50,254
|
|
||||||
44,63
|
|
||||||
388,561
|
|
||||||
1099,522
|
|
||||||
1255,809
|
|
||||||
736,171
|
|
||||||
1139,145
|
|
||||||
323,708
|
|
||||||
928,686
|
|
||||||
527,851
|
|
||||||
478,771
|
|
||||||
895,505
|
|
||||||
320,455
|
|
||||||
156,268
|
|
||||||
787,399
|
|
||||||
1136,695
|
|
||||||
150,751
|
|
||||||
252,537
|
|
||||||
1242,631
|
|
||||||
468,40
|
|
||||||
436,208
|
|
||||||
380,261
|
|
||||||
324,3
|
|
||||||
954,93
|
|
||||||
946,504
|
|
||||||
991,817
|
|
||||||
604,177
|
|
||||||
565,348
|
|
||||||
705,406
|
|
||||||
89,38
|
|
||||||
735,418
|
|
||||||
234,161
|
|
||||||
880,0
|
|
||||||
956,553
|
|
||||||
523,847
|
|
||||||
654,753
|
|
||||||
946,266
|
|
||||||
465,822
|
|
||||||
768,282
|
|
||||||
3,5
|
|
||||||
18,513
|
|
||||||
758,737
|
|
||||||
980,639
|
|
||||||
1248,725
|
|
||||||
1250,570
|
|
||||||
807,716
|
|
||||||
1138,375
|
|
||||||
1076,354
|
|
||||||
922,561
|
|
||||||
417,434
|
|
||||||
831,626
|
|
||||||
115,861
|
|
||||||
1255,710
|
|
||||||
793,473
|
|
||||||
77,499
|
|
||||||
964,169
|
|
||||||
989,343
|
|
||||||
875,183
|
|
||||||
758,224
|
|
||||||
398,397
|
|
||||||
1208,670
|
|
||||||
903,266
|
|
||||||
77,403
|
|
||||||
82,176
|
|
||||||
427,313
|
|
||||||
139,152
|
|
||||||
810,550
|
|
||||||
577,619
|
|
||||||
867,665
|
|
||||||
443,665
|
|
||||||
485,775
|
|
||||||
272,686
|
|
||||||
196,833
|
|
||||||
291,163
|
|
||||||
1029,387
|
|
||||||
1221,38
|
|
||||||
1019,611
|
|
||||||
544,78
|
|
||||||
299,826
|
|
||||||
1289,854
|
|
||||||
1160,751
|
|
||||||
1230,469
|
|
||||||
408,290
|
|
||||||
1056,176
|
|
||||||
281,507
|
|
||||||
170,828
|
|
||||||
18,828
|
|
||||||
1175,329
|
|
||||||
539,413
|
|
||||||
698,764
|
|
||||||
373,59
|
|
||||||
433,376
|
|
||||||
1020,504
|
|
||||||
85,771
|
|
||||||
151,716
|
|
||||||
934,245
|
|
||||||
172,792
|
|
||||||
383,78
|
|
||||||
1223,725
|
|
||||||
348,278
|
|
||||||
3,453
|
|
||||||
152,525
|
|
||||||
1037,618
|
|
||||||
1197,686
|
|
||||||
319,749
|
|
||||||
328,318
|
|
||||||
623,42
|
|
||||||
1258,521
|
|
||||||
441,14
|
|
||||||
862,802
|
|
||||||
1233,459
|
|
||||||
1140,791
|
|
||||||
994,509
|
|
||||||
417,262
|
|
||||||
517,712
|
|
||||||
1029,507
|
|
||||||
52,821
|
|
||||||
984,133
|
|
||||||
1120,96
|
|
||||||
1186,764
|
|
||||||
482,760
|
|
||||||
1114,754
|
|
||||||
190,96
|
|
||||||
728,494
|
|
||||||
1071,602
|
|
||||||
1019,122
|
|
||||||
92,726
|
|
||||||
1221,856
|
|
||||||
710,686
|
|
||||||
1140,49
|
|
||||||
485,208
|
|
||||||
661,775
|
|
||||||
774,511
|
|
||||||
154,123
|
|
||||||
383,816
|
|
||||||
986,3
|
|
||||||
455,409
|
|
||||||
200,614
|
|
||||||
584,749
|
|
||||||
616,662
|
|
||||||
493,353
|
|
||||||
572,649
|
|
||||||
80,171
|
|
||||||
932,177
|
|
||||||
1237,614
|
|
||||||
574,171
|
|
||||||
480,247
|
|
||||||
656,193
|
|
||||||
1153,449
|
|
||||||
502,257
|
|
||||||
1303,632
|
|
||||||
733,403
|
|
||||||
1274,672
|
|
||||||
872,515
|
|
||||||
219,631
|
|
||||||
353,9
|
|
||||||
1020,47
|
|
||||||
683,602
|
|
||||||
62,169
|
|
||||||
734,586
|
|
||||||
325,614
|
|
||||||
482,323
|
|
||||||
1160,143
|
|
||||||
987,5
|
|
||||||
982,766
|
|
||||||
1115,495
|
|
||||||
1086,894
|
|
||||||
441,546
|
|
||||||
816,675
|
|
||||||
1272,662
|
|
||||||
929,618
|
|
||||||
865,480
|
|
||||||
237,262
|
|
||||||
729,728
|
|
||||||
1197,159
|
|
||||||
880,289
|
|
||||||
68,148
|
|
||||||
816,227
|
|
||||||
924,198
|
|
||||||
113,686
|
|
||||||
704,245
|
|
||||||
745,486
|
|
||||||
500,550
|
|
||||||
510,824
|
|
||||||
817,353
|
|
||||||
708,571
|
|
||||||
1021,77
|
|
||||||
929,276
|
|
||||||
704,79
|
|
||||||
1061,51
|
|
||||||
1002,514
|
|
||||||
351,152
|
|
||||||
934,693
|
|
||||||
216,709
|
|
||||||
736,469
|
|
||||||
130,385
|
|
||||||
1221,546
|
|
||||||
276,254
|
|
||||||
1054,556
|
|
||||||
1164,7
|
|
||||||
2,107
|
|
||||||
812,626
|
|
||||||
610,383
|
|
||||||
1069,164
|
|
||||||
738,848
|
|
||||||
462,73
|
|
||||||
618,579
|
|
||||||
299,516
|
|
||||||
126,775
|
|
||||||
415,389
|
|
||||||
1044,113
|
|
||||||
1115,47
|
|
||||||
1062,586
|
|
||||||
746,129
|
|
||||||
976,397
|
|
||||||
1309,166
|
|
||||||
602,323
|
|
||||||
494,227
|
|
||||||
888,820
|
|
||||||
835,662
|
|
||||||
728,400
|
|
||||||
1009,397
|
|
||||||
410,718
|
|
||||||
273,618
|
|
||||||
253,453
|
|
||||||
865,59
|
|
||||||
528,775
|
|
||||||
1002,380
|
|
||||||
224,446
|
|
||||||
1305,327
|
|
||||||
364,166
|
|
||||||
189,744
|
|
||||||
67,658
|
|
||||||
1307,67
|
|
||||||
572,848
|
|
||||||
957,9
|
|
||||||
454,602
|
|
||||||
743,837
|
|
||||||
811,593
|
|
||||||
113,882
|
|
||||||
77,275
|
|
||||||
1232,138
|
|
||||||
482,326
|
|
||||||
216,653
|
|
||||||
987,827
|
|
||||||
984,761
|
|
||||||
1121,150
|
|
||||||
90,765
|
|
||||||
274,323
|
|
||||||
701,123
|
|
||||||
308,514
|
|
||||||
1159,178
|
|
||||||
80,723
|
|
||||||
1154,268
|
|
||||||
1255,16
|
|
||||||
20,77
|
|
||||||
745,856
|
|
||||||
729,726
|
|
||||||
628,229
|
|
||||||
475,662
|
|
||||||
120,659
|
|
||||||
1091,711
|
|
||||||
688,476
|
|
||||||
500,312
|
|
||||||
408,171
|
|
||||||
996,543
|
|
||||||
323,453
|
|
||||||
826,66
|
|
||||||
508,775
|
|
||||||
89,632
|
|
||||||
601,52
|
|
||||||
686,18
|
|
||||||
638,455
|
|
||||||
1094,67
|
|
||||||
562,509
|
|
||||||
102,593
|
|
||||||
517,312
|
|
||||||
435,263
|
|
||||||
594,829
|
|
||||||
930,323
|
|
||||||
1073,348
|
|
||||||
524,509
|
|
||||||
659,653
|
|
||||||
895,690
|
|
||||||
443,372
|
|
||||||
1149,670
|
|
||||||
763,408
|
|
||||||
160,227
|
|
||||||
36,628
|
|
||||||
571,28
|
|
||||||
687,70
|
|
||||||
1307,889
|
|
||||||
200,539
|
|
||||||
87,243
|
|
||||||
818,753
|
|
||||||
1230,873
|
|
||||||
152,173
|
|
||||||
408,738
|
|
||||||
219,711
|
|
||||||
890,845
|
|
||||||
606,79
|
|
||||||
1168,77
|
|
||||||
1200,78
|
|
||||||
688,154
|
|
||||||
335,184
|
|
||||||
629,173
|
|
||||||
793,712
|
|
||||||
318,571
|
|
||||||
769,686
|
|
||||||
1310,141
|
|
||||||
234,354
|
|
||||||
3,403
|
|
||||||
155,322
|
|
||||||
579,516
|
|
||||||
706,53
|
|
||||||
977,241
|
|
||||||
1178,652
|
|
||||||
1054,637
|
|
||||||
5,791
|
|
||||||
316,593
|
|
||||||
681,528
|
|
||||||
226,152
|
|
||||||
838,53
|
|
||||||
316,301
|
|
||||||
947,283
|
|
||||||
647,262
|
|
||||||
833,427
|
|
||||||
1014,233
|
|
||||||
1058,502
|
|
||||||
562,207
|
|
||||||
224,894
|
|
||||||
836,775
|
|
||||||
869,14
|
|
||||||
256,273
|
|
||||||
541,686
|
|
||||||
1227,345
|
|
||||||
1074,99
|
|
||||||
92,562
|
|
||||||
489,306
|
|
||||||
1149,801
|
|
||||||
172,760
|
|
||||||
811,301
|
|
||||||
1230,425
|
|
||||||
512,718
|
|
||||||
1084,152
|
|
||||||
213,14
|
|
||||||
813,445
|
|
||||||
628,665
|
|
||||||
1011,516
|
|
||||||
850,773
|
|
||||||
21,40
|
|
||||||
1033,406
|
|
||||||
783,43
|
|
||||||
719,840
|
|
||||||
1225,164
|
|
||||||
219,152
|
|
||||||
1222,173
|
|
||||||
1038,686
|
|
||||||
236,99
|
|
||||||
1220,99
|
|
||||||
761,824
|
|
||||||
909,814
|
|
||||||
740,756
|
|
||||||
676,278
|
|
||||||
219,183
|
|
||||||
1218,168
|
|
||||||
1233,485
|
|
||||||
281,682
|
|
||||||
403,465
|
|
||||||
672,455
|
|
||||||
1037,276
|
|
||||||
649,775
|
|
||||||
622,292
|
|
||||||
1303,262
|
|
||||||
435,94
|
|
||||||
68,631
|
|
||||||
402,201
|
|
||||||
326,133
|
|
||||||
574,51
|
|
||||||
986,891
|
|
||||||
1120,350
|
|
||||||
912,621
|
|
||||||
970,792
|
|
||||||
549,824
|
|
||||||
253,677
|
|
||||||
536,292
|
|
||||||
1290,177
|
|
||||||
28,190
|
|
||||||
356,93
|
|
||||||
842,40
|
|
||||||
769,208
|
|
||||||
653,877
|
|
||||||
1215,460
|
|
||||||
803,8
|
|
||||||
1262,245
|
|
||||||
417,348
|
|
||||||
865,507
|
|
||||||
1116,325
|
|
||||||
580,828
|
|
||||||
314,211
|
|
||||||
1233,185
|
|
||||||
582,624
|
|
||||||
818,499
|
|
||||||
661,464
|
|
||||||
726,749
|
|
||||||
933,488
|
|
||||||
77,459
|
|
||||||
604,702
|
|
||||||
454,7
|
|
||||||
435,711
|
|
||||||
416,873
|
|
||||||
1130,439
|
|
||||||
137,312
|
|
||||||
113,208
|
|
||||||
582,494
|
|
||||||
1138,102
|
|
||||||
924,310
|
|
||||||
281,387
|
|
||||||
569,663
|
|
||||||
652,143
|
|
||||||
353,885
|
|
||||||
602,633
|
|
||||||
816,219
|
|
||||||
606,649
|
|
||||||
191,565
|
|
||||||
55,464
|
|
||||||
846,96
|
|
||||||
422,759
|
|
||||||
253,441
|
|
||||||
560,311
|
|
||||||
36,679
|
|
||||||
1290,525
|
|
||||||
1158,173
|
|
||||||
333,775
|
|
||||||
704,649
|
|
||||||
527,857
|
|
||||||
692,579
|
|
||||||
72,176
|
|
||||||
584,690
|
|
||||||
562,687
|
|
||||||
1121,822
|
|
||||||
599,246
|
|
||||||
319,593
|
|
||||||
1124,488
|
|
||||||
657,877
|
|
||||||
457,675
|
|
||||||
1179,266
|
|
||||||
668,568
|
|
||||||
577,171
|
|
||||||
170,845
|
|
||||||
865,387
|
|
||||||
452,578
|
|
||||||
174,141
|
|
||||||
119,203
|
|
||||||
70,674
|
|
||||||
745,348
|
|
||||||
12,326
|
|
||||||
1240,749
|
|
||||||
239,389
|
|
||||||
574,313
|
|
||||||
709,52
|
|
||||||
542,282
|
|
||||||
31,824
|
|
||||||
110,368
|
|
||||||
182,219
|
|
||||||
353,437
|
|
||||||
755,133
|
|
||||||
1029,212
|
|
||||||
571,866
|
|
||||||
494,675
|
|
||||||
715,212
|
|
||||||
920,844
|
|
||||||
1181,667
|
|
||||||
704,525
|
|
||||||
20,369
|
|
||||||
729,814
|
|
||||||
1168,176
|
|
||||||
290,119
|
|
||||||
1196,143
|
|
||||||
748,338
|
|
||||||
1183,25
|
|
||||||
221,376
|
|
||||||
1258,883
|
|
||||||
331,226
|
|
||||||
700,383
|
|
||||||
731,516
|
|
||||||
649,430
|
|
||||||
227,502
|
|
||||||
783,3
|
|
||||||
959,152
|
|
||||||
440,836
|
|
||||||
726,369
|
|
||||||
70,749
|
|
||||||
1171,152
|
|
||||||
897,388
|
|
||||||
154,344
|
|
||||||
661,430
|
|
||||||
994,385
|
|
||||||
507,8
|
|
||||||
800,70
|
|
||||||
739,345
|
|
||||||
1192,511
|
|
||||||
478,751
|
|
||||||
853,890
|
|
||||||
298,821
|
|
||||||
808,39
|
|
||||||
687,852
|
|
||||||
254,176
|
|
||||||
127,473
|
|
||||||
1195,553
|
|
||||||
733,619
|
|
||||||
214,58
|
|
||||||
788,793
|
|
||||||
723,455
|
|
||||||
465,150
|
|
||||||
10,471
|
|
||||||
373,235
|
|
||||||
623,294
|
|
||||||
281,212
|
|
||||||
1016,173
|
|
||||||
912,257
|
|
||||||
1061,388
|
|
||||||
1190,235
|
|
||||||
546,656
|
|
||||||
378,389
|
|
||||||
676,616
|
|
||||||
1240,397
|
|
||||||
783,409
|
|
||||||
400,64
|
|
||||||
569,282
|
|
||||||
1292,841
|
|
||||||
663,262
|
|
||||||
1262,705
|
|
||||||
457,4
|
|
||||||
1232,308
|
|
||||||
226,742
|
|
||||||
649,327
|
|
||||||
952,381
|
|
||||||
567,651
|
|
||||||
724,263
|
|
||||||
940,316
|
|
||||||
956,240
|
|
||||||
53,500
|
|
||||||
1298,326
|
|
||||||
1016,866
|
|
||||||
1223,690
|
|
||||||
688,292
|
|
||||||
1076,332
|
|
||||||
632,782
|
|
||||||
454,740
|
|
||||||
131,495
|
|
||||||
152,141
|
|
||||||
989,653
|
|
||||||
189,488
|
|
||||||
1086,224
|
|
||||||
1072,873
|
|
||||||
651,515
|
|
||||||
870,58
|
|
||||||
932,169
|
|
||||||
1258,409
|
|
||||||
700,511
|
|
||||||
769,735
|
|
||||||
5,567
|
|
||||||
321,241
|
|
||||||
200,740
|
|
||||||
576,586
|
|
||||||
581,726
|
|
||||||
303,742
|
|
||||||
132,652
|
|
||||||
1014,428
|
|
||||||
380,633
|
|
||||||
330,815
|
|
||||||
73,280
|
|
||||||
1207,488
|
|
||||||
536,511
|
|
||||||
902,604
|
|
||||||
446,852
|
|
||||||
448,11
|
|
||||||
77,485
|
|
||||||
594,65
|
|
||||||
1039,78
|
|
||||||
708,11
|
|
||||||
482,550
|
|
||||||
331,345
|
|
||||||
373,771
|
|
||||||
333,103
|
|
||||||
959,742
|
|
||||||
1220,795
|
|
||||||
36,215
|
|
||||||
848,821
|
|
||||||
726,145
|
|
||||||
482,568
|
|
||||||
682,665
|
|
||||||
937,771
|
|
||||||
298,353
|
|
||||||
774,383
|
|
||||||
28,373
|
|
||||||
826,49
|
|
||||||
364,266
|
|
||||||
716,0
|
|
||||||
883,581
|
|
||||||
1094,795
|
|
||||||
212,306
|
|
||||||
136,789
|
|
||||||
401,814
|
|
||||||
659,889
|
|
||||||
422,74
|
|
||||||
541,208
|
|
||||||
20,817
|
|
||||||
364,728
|
|
||||||
785,785
|
|
||||||
937,212
|
|
||||||
1104,204
|
|
||||||
74,290
|
|
||||||
855,309
|
|
||||||
7,856
|
|
||||||
587,439
|
|
||||||
663,38
|
|
||||||
174,199
|
|
||||||
282,679
|
|
||||||
1120,798
|
|
||||||
845,582
|
|
||||||
290,847
|
|
||||||
92,332
|
|
||||||
1243,236
|
|
||||||
1020,266
|
|
||||||
443,105
|
|
||||||
497,449
|
|
||||||
728,270
|
|
||||||
124,764
|
|
||||||
1280,513
|
|
||||||
535,203
|
|
||||||
741,771
|
|
||||||
278,201
|
|
||||||
708,633
|
|
||||||
599,269
|
|
||||||
842,854
|
|
||||||
994,301
|
|
||||||
18,841
|
|
||||||
324,891
|
|
||||||
480,641
|
|
||||||
740,138
|
|
||||||
95,882
|
|
||||||
734,308
|
|
||||||
577,282
|
|
||||||
793,296
|
|
||||||
932,389
|
|
||||||
705,488
|
|
||||||
52,521
|
|
||||||
180,455
|
|
||||||
1190,540
|
|
||||||
581,814
|
|
||||||
420,637
|
|
||||||
160,667
|
|
||||||
478,359
|
|
||||||
190,798
|
|
||||||
150,143
|
|
||||||
130,826
|
|
||||||
89,348
|
|
||||||
569,123
|
|
||||||
771,301
|
|
||||||
853,442
|
|
||||||
1146,753
|
|
||||||
733,395
|
|
||||||
348,333
|
|
||||||
441,287
|
|
||||||
216,99
|
|
||||||
3,67
|
|
||||||
176,183
|
|
||||||
547,856
|
|
||||||
68,711
|
|
||||||
605,406
|
|
||||||
544,627
|
|
||||||
105,152
|
|
||||||
856,103
|
|
||||||
1032,201
|
|
||||||
618,131
|
|
||||||
599,878
|
|
||||||
604,841
|
|
||||||
1233,275
|
|
||||||
479,626
|
|
||||||
1151,522
|
|
||||||
21,854
|
|
||||||
668,543
|
|
||||||
1028,740
|
|
||||||
113,159
|
|
||||||
746,577
|
|
||||||
586,863
|
|
||||||
1247,840
|
|
||||||
272,208
|
|
||||||
201,138
|
|
||||||
249,58
|
|
||||||
159,372
|
|
||||||
87,725
|
|
||||||
776,540
|
|
||||||
907,579
|
|
||||||
1099,677
|
|
||||||
468,854
|
|
||||||
748,687
|
|
||||||
303,152
|
|
||||||
1094,241
|
|
||||||
52,373
|
|
||||||
85,739
|
|
||||||
48,189
|
|
||||||
52,883
|
|
||||||
157,445
|
|
||||||
430,0
|
|
||||||
185,234
|
|
||||||
127,627
|
|
||||||
6,887
|
|
||||||
527,627
|
|
||||||
582,176
|
|
||||||
1118,521
|
|
||||||
216,67
|
|
||||||
386,198
|
|
||||||
1150,227
|
|
||||||
172,344
|
|
||||||
687,600
|
|
||||||
120,690
|
|
||||||
387,712
|
|
||||||
1203,632
|
|
||||||
888,123
|
|
||||||
689,676
|
|
||||||
468,488
|
|
||||||
933,770
|
|
||||||
199,267
|
|
||||||
256,497
|
|
||||||
586,263
|
|
||||||
895,389
|
|
||||||
110,627
|
|
||||||
479,268
|
|
||||||
741,730
|
|
||||||
694,232
|
|
||||||
666,301
|
|
||||||
704,490
|
|
||||||
129,667
|
|
||||||
1242,711
|
|
||||||
830,641
|
|
||||||
194,325
|
|
||||||
618,315
|
|
||||||
910,64
|
|
||||||
1052,298
|
|
||||||
1171,742
|
|
||||||
869,546
|
|
||||||
1153,880
|
|
||||||
1148,128
|
|
||||||
381,173
|
|
||||||
1233,11
|
|
||||||
1240,130
|
|
||||||
103,488
|
|
||||||
274,267
|
|
||||||
402,693
|
|
||||||
594,381
|
|
||||||
495,267
|
|
||||||
246,425
|
|
||||||
1292,268
|
|
||||||
602,37
|
|
||||||
539,677
|
|
||||||
793,421
|
|
||||||
711,16
|
|
||||||
89,856
|
|
||||||
1073,460
|
|
||||||
1020,180
|
|
||||||
763,856
|
|
||||||
438,205
|
|
||||||
365,817
|
|
||||||
1210,600
|
|
||||||
372,224
|
|
||||||
135,565
|
|
||||||
853,452
|
|
||||||
239,242
|
|
||||||
363,283
|
|
||||||
1079,348
|
|
||||||
142,176
|
|
||||||
107,632
|
|
||||||
534,242
|
|
||||||
530,130
|
|
||||||
142,77
|
|
||||||
1290,77
|
|
||||||
1218,385
|
|
||||||
249,51
|
|
||||||
214,57
|
|
||||||
687,42
|
|
||||||
972,77
|
|
||||||
1173,296
|
|
||||||
808,305
|
|
||||||
813,1
|
|
||||||
1225,155
|
|
||||||
333,791
|
|
||||||
774,607
|
|
||||||
1300,23
|
|
||||||
1140,103
|
|
||||||
340,550
|
|
||||||
154,582
|
|
||||||
10,423
|
|
||||||
38,662
|
|
||||||
565,856
|
|
||||||
354,688
|
|
||||||
333,241
|
|
||||||
1256,208
|
|
||||||
272,656
|
|
||||||
736,51
|
|
||||||
880,672
|
|
||||||
1145,894
|
|
||||||
1022,379
|
|
||||||
566,721
|
|
||||||
668,102
|
|
||||||
503,716
|
|
||||||
912,497
|
|
||||||
610,511
|
|
||||||
1292,828
|
|
||||||
282,222
|
|
||||||
22,782
|
|
||||||
572,718
|
|
||||||
|
|
||||||
fold along x=655
|
|
||||||
fold along y=447
|
|
||||||
fold along x=327
|
|
||||||
fold along y=223
|
|
||||||
fold along x=163
|
|
||||||
fold along y=111
|
|
||||||
fold along x=81
|
|
||||||
fold along y=55
|
|
||||||
fold along x=40
|
|
||||||
fold along y=27
|
|
||||||
fold along y=13
|
|
||||||
fold along y=6
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
PHVCVBFHCVPFKBNHKNBO
|
|
||||||
|
|
||||||
HK -> F
|
|
||||||
VN -> S
|
|
||||||
NB -> F
|
|
||||||
HF -> B
|
|
||||||
CK -> N
|
|
||||||
VP -> B
|
|
||||||
HO -> P
|
|
||||||
NH -> N
|
|
||||||
CC -> N
|
|
||||||
FC -> P
|
|
||||||
OK -> S
|
|
||||||
OO -> P
|
|
||||||
ON -> C
|
|
||||||
VF -> B
|
|
||||||
NN -> O
|
|
||||||
KS -> P
|
|
||||||
FK -> K
|
|
||||||
HB -> V
|
|
||||||
SH -> O
|
|
||||||
OB -> K
|
|
||||||
PB -> V
|
|
||||||
BO -> O
|
|
||||||
NV -> K
|
|
||||||
CV -> H
|
|
||||||
PH -> H
|
|
||||||
KO -> B
|
|
||||||
BC -> B
|
|
||||||
KC -> B
|
|
||||||
SO -> P
|
|
||||||
CF -> V
|
|
||||||
VS -> F
|
|
||||||
OV -> N
|
|
||||||
NS -> K
|
|
||||||
KV -> O
|
|
||||||
OP -> O
|
|
||||||
HH -> C
|
|
||||||
FB -> S
|
|
||||||
CO -> K
|
|
||||||
SB -> K
|
|
||||||
SN -> V
|
|
||||||
OF -> F
|
|
||||||
BN -> F
|
|
||||||
CP -> C
|
|
||||||
NC -> H
|
|
||||||
VH -> S
|
|
||||||
HV -> V
|
|
||||||
NF -> B
|
|
||||||
SS -> K
|
|
||||||
FO -> F
|
|
||||||
VO -> H
|
|
||||||
KK -> C
|
|
||||||
PF -> V
|
|
||||||
OS -> F
|
|
||||||
OC -> H
|
|
||||||
SK -> V
|
|
||||||
FF -> H
|
|
||||||
PK -> N
|
|
||||||
PC -> O
|
|
||||||
SP -> B
|
|
||||||
CB -> B
|
|
||||||
CH -> H
|
|
||||||
FN -> V
|
|
||||||
SV -> O
|
|
||||||
SC -> P
|
|
||||||
NP -> B
|
|
||||||
BB -> S
|
|
||||||
PV -> S
|
|
||||||
VB -> P
|
|
||||||
SF -> H
|
|
||||||
VC -> O
|
|
||||||
HN -> V
|
|
||||||
BF -> O
|
|
||||||
NO -> O
|
|
||||||
HP -> N
|
|
||||||
VV -> K
|
|
||||||
HS -> P
|
|
||||||
FH -> N
|
|
||||||
KB -> F
|
|
||||||
KF -> B
|
|
||||||
PN -> K
|
|
||||||
KH -> K
|
|
||||||
CN -> S
|
|
||||||
PP -> O
|
|
||||||
BP -> O
|
|
||||||
OH -> B
|
|
||||||
FS -> O
|
|
||||||
BK -> B
|
|
||||||
PO -> V
|
|
||||||
CS -> C
|
|
||||||
BV -> N
|
|
||||||
KP -> O
|
|
||||||
KN -> B
|
|
||||||
VK -> F
|
|
||||||
HC -> O
|
|
||||||
BH -> B
|
|
||||||
FP -> H
|
|
||||||
NK -> V
|
|
||||||
BS -> C
|
|
||||||
FV -> F
|
|
||||||
PS -> P
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.factory.findDayDefinition
|
|
||||||
import be.vandewalleh.aoc.utils.factory.registerExampleLoader
|
|
||||||
import io.micronaut.context.BeanContext
|
|
||||||
import org.assertj.core.api.Assertions
|
|
||||||
import org.junit.jupiter.api.AfterAll
|
|
||||||
import org.junit.jupiter.api.Test
|
|
||||||
import org.junit.jupiter.api.TestInstance
|
|
||||||
import org.junit.jupiter.api.extension.ConditionEvaluationResult
|
|
||||||
import org.junit.jupiter.api.extension.ExecutionCondition
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith
|
|
||||||
import org.junit.jupiter.api.extension.ExtensionContext
|
|
||||||
|
|
||||||
class Condition : ExecutionCondition {
|
|
||||||
private val methods: Map<String, (BaseDayTest) -> Any?> = mapOf(
|
|
||||||
"part1 example result" to { it.part1Example },
|
|
||||||
"part1 result" to { it.part1Answer },
|
|
||||||
"part2 example result" to { it.part2Example },
|
|
||||||
"part2 result" to { it.part2Answer },
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun evaluateExecutionCondition(context: ExtensionContext): ConditionEvaluationResult {
|
|
||||||
val methodName = context.testMethod.orElseGet { null }?.name
|
|
||||||
methods[methodName]?.let {
|
|
||||||
val instance = context.testInstance.get() as BaseDayTest
|
|
||||||
if (it(instance) == null) return ConditionEvaluationResult.disabled("")
|
|
||||||
}
|
|
||||||
return ConditionEvaluationResult.enabled("")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
|
||||||
@ExtendWith(Condition::class)
|
|
||||||
abstract class BaseDayTest() {
|
|
||||||
|
|
||||||
abstract val example: String
|
|
||||||
|
|
||||||
abstract val part1Example: Any?
|
|
||||||
abstract val part1Answer: Any?
|
|
||||||
|
|
||||||
abstract val part2Example: Any?
|
|
||||||
abstract val part2Answer: Any?
|
|
||||||
|
|
||||||
private val ctx = lazy {
|
|
||||||
BeanContext.run()
|
|
||||||
}
|
|
||||||
|
|
||||||
private val day by lazy(LazyThreadSafetyMode.NONE) {
|
|
||||||
this::class.java.simpleName.replace("Day", "").replace("Test", "").toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)!!) }
|
|
||||||
|
|
||||||
private val exampleCtx = lazy {
|
|
||||||
BeanContext.build()
|
|
||||||
.apply { registerExampleLoader(example) }
|
|
||||||
.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
val exampleInstance by lazy { exampleCtx.value.getBean(exampleCtx.value.findDayDefinition(day)!!) }
|
|
||||||
|
|
||||||
@AfterAll
|
|
||||||
fun `after all`() {
|
|
||||||
arrayOf(ctx, exampleCtx).filter { it.isInitialized() }.forEach { it.value.stop() }
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `part1 example result`() {
|
|
||||||
Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `part1 result`() {
|
|
||||||
Assertions.assertThat(instance.part1()).isEqualTo(part1Answer)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `part2 example result`() {
|
|
||||||
Assertions.assertThat(exampleInstance.part2()).isEqualTo(part2Example)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `part2 result`() {
|
|
||||||
Assertions.assertThat(instance.part2()).isEqualTo(part2Answer)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day01Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
199
|
|
||||||
200
|
|
||||||
208
|
|
||||||
210
|
|
||||||
200
|
|
||||||
207
|
|
||||||
240
|
|
||||||
269
|
|
||||||
260
|
|
||||||
263
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 7
|
|
||||||
override val part2Example = 5
|
|
||||||
|
|
||||||
override val part1Answer = 1559
|
|
||||||
override val part2Answer = 1600
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day02Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
forward 5
|
|
||||||
down 5
|
|
||||||
forward 8
|
|
||||||
up 3
|
|
||||||
down 8
|
|
||||||
forward 2
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 150
|
|
||||||
override val part2Example = 900
|
|
||||||
|
|
||||||
override val part1Answer = 1938402
|
|
||||||
override val part2Answer = 1947878632
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day03Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
00100
|
|
||||||
11110
|
|
||||||
10110
|
|
||||||
10111
|
|
||||||
10101
|
|
||||||
01111
|
|
||||||
00111
|
|
||||||
11100
|
|
||||||
10000
|
|
||||||
11001
|
|
||||||
00010
|
|
||||||
01010
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 198
|
|
||||||
override val part2Example = 230
|
|
||||||
|
|
||||||
override val part1Answer = 3277364
|
|
||||||
override val part2Answer = 5736383
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day04Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1
|
|
||||||
|
|
||||||
22 13 17 11 0
|
|
||||||
8 2 23 4 24
|
|
||||||
21 9 14 16 7
|
|
||||||
6 10 3 18 5
|
|
||||||
1 12 20 15 19
|
|
||||||
|
|
||||||
3 15 0 2 22
|
|
||||||
9 18 13 17 5
|
|
||||||
19 8 7 25 23
|
|
||||||
20 11 10 24 4
|
|
||||||
14 21 16 12 6
|
|
||||||
|
|
||||||
14 21 17 24 4
|
|
||||||
10 16 15 9 19
|
|
||||||
18 8 23 26 20
|
|
||||||
22 11 13 6 5
|
|
||||||
2 0 12 3 7
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 4512
|
|
||||||
override val part1Answer = 87456
|
|
||||||
|
|
||||||
override val part2Example = 1924
|
|
||||||
override val part2Answer = 15561
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day05Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
0,9 -> 5,9
|
|
||||||
8,0 -> 0,8
|
|
||||||
9,4 -> 3,4
|
|
||||||
2,2 -> 2,1
|
|
||||||
7,0 -> 7,4
|
|
||||||
6,4 -> 2,0
|
|
||||||
0,9 -> 2,9
|
|
||||||
3,4 -> 1,4
|
|
||||||
0,0 -> 8,8
|
|
||||||
5,5 -> 8,2
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 5
|
|
||||||
override val part1Answer = 6841
|
|
||||||
|
|
||||||
override val part2Example = 12
|
|
||||||
override val part2Answer = 19258
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day06Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
3,4,3,1,2
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 5934L
|
|
||||||
override val part1Answer = 373378L
|
|
||||||
|
|
||||||
override val part2Example = 26984457539
|
|
||||||
override val part2Answer = 1682576647495
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day07Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
16,1,2,0,4,2,7,1,2,14
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 37
|
|
||||||
override val part1Answer = 336040
|
|
||||||
|
|
||||||
override val part2Example = 168
|
|
||||||
override val part2Answer = 94813675
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day08Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe
|
|
||||||
edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc
|
|
||||||
fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg
|
|
||||||
fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb
|
|
||||||
aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea
|
|
||||||
fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb
|
|
||||||
dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe
|
|
||||||
bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef
|
|
||||||
egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb
|
|
||||||
gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 26
|
|
||||||
override val part1Answer = 303
|
|
||||||
|
|
||||||
override val part2Example = 61229
|
|
||||||
override val part2Answer = 961734
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day09Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
2199943210
|
|
||||||
3987894921
|
|
||||||
9856789892
|
|
||||||
8767896789
|
|
||||||
9899965678
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 15
|
|
||||||
override val part1Answer = 603
|
|
||||||
|
|
||||||
override val part2Example = 1134
|
|
||||||
override val part2Answer = 786780
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day10Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
[({(<(())[]>[[{[]{<()<>>
|
|
||||||
[(()[<>])]({[<{<<[]>>(
|
|
||||||
{([(<{}[<>[]}>{[]{[(<()>
|
|
||||||
(((({<>}<{<{<>}{[]{[]{}
|
|
||||||
[[<[([]))<([[{}[[()]]]
|
|
||||||
[{[{({}]{}}([{[{{{}}([]
|
|
||||||
{<[[]]>}<{[{[{[]{()[[[]
|
|
||||||
[<(<(<(<{}))><([]([]()
|
|
||||||
<{([([[(<>()){}]>(<<{{
|
|
||||||
<{([{{}}[<[[[<>{}]]]>[]]
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 26397
|
|
||||||
override val part1Answer = 294195
|
|
||||||
|
|
||||||
override val part2Example = 288957L
|
|
||||||
override val part2Answer = 3490802734L
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day11Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
5483143223
|
|
||||||
2745854711
|
|
||||||
5264556173
|
|
||||||
6141336146
|
|
||||||
6357385478
|
|
||||||
4167524645
|
|
||||||
2176841721
|
|
||||||
6882881134
|
|
||||||
4846848554
|
|
||||||
5283751526
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 1656
|
|
||||||
override val part1Answer = 1661
|
|
||||||
|
|
||||||
override val part2Example = 195
|
|
||||||
override val part2Answer = 334
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day12Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
start-A
|
|
||||||
start-b
|
|
||||||
A-c
|
|
||||||
A-b
|
|
||||||
b-d
|
|
||||||
A-end
|
|
||||||
b-end
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 10
|
|
||||||
override val part1Answer = 4413
|
|
||||||
|
|
||||||
override val part2Example = 36
|
|
||||||
override val part2Answer = 118803
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package be.vandewalleh.aoc.days
|
|
||||||
|
|
||||||
class Day14Test : BaseDayTest() {
|
|
||||||
override val example = """
|
|
||||||
NNCB
|
|
||||||
|
|
||||||
CH -> B
|
|
||||||
HH -> N
|
|
||||||
CB -> H
|
|
||||||
NH -> C
|
|
||||||
HB -> C
|
|
||||||
HC -> B
|
|
||||||
HN -> C
|
|
||||||
NN -> C
|
|
||||||
BH -> H
|
|
||||||
NC -> B
|
|
||||||
NB -> B
|
|
||||||
BN -> B
|
|
||||||
BB -> N
|
|
||||||
BC -> B
|
|
||||||
CC -> N
|
|
||||||
CN -> C
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override val part1Example = 1588L
|
|
||||||
override val part1Answer = 3555L
|
|
||||||
|
|
||||||
override val part2Example = 2188189693529
|
|
||||||
override val part2Answer = 4439442043739
|
|
||||||
}
|
|
||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("advent-of-code-downloader")
|
id("advent-of-code")
|
||||||
}
|
}
|
||||||
|
|
||||||
adventOfCode {
|
adventOfCode {
|
||||||
|
year = 2020
|
||||||
session = file(".session").readText().trim()
|
session = file(".session").readText().trim()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,16 @@ plugins {
|
|||||||
`kotlin-dsl`
|
`kotlin-dsl`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlinDslPluginOptions {
|
||||||
|
experimentalWarning.set(false)
|
||||||
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
maven { setUrl("https://kotlin.bintray.com/kotlinx") }
|
maven { setUrl("https://kotlin.bintray.com/kotlinx") }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0")
|
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20")
|
||||||
implementation("com.konghq:unirest-java:3.11.04")
|
implementation("com.konghq:unirest-java:3.11.04")
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-10
@@ -1,5 +1,3 @@
|
|||||||
import java.io.File
|
|
||||||
import java.time.LocalDateTime
|
|
||||||
import kong.unirest.Unirest
|
import kong.unirest.Unirest
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
@@ -7,12 +5,15 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.tasks.SourceSetContainer
|
import org.gradle.api.tasks.SourceSetContainer
|
||||||
import org.gradle.kotlin.dsl.create
|
import org.gradle.kotlin.dsl.create
|
||||||
import org.gradle.kotlin.dsl.getByType
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import java.io.File
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
open class AdventOfCodeExtension {
|
open class AdventOfCodeExtension {
|
||||||
var session: String? = null
|
var session: String? = null
|
||||||
|
var year: Int = 2020
|
||||||
}
|
}
|
||||||
|
|
||||||
class AdventOfCodeDownloaderPlugin : Plugin<Project> {
|
class AdventOfCodePlugin : Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
project.tasks.create("aoc") {
|
project.tasks.create("aoc") {
|
||||||
group = "Advent of Code"
|
group = "Advent of Code"
|
||||||
@@ -25,12 +26,8 @@ class AdventOfCodeDownloaderPlugin : Plugin<Project> {
|
|||||||
throw GradleException("advent of code session not set")
|
throw GradleException("advent of code session not set")
|
||||||
}
|
}
|
||||||
|
|
||||||
val now = LocalDateTime.now()
|
|
||||||
val year = now.year
|
|
||||||
val currentDay = now.dayOfMonth.toString()
|
|
||||||
|
|
||||||
val resourceDir: File = project
|
val resourceDir: File = project
|
||||||
.project(":$year")
|
.project(":days")
|
||||||
.extensions
|
.extensions
|
||||||
.getByType<SourceSetContainer>()
|
.getByType<SourceSetContainer>()
|
||||||
.getByName("main")
|
.getByName("main")
|
||||||
@@ -38,9 +35,9 @@ class AdventOfCodeDownloaderPlugin : Plugin<Project> {
|
|||||||
.srcDirs
|
.srcDirs
|
||||||
.first()
|
.first()
|
||||||
|
|
||||||
|
val currentDay = LocalDateTime.now().dayOfMonth.toString()
|
||||||
val outFile = File(resourceDir, "day" + currentDay.padStart(length = 2, padChar = '0') + ".txt")
|
val outFile = File(resourceDir, "day" + currentDay.padStart(length = 2, padChar = '0') + ".txt")
|
||||||
val url = "https://adventofcode.com/$year/day/$currentDay/input"
|
val url = "https://adventofcode.com/${extension.year}/day/$currentDay/input"
|
||||||
|
|
||||||
Unirest.get(url)
|
Unirest.get(url)
|
||||||
.cookie("session", extension.session)
|
.cookie("session", extension.session)
|
||||||
@@ -17,10 +17,10 @@ object Libs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object Micronaut {
|
object Micronaut {
|
||||||
private const val version = "3.2.0"
|
private const val version = "2.2.0"
|
||||||
const val inject = "io.micronaut:micronaut-inject:$version"
|
const val inject = "io.micronaut:micronaut-inject:$version"
|
||||||
const val core = "io.micronaut:micronaut-core:$version"
|
const val core = "io.micronaut:micronaut-core:$version"
|
||||||
const val kotlin = "io.micronaut.kotlin:micronaut-kotlin-extension-functions:3.0.0"
|
const val kotlin = "io.micronaut.kotlin:micronaut-kotlin-extension-functions:$version"
|
||||||
const val processor = "io.micronaut:micronaut-inject-java:$version"
|
const val processor = "io.micronaut:micronaut-inject-java:$version"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("kotlin-convention")
|
|
||||||
kotlin("kapt")
|
|
||||||
id("application")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":utils"))
|
|
||||||
|
|
||||||
kapt(Libs.Micronaut.processor)
|
|
||||||
|
|
||||||
implementation(Libs.Slf4J.api)
|
|
||||||
runtimeOnly(Libs.Slf4J.simple)
|
|
||||||
|
|
||||||
implementation(Libs.eclipseCollections)
|
|
||||||
|
|
||||||
testImplementation(Libs.Jmh.core)
|
|
||||||
testImplementation(Libs.Slf4J.simple)
|
|
||||||
kaptTest(Libs.Jmh.processor)
|
|
||||||
kaptTest(Libs.Slf4J.simple)
|
|
||||||
}
|
|
||||||
@@ -5,6 +5,7 @@ plugins {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
jcenter()
|
||||||
maven { url = uri("https://dl.bintray.com/arrow-kt/arrow-kt/") }
|
maven { url = uri("https://dl.bintray.com/arrow-kt/arrow-kt/") }
|
||||||
maven { url = uri("https://kotlin.bintray.com/kotlinx") }
|
maven { url = uri("https://kotlin.bintray.com/kotlinx") }
|
||||||
}
|
}
|
||||||
@@ -13,8 +14,8 @@ group = "be.vandewalleh"
|
|||||||
version = "1.0-SNAPSHOT"
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_15
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_15
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType<JavaCompile> {
|
tasks.withType<JavaCompile> {
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ plugins {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(kotlin("stdlib-jdk8"))
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.6.0"))
|
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.4.20"))
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType<KotlinCompile> {
|
tasks.withType<KotlinCompile> {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = "17"
|
jvmTarget = "15"
|
||||||
javaParameters = true
|
javaParameters = true
|
||||||
freeCompilerArgs = listOf(
|
freeCompilerArgs = listOf(
|
||||||
"-Xinline-classes",
|
"-Xinline-classes",
|
||||||
|
|||||||
-1
@@ -1 +0,0 @@
|
|||||||
implementation-class=AdventOfCodeDownloaderPlugin
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
implementation-class=AdventOfCodePlugin
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
plugins {
|
||||||
|
id("kotlin-convention")
|
||||||
|
kotlin("kapt")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":utils"))
|
||||||
|
|
||||||
|
implementation(Libs.Micronaut.core)
|
||||||
|
implementation(Libs.Micronaut.inject)
|
||||||
|
implementation(Libs.Micronaut.kotlin)
|
||||||
|
kapt(Libs.Micronaut.processor)
|
||||||
|
|
||||||
|
implementation(Libs.Slf4J.api)
|
||||||
|
runtimeOnly(Libs.Slf4J.simple)
|
||||||
|
|
||||||
|
implementation(Libs.eclipseCollections) {
|
||||||
|
because("Primitive collections mostly")
|
||||||
|
}
|
||||||
|
|
||||||
|
implementation(Libs.Arrow.core) {
|
||||||
|
because("Just in case")
|
||||||
|
}
|
||||||
|
|
||||||
|
testImplementation(Libs.Jmh.core)
|
||||||
|
kaptTest(Libs.Jmh.processor)
|
||||||
|
}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
@Day(1)
|
@Day(1)
|
||||||
class Day01(@Lines val items: IntArray) {
|
class Day01(@Lines input: Input<IntArray>) {
|
||||||
|
private val items = input.value
|
||||||
|
|
||||||
fun part1(): Int? {
|
fun part1(): Int? {
|
||||||
items.forEach { a ->
|
items.forEach { a ->
|
||||||
items.forEach { b ->
|
items.forEach { b ->
|
||||||
@@ -27,3 +31,7 @@ class Day01(@Lines val items: IntArray) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day01>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
|
data class PasswordEntry(val range: IntRange, val letter: Char, val password: String)
|
||||||
|
|
||||||
@Day(2)
|
@Day(2)
|
||||||
class Day02(@Lines input: List<String>) {
|
class Day02(@Lines input: Input<List<String>>) {
|
||||||
private data class PasswordEntry(val range: IntRange, val letter: Char, val password: String)
|
|
||||||
|
|
||||||
private val regex = "^(\\d+)-(\\d+) ([a-z]): (.*)$".toRegex()
|
private val regex = "^(\\d+)-(\\d+) ([a-z]): (.*)$".toRegex()
|
||||||
|
|
||||||
private val passwords = input.map {
|
private val passwords = input.value.map {
|
||||||
val (_, min, max, letter, password) = regex.find(it)!!.groupValues
|
val (_, min, max, letter, password) = regex.find(it)!!.groupValues
|
||||||
PasswordEntry(min.toInt()..max.toInt(), letter[0], password)
|
PasswordEntry(min.toInt()..max.toInt(), letter[0], password)
|
||||||
}
|
}
|
||||||
@@ -20,3 +22,8 @@ class Day02(@Lines input: List<String>) {
|
|||||||
(pwd[range.first - 1] == letter) xor (pwd[range.last - 1] == letter)
|
(pwd[range.first - 1] == letter) xor (pwd[range.last - 1] == letter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day02>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
|
data class Slope(val x: Int, val y: Int)
|
||||||
|
|
||||||
@Day(3)
|
@Day(3)
|
||||||
class Day03(@Lines val input: List<String>) {
|
class Day03(@Lines val input: Input<List<String>>) {
|
||||||
private data class Slope(val x: Int, val y: Int)
|
|
||||||
|
|
||||||
private fun findSlope(slope: Slope): Int {
|
fun part1(slope: Slope = Slope(x = 3, y = 1)): Int {
|
||||||
val grid = input
|
val grid = input.value
|
||||||
var trees = 0
|
var trees = 0
|
||||||
var x = 0
|
var x = 0
|
||||||
var y = 0
|
var y = 0
|
||||||
@@ -25,8 +28,6 @@ class Day03(@Lines val input: List<String>) {
|
|||||||
return trees
|
return trees
|
||||||
}
|
}
|
||||||
|
|
||||||
fun part1() = findSlope(Slope(x = 3, y = 1))
|
|
||||||
|
|
||||||
fun part2(): Long = listOf(
|
fun part2(): Long = listOf(
|
||||||
Slope(x = 1, y = 1),
|
Slope(x = 1, y = 1),
|
||||||
Slope(x = 3, y = 1),
|
Slope(x = 3, y = 1),
|
||||||
@@ -34,6 +35,11 @@ class Day03(@Lines val input: List<String>) {
|
|||||||
Slope(x = 7, y = 1),
|
Slope(x = 7, y = 1),
|
||||||
Slope(x = 1, y = 2),
|
Slope(x = 1, y = 2),
|
||||||
)
|
)
|
||||||
.map { findSlope(it).toLong() }
|
.map { part1(it).toLong() }
|
||||||
.reduce { acc, trees -> acc * trees }
|
.reduce { acc, trees -> acc * trees }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day03>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Text
|
import be.vandewalleh.aoc.utils.input.Text
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
private typealias Entry = Pair<String, String>
|
typealias Entry = Pair<String, String>
|
||||||
private typealias Entries = List<Entry>
|
typealias Entries = List<Entry>
|
||||||
|
|
||||||
@Day(4)
|
@Day(4)
|
||||||
class Day04(@Text val input: String) {
|
class Day04(@Text val input: Input<String>) {
|
||||||
|
|
||||||
val entries = input.split("\n\n").map {
|
val entries = input.value.split("\n\n").map {
|
||||||
it.split(" ", "\n").map { it.split(":").let { (k, v) -> k to v } }
|
it.split(" ", "\n").map { it.split(":").let { (k, v) -> k to v } }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,3 +42,8 @@ class Day04(@Text val input: String) {
|
|||||||
|
|
||||||
fun part2() = entries.count { it.hasRequiredKeys() && it.all { it.isValid() } }
|
fun part2() = entries.count { it.hasRequiredKeys() && it.all { it.isValid() } }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day04>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
@Day(5)
|
@Day(5)
|
||||||
class Day05(@Lines val input: List<String>) {
|
class Day05(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val ids = input.map {
|
private val ids = input.value.map {
|
||||||
it.replace("F", "0")
|
it.replace("F", "0")
|
||||||
.replace("B", "1")
|
.replace("B", "1")
|
||||||
.replace("L", "0")
|
.replace("L", "0")
|
||||||
@@ -20,3 +22,8 @@ class Day05(@Lines val input: List<String>) {
|
|||||||
.find { (a, b) -> b - a > 1 }!!
|
.find { (a, b) -> b - a > 1 }!!
|
||||||
.first() + 1
|
.first() + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day05>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Text
|
import be.vandewalleh.aoc.utils.input.Text
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import org.eclipse.collections.impl.factory.primitive.CharBags
|
import org.eclipse.collections.impl.factory.primitive.CharBags
|
||||||
|
|
||||||
@Day(6)
|
@Day(6)
|
||||||
class Day06(@Text val input: String) {
|
class Day06(@Text val input: Input<String>) {
|
||||||
|
|
||||||
private val groups = input.split("\n\n")
|
private val groups = input.value.split("\n\n")
|
||||||
|
|
||||||
fun part1() = groups.sumBy { it.replace("\n", "").toCharArray().toSet().size }
|
fun part1() = groups.sumBy { it.replace("\n", "").toCharArray().toSet().size }
|
||||||
|
|
||||||
@@ -21,3 +23,8 @@ class Day06(@Text val input: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day06>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import org.eclipse.collections.api.factory.Stacks
|
import org.eclipse.collections.api.factory.Stacks
|
||||||
import org.eclipse.collections.api.multimap.list.ImmutableListMultimap
|
import org.eclipse.collections.api.multimap.list.ImmutableListMultimap
|
||||||
import org.eclipse.collections.api.stack.MutableStack
|
import org.eclipse.collections.api.stack.MutableStack
|
||||||
import org.eclipse.collections.impl.factory.Multimaps
|
import org.eclipse.collections.impl.factory.Multimaps
|
||||||
|
|
||||||
@Day(7)
|
data class Bag(val count: Int, val color: String)
|
||||||
class Day07(@Lines val input: List<String>) {
|
|
||||||
|
|
||||||
private data class Bag(val count: Int, val color: String)
|
@Day(7)
|
||||||
|
class Day07(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val map: ImmutableListMultimap<String, Bag>
|
private val map: ImmutableListMultimap<String, Bag>
|
||||||
|
|
||||||
@@ -20,7 +22,7 @@ class Day07(@Lines val input: List<String>) {
|
|||||||
val colorRegex = "^(\\w+ \\w+)".toRegex()
|
val colorRegex = "^(\\w+ \\w+)".toRegex()
|
||||||
val requirementRegex = "(\\d+) (\\w+ \\w+) bag".toRegex()
|
val requirementRegex = "(\\d+) (\\w+ \\w+) bag".toRegex()
|
||||||
|
|
||||||
for (line in input) {
|
for (line in input.value) {
|
||||||
val outerColor = colorRegex.find(line)!!.groupValues[1]
|
val outerColor = colorRegex.find(line)!!.groupValues[1]
|
||||||
for (match in requirementRegex.findAll(line)) {
|
for (match in requirementRegex.findAll(line)) {
|
||||||
val (_, count, color) = match.groupValues
|
val (_, count, color) = match.groupValues
|
||||||
@@ -48,3 +50,8 @@ class Day07(@Lines val input: List<String>) {
|
|||||||
fun part2() = bagSequence("shiny gold").sumBy { it.count }
|
fun part2() = bagSequence("shiny gold").sumBy { it.count }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day07>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,24 +1,21 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntLists
|
import org.eclipse.collections.impl.factory.primitive.IntLists
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntSets
|
import org.eclipse.collections.impl.factory.primitive.IntSets
|
||||||
|
|
||||||
@Day(8)
|
@Day(8)
|
||||||
class Day08(@Lines val input: List<String>) {
|
class Day08(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val instructions = input.map {
|
private val instructions = input.value.map {
|
||||||
val words = it.split(" ")
|
val words = it.split(" ")
|
||||||
Instruction(Operation.valueOf(words[0].capitalize()), words[1].toInt())
|
Instruction(Operation.valueOf(words[0].capitalize()), words[1].toInt())
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
|
|
||||||
fun part1() = run(instructions).let {
|
fun part1() = run(instructions)
|
||||||
when (it) {
|
|
||||||
is VmResult.Looped -> it.acc
|
|
||||||
is VmResult.Terminated -> it.acc
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun run(instructions: Array<Instruction>): VmResult {
|
private fun run(instructions: Array<Instruction>): VmResult {
|
||||||
var acc = 0
|
var acc = 0
|
||||||
@@ -44,7 +41,7 @@ class Day08(@Lines val input: List<String>) {
|
|||||||
return VmResult.Looped(acc)
|
return VmResult.Looped(acc)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun part2(): Int {
|
fun part2(): VmResult {
|
||||||
val possibleMutations = IntLists.mutable.empty()
|
val possibleMutations = IntLists.mutable.empty()
|
||||||
instructions.forEachIndexed { i, e ->
|
instructions.forEachIndexed { i, e ->
|
||||||
if (e.operation == Operation.Jmp || e.operation == Operation.Nop) possibleMutations.add(i)
|
if (e.operation == Operation.Jmp || e.operation == Operation.Nop) possibleMutations.add(i)
|
||||||
@@ -57,7 +54,7 @@ class Day08(@Lines val input: List<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val res = run(copy)
|
val res = run(copy)
|
||||||
if (res is VmResult.Terminated) return res.acc
|
if (res is VmResult.Terminated) return res
|
||||||
}
|
}
|
||||||
|
|
||||||
error("No result found")
|
error("No result found")
|
||||||
@@ -65,11 +62,17 @@ class Day08(@Lines val input: List<String>) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum class Operation { Acc, Jmp, Nop }
|
enum class Operation { Acc, Jmp, Nop }
|
||||||
|
|
||||||
private data class Instruction(val operation: Operation, val argument: Int)
|
data class Instruction(val operation: Operation, val argument: Int)
|
||||||
|
|
||||||
private sealed class VmResult {
|
sealed class VmResult {
|
||||||
data class Looped(val acc: Int) : VmResult()
|
data class Looped(val acc: Int) : VmResult()
|
||||||
data class Terminated(val acc: Int) : VmResult()
|
data class Terminated(val acc: Int) : VmResult()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val day = createDay<Day08>()
|
||||||
|
println(day.part1())
|
||||||
|
println(day.part2())
|
||||||
|
}
|
||||||
@@ -1,16 +1,20 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
@Day(9)
|
@Day(9)
|
||||||
class Day09(@Lines val input: LongArray) {
|
class Day09(@Lines val input: Input<LongArray>) {
|
||||||
|
|
||||||
private var part1Result = 0L
|
private var part1Result = 0L
|
||||||
|
|
||||||
fun part1(): Long? {
|
fun part1(): Long? {
|
||||||
for (windowStart in 0 until input.size - 26) {
|
val longs = input.value
|
||||||
val last = input[windowStart + 25]
|
|
||||||
|
for (windowStart in 0 until longs.size - 26) {
|
||||||
|
val last = longs[windowStart + 25]
|
||||||
if (!isValid(windowStart, last)) {
|
if (!isValid(windowStart, last)) {
|
||||||
part1Result = last
|
part1Result = last
|
||||||
return last
|
return last
|
||||||
@@ -23,8 +27,8 @@ class Day09(@Lines val input: LongArray) {
|
|||||||
private fun isValid(windowStart: Int, last: Long): Boolean {
|
private fun isValid(windowStart: Int, last: Long): Boolean {
|
||||||
for (i in windowStart until windowStart + 25) {
|
for (i in windowStart until windowStart + 25) {
|
||||||
for (j in windowStart + 1 until windowStart + 25) {
|
for (j in windowStart + 1 until windowStart + 25) {
|
||||||
val f = input[i]
|
val f = input.value[i]
|
||||||
val s = input[j]
|
val s = input.value[j]
|
||||||
if (f + s == last && f != s) return true
|
if (f + s == last && f != s) return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,10 +38,10 @@ class Day09(@Lines val input: LongArray) {
|
|||||||
fun part2(): Long {
|
fun part2(): Long {
|
||||||
var size = 2
|
var size = 2
|
||||||
while (true) {
|
while (true) {
|
||||||
for (startIndex in input.indices) {
|
for (startIndex in input.value.indices) {
|
||||||
val lastIndex = input.size - 1 - size
|
val lastIndex = input.value.size - 1 - size
|
||||||
if (startIndex + size > lastIndex) break
|
if (startIndex + size > lastIndex) break
|
||||||
val slice = input.sliceArray(startIndex..startIndex + size)
|
val slice = input.value.sliceArray(startIndex..startIndex + size)
|
||||||
if (slice.sum() == part1Result) return slice.minOrNull()!! + slice.maxOrNull()!!
|
if (slice.sum() == part1Result) return slice.minOrNull()!! + slice.maxOrNull()!!
|
||||||
}
|
}
|
||||||
size++
|
size++
|
||||||
@@ -45,3 +49,8 @@ class Day09(@Lines val input: LongArray) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day09>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import org.eclipse.collections.api.list.primitive.MutableIntList
|
import org.eclipse.collections.api.list.primitive.MutableIntList
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntLists
|
import org.eclipse.collections.impl.factory.primitive.IntLists
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntLongMaps
|
import org.eclipse.collections.impl.factory.primitive.IntLongMaps
|
||||||
|
|
||||||
@Day(10)
|
@Day(10)
|
||||||
class Day10(@Lines val input: IntArray) {
|
class Day10(@Lines val input: Input<IntArray>) {
|
||||||
|
|
||||||
fun part1(): Int {
|
fun part1(): Int {
|
||||||
val sorted = IntLists.mutable.of(0, *input).apply {
|
val sorted = IntLists.mutable.of(0, *input.value).apply {
|
||||||
sortThis()
|
sortThis()
|
||||||
add(last + 3)
|
add(last + 3)
|
||||||
}.toArray().toList()
|
}.toArray().toList()
|
||||||
@@ -27,7 +29,7 @@ class Day10(@Lines val input: IntArray) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun part2(): Long {
|
fun part2(): Long {
|
||||||
val sorted: MutableIntList = IntLists.mutable.of(*input).apply { sortThis() }
|
val sorted: MutableIntList = IntLists.mutable.of(*input.value).apply { sortThis() }
|
||||||
|
|
||||||
val map = IntLongMaps.mutable.empty().apply {
|
val map = IntLongMaps.mutable.empty().apply {
|
||||||
put(0, 1L)
|
put(0, 1L)
|
||||||
@@ -41,3 +43,8 @@ class Day10(@Lines val input: IntArray) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day10>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,32 +1,34 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
private typealias Seats = Array<CharArray>
|
typealias Seats = Array<CharArray>
|
||||||
|
|
||||||
private fun Seats.deepClone(): Seats = map { it.clone() }.toTypedArray()
|
fun Seats.deepClone(): Seats = map { it.clone() }.toTypedArray()
|
||||||
|
|
||||||
private operator fun Seats.get(x: Int, y: Int): Char = this[y][x]
|
operator fun Seats.get(x: Int, y: Int): Char = this[y][x]
|
||||||
private operator fun Seats.set(x: Int, y: Int, value: Char) {
|
operator fun Seats.set(x: Int, y: Int, value: Char) {
|
||||||
this[y][x] = value
|
this[y][x] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
private operator fun Seats.contains(xy: Pair<Int, Int>): Boolean {
|
operator fun Seats.contains(xy: Pair<Int, Int>): Boolean {
|
||||||
val (x, y) = xy
|
val (x, y) = xy
|
||||||
return x in 0 until width && y in 0 until height
|
return x in 0 until width && y in 0 until height
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Seats.width get() = first().size
|
val Seats.width get() = first().size
|
||||||
private val Seats.height get() = size
|
val Seats.height get() = size
|
||||||
|
|
||||||
private fun Seats.asGridString() = joinToString("\n") { it.joinToString("") }
|
fun Seats.asGridString() = joinToString("\n") { it.joinToString("") }
|
||||||
private fun Seats.countOccupied() = sumBy { it.count { it == '#' } }
|
fun Seats.countOccupied() = sumBy { it.count { it == '#' } }
|
||||||
|
|
||||||
@Day(11)
|
@Day(11)
|
||||||
class Day11(@Lines val input: List<String>) {
|
class Day11(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val seats: Seats = input.map { it.toCharArray() }.toTypedArray()
|
private val seats: Seats = input.value.map { it.toCharArray() }.toTypedArray()
|
||||||
|
|
||||||
private val directions = listOf(
|
private val directions = listOf(
|
||||||
-1 to -1,
|
-1 to -1,
|
||||||
@@ -114,3 +116,8 @@ class Day11(@Lines val input: List<String>) {
|
|||||||
fun part2() = findLastRepeating(seats, ::progress2).countOccupied()
|
fun part2() = findLastRepeating(seats, ::progress2).countOccupied()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day11>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
@Day(12)
|
@Day(12)
|
||||||
class Day12(@Lines val input: List<String>) {
|
class Day12(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
fun part1(): Int {
|
fun part1(): Int {
|
||||||
var x = 0
|
var x = 0
|
||||||
@@ -14,7 +16,7 @@ class Day12(@Lines val input: List<String>) {
|
|||||||
|
|
||||||
val dirs = listOf("N", "E", "S", "W")
|
val dirs = listOf("N", "E", "S", "W")
|
||||||
|
|
||||||
input.forEach {
|
input.value.forEach {
|
||||||
val dir = it.take(1)
|
val dir = it.take(1)
|
||||||
val steps = it.drop(1).toInt()
|
val steps = it.drop(1).toInt()
|
||||||
|
|
||||||
@@ -48,7 +50,7 @@ class Day12(@Lines val input: List<String>) {
|
|||||||
var waypointX = 10
|
var waypointX = 10
|
||||||
var waypointY = -1
|
var waypointY = -1
|
||||||
|
|
||||||
input.forEach {
|
input.value.forEach {
|
||||||
val dir = it.take(1)
|
val dir = it.take(1)
|
||||||
val steps = it.drop(1).toInt()
|
val steps = it.drop(1).toInt()
|
||||||
|
|
||||||
@@ -77,3 +79,8 @@ class Day12(@Lines val input: List<String>) {
|
|||||||
return abs(x) + abs(y)
|
return abs(x) + abs(y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day12>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,18 +1,20 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
private data class Bus(val index: Int, val id: Long)
|
data class Bus(val index: Int, val id: Long)
|
||||||
|
|
||||||
@Day(13)
|
@Day(13)
|
||||||
class Day13(@Lines val input: List<String>) {
|
class Day13(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
fun part1(): Int {
|
fun part1(): Int {
|
||||||
val id = input[0].toInt()
|
val id = input.value[0].toInt()
|
||||||
|
|
||||||
val (busId, min) = input[1]
|
val (busId, min) = input.value[1]
|
||||||
.splitToSequence(",")
|
.splitToSequence(",")
|
||||||
.filterNot { it == "x" }
|
.filterNot { it == "x" }
|
||||||
.map { it.toInt() }
|
.map { it.toInt() }
|
||||||
@@ -27,7 +29,7 @@ class Day13(@Lines val input: List<String>) {
|
|||||||
private fun lcm(a: Long, b: Long): Long = a / gcd(a, b) * b
|
private fun lcm(a: Long, b: Long): Long = a / gcd(a, b) * b
|
||||||
|
|
||||||
fun part2(): Long {
|
fun part2(): Long {
|
||||||
val buses = input[1]
|
val buses = input.value[1]
|
||||||
.splitToSequence(",")
|
.splitToSequence(",")
|
||||||
.mapIndexedNotNull { index, bus ->
|
.mapIndexedNotNull { index, bus ->
|
||||||
if (bus == "x") null
|
if (bus == "x") null
|
||||||
@@ -46,3 +48,8 @@ class Day13(@Lines val input: List<String>) {
|
|||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day13>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps
|
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps
|
||||||
import org.eclipse.collections.impl.factory.primitive.LongIntMaps
|
import org.eclipse.collections.impl.factory.primitive.LongIntMaps
|
||||||
|
|
||||||
@Day(14)
|
@Day(14)
|
||||||
class Day14(@Lines val input: List<String>) {
|
class Day14(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val memRe = "mem\\[(\\d+)] = (.*)$".toRegex()
|
private val memRe = "mem\\[(\\d+)] = (.*)$".toRegex()
|
||||||
|
|
||||||
@@ -18,7 +20,7 @@ class Day14(@Lines val input: List<String>) {
|
|||||||
|
|
||||||
var currentMask: String = ""
|
var currentMask: String = ""
|
||||||
|
|
||||||
for (line in input) {
|
for (line in input.value) {
|
||||||
if (line.startsWith("mask")) {
|
if (line.startsWith("mask")) {
|
||||||
currentMask = line.removePrefix("mask = ")
|
currentMask = line.removePrefix("mask = ")
|
||||||
} else {
|
} else {
|
||||||
@@ -44,7 +46,7 @@ class Day14(@Lines val input: List<String>) {
|
|||||||
|
|
||||||
var currentMask = ""
|
var currentMask = ""
|
||||||
|
|
||||||
for (line in input) {
|
for (line in input.value) {
|
||||||
if (line[1] == 'a') {
|
if (line[1] == 'a') {
|
||||||
currentMask = line.substring(7)
|
currentMask = line.substring(7)
|
||||||
} else {
|
} else {
|
||||||
@@ -91,3 +93,8 @@ class Day14(@Lines val input: List<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day14>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -2,14 +2,16 @@ package be.vandewalleh.aoc.days
|
|||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Csv
|
import be.vandewalleh.aoc.utils.input.Csv
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps
|
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps
|
||||||
|
|
||||||
@Day(15)
|
@Day(15)
|
||||||
class Day15(@Csv val input: IntArray) {
|
class Day15(@Csv val input: Input<IntArray>) {
|
||||||
|
|
||||||
private fun run(until: Int): Int {
|
private fun run(until: Int): Int {
|
||||||
val start = input
|
val start = input.value
|
||||||
|
|
||||||
val map = IntObjectMaps.mutable.empty<IntArray>()
|
val map = IntObjectMaps.mutable.empty<IntArray>()
|
||||||
|
|
||||||
@@ -41,3 +43,11 @@ class Day15(@Csv val input: IntArray) {
|
|||||||
|
|
||||||
fun part2() = run(until = 30000000)
|
fun part2() = run(until = 30000000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
// val input = Input(intArrayOf(3, 1, 2))
|
||||||
|
with(createDay<Day15>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ package be.vandewalleh.aoc.days
|
|||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
import be.vandewalleh.aoc.utils.input.Groups
|
import be.vandewalleh.aoc.utils.input.Groups
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import org.eclipse.collections.api.multimap.list.ListMultimap
|
import org.eclipse.collections.api.multimap.list.ListMultimap
|
||||||
import org.eclipse.collections.api.multimap.list.MutableListMultimap
|
import org.eclipse.collections.api.multimap.list.MutableListMultimap
|
||||||
import org.eclipse.collections.api.multimap.set.MutableSetMultimap
|
import org.eclipse.collections.api.multimap.set.MutableSetMultimap
|
||||||
@@ -9,11 +11,11 @@ import org.eclipse.collections.impl.factory.Multimaps
|
|||||||
import org.eclipse.collections.impl.multimap.list.FastListMultimap
|
import org.eclipse.collections.impl.multimap.list.FastListMultimap
|
||||||
|
|
||||||
@Day(16)
|
@Day(16)
|
||||||
class Day16(@Groups val input: List<List<String>>) {
|
class Day16(@Groups val input: Input<List<List<String>>>) {
|
||||||
|
|
||||||
private val rangesGroup = input[0]
|
private val rangesGroup = input.value[0]
|
||||||
private val myTicket = input[1][1]
|
private val myTicket = input.value[1][1]
|
||||||
private val nearbyTicketsGroup = input[2].drop(1)
|
private val nearbyTicketsGroup = input.value[2].drop(1)
|
||||||
|
|
||||||
private val rangeRe = "(\\d+)-(\\d+)".toRegex()
|
private val rangeRe = "(\\d+)-(\\d+)".toRegex()
|
||||||
|
|
||||||
@@ -146,3 +148,8 @@ class Day16(@Groups val input: List<List<String>>) {
|
|||||||
return rangesByName
|
return rangesByName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day16>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
|
|
||||||
private data class Point(val x: Int, val y: Int, val z: Int)
|
data class Point(val x: Int, val y: Int, val z: Int)
|
||||||
private data class Point4(val x: Int, val y: Int, val z: Int, val blah: Int)
|
data class Point4(val x: Int, val y: Int, val z: Int, val blah: Int)
|
||||||
|
|
||||||
private enum class State { Active, Inactive }
|
enum class State { Active, Inactive }
|
||||||
|
|
||||||
@Day(17)
|
@Day(17)
|
||||||
class Day17(@Lines val input: List<String>) {
|
class Day17(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
fun part1(): Int {
|
fun part1(): Int {
|
||||||
val grid = parseGrid { x, y -> Point(x, y, 0) }
|
val grid = parseGrid { x, y -> Point(x, y, 0) }
|
||||||
@@ -25,7 +27,7 @@ class Day17(@Lines val input: List<String>) {
|
|||||||
|
|
||||||
private fun <T> parseGrid(pointFactory: (x: Int, y: Int) -> T): MutableMap<T, State> {
|
private fun <T> parseGrid(pointFactory: (x: Int, y: Int) -> T): MutableMap<T, State> {
|
||||||
val grid = mutableMapOf<T, State>()
|
val grid = mutableMapOf<T, State>()
|
||||||
input.forEachIndexed { index, row ->
|
input.value.forEachIndexed { index, row ->
|
||||||
row.forEachIndexed { col, char ->
|
row.forEachIndexed { col, char ->
|
||||||
val state = if (char == '#') State.Active else State.Inactive
|
val state = if (char == '#') State.Active else State.Inactive
|
||||||
grid[pointFactory(index, col)] = state
|
grid[pointFactory(index, col)] = state
|
||||||
@@ -85,3 +87,8 @@ class Day17(@Lines val input: List<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day17>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
package be.vandewalleh.aoc.days
|
package be.vandewalleh.aoc.days
|
||||||
|
|
||||||
import be.vandewalleh.aoc.utils.input.Day
|
import be.vandewalleh.aoc.utils.input.Day
|
||||||
|
import be.vandewalleh.aoc.utils.input.Input
|
||||||
import be.vandewalleh.aoc.utils.input.Lines
|
import be.vandewalleh.aoc.utils.input.Lines
|
||||||
|
import be.vandewalleh.aoc.utils.input.createDay
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
|
|
||||||
private enum class Operator { Add, Multiply }
|
enum class Operator { Add, Multiply }
|
||||||
|
|
||||||
private operator fun Operator.invoke(a: Long, b: Long) = when (this) {
|
operator fun Operator.invoke(a: Long, b: Long) = when (this) {
|
||||||
Operator.Add -> a + b
|
Operator.Add -> a + b
|
||||||
Operator.Multiply -> a * b
|
Operator.Multiply -> a * b
|
||||||
}
|
}
|
||||||
@@ -18,10 +20,10 @@ private inline fun Logger.debug(msg: () -> Any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Day(18)
|
@Day(18)
|
||||||
class Day18(@Lines val input: List<String>) {
|
class Day18(@Lines val input: Input<List<String>>) {
|
||||||
|
|
||||||
private val logger = LoggerFactory.getLogger("Day18")
|
private val logger = LoggerFactory.getLogger("Day18")
|
||||||
private val lines = input.map { it.replace(" ", "") }
|
private val lines = input.value.map { it.replace(" ", "") }
|
||||||
|
|
||||||
private fun parseGroups(line: String): Map<Int, List<IntRange>> {
|
private fun parseGroups(line: String): Map<Int, List<IntRange>> {
|
||||||
var depth = 0
|
var depth = 0
|
||||||
@@ -168,3 +170,8 @@ class Day18(@Lines val input: List<String>) {
|
|||||||
.reduce { t, u -> t + u }
|
.reduce { t, u -> t + u }
|
||||||
.get()
|
.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun main() = with(createDay<Day18>()) {
|
||||||
|
println(part1())
|
||||||
|
println(part2())
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user