1
0

Compare commits

..

9 Commits

Author SHA1 Message Date
hubert e65fbe9f63 Day05 2020-12-05 07:10:12 +01:00
hubert 4008858df8 Optimisations 2020-12-05 00:01:23 +01:00
hubert 0454187323 Fix a bug where 'hgt' was not followed by cm|in 2020-12-04 10:12:39 +01:00
hubert 9fa97a1d25 Day04 2020-12-04 09:20:02 +01:00
hubert 3e839308ff stuff 2020-12-03 09:55:03 +01:00
hubert da3628c9a7 Clean a bit + tests 2020-12-03 08:22:44 +01:00
hubert 6ab2fbce00 Day03 2020-12-03 07:09:36 +01:00
hubert 5c401d8ae0 Use xor 2020-12-02 07:44:20 +01:00
hubert ea41ce0e24 Day02 2020-12-02 07:17:38 +01:00
17 changed files with 3467 additions and 21 deletions
+2 -5
View File
@@ -9,10 +9,7 @@ object Libs {
const val fx = "io.arrow-kt:arrow-fx:$version"
}
object EclipseCollection {
const val api = "org.eclipse.collections:eclipse-collections-api:10.4.0"
const val core = "org.eclipse.collections:eclipse-collections:10.4.0"
}
const val eclipseCollections = "org.eclipse.collections:eclipse-collections:10.4.0"
object Jmh {
const val core = "org.openjdk.jmh:jmh-core:1.26"
@@ -29,7 +26,7 @@ object Libs {
object Slf4J {
const val api = "org.slf4j:slf4j-api:1.7.25"
const val logback = "ch.qos.logback:logback-classic:1.2.3"
const val simple = "org.slf4j:slf4j-simple:1.7.30"
const val kotlin = "io.github.microutils:kotlin-logging-jvm:2.0.3"
}
@@ -12,7 +12,7 @@ dependencies {
tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "15"
jvmTarget = "14"
javaParameters = true
freeCompilerArgs = listOf(
"-Xinline-classes",
+8
View File
@@ -10,4 +10,12 @@ dependencies {
implementation(Libs.Micronaut.inject)
implementation(Libs.Micronaut.kotlin)
kapt(Libs.Micronaut.processor)
implementation(Libs.eclipseCollections) {
because("Primitive collections mostly")
}
implementation(Libs.Arrow.core) {
because("Just in case")
}
}
+29
View File
@@ -0,0 +1,29 @@
package be.vandewalleh.aoc.days
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.createDay
data class PasswordEntry(val range: IntRange, val letter: Char, val password: String)
@Day(2)
class Day02(@Lines input: Input<List<String>>) {
private val regex = "^(\\d+)-(\\d+) ([a-z]): (.*)$".toRegex()
private val passwords = input.value.map {
val (_, min, max, letter, password) = regex.find(it)!!.groupValues
PasswordEntry(min.toInt()..max.toInt(), letter[0], password)
}
fun part1() = passwords.count { it.password.count { char -> char == it.letter } in it.range }
fun part2() = passwords.count { (range, letter, pwd) ->
(pwd[range.first - 1] == letter) xor (pwd[range.last - 1] == letter)
}
}
fun main() = with(createDay<Day02>()) {
println(part1())
println(part2())
}
+45
View File
@@ -0,0 +1,45 @@
package be.vandewalleh.aoc.days
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.createDay
data class Slope(val x: Int, val y: Int)
@Day(3)
class Day03(@Lines val input: Input<List<String>>) {
fun part1(slope: Slope = Slope(x = 3, y = 1)): Int {
val grid = input.value
var trees = 0
var x = 0
var y = 0
val width = grid.first().length
while (y < grid.size - 1) {
x += slope.x
y += slope.y
if (grid[y][x % width] == '#') trees++
}
return trees
}
fun part2(): Long = listOf(
Slope(x = 1, y = 1),
Slope(x = 3, y = 1),
Slope(x = 5, y = 1),
Slope(x = 7, y = 1),
Slope(x = 1, y = 2),
)
.map { part1(it).toLong() }
.reduce { acc, trees -> acc * trees }
}
fun main() = with(createDay<Day03>()) {
println(part1())
println(part2())
}
+49
View File
@@ -0,0 +1,49 @@
package be.vandewalleh.aoc.days
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.createDay
typealias Entry = Pair<String, String>
typealias Entries = List<Entry>
@Day(4)
class Day04(@Text val input: Input<String>) {
val entries: List<Entries> = input.value.trim().split("\n\n").map {
it.replace("\n", " ").split(" ").map { it.split(":").let { (k, v) -> k.trim() to v.trim() } }
}
private fun Entries.hasRequiredKeys() = map { it.first }
.containsAll(listOf("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"))
fun part1() = entries.count { it.hasRequiredKeys() }
private val hclRegex = "^#[0-9a-f]{6}$".toRegex()
private val pidRegex = "^[0-9]{9}$".toRegex()
private fun Entry.hasValidValues() = let { (k, v) ->
when (k) {
"byr" -> v.toInt() in 1920..2002
"iyr" -> v.toInt() in 2010..2020
"eyr" -> v.toInt() in 2020..2030
"hgt" -> when {
v.endsWith("cm") -> v.removeSuffix("cm").toInt() in 150..193
v.endsWith("in") -> v.removeSuffix("in").toInt() in 59..76
else -> false
}
"hcl" -> v.matches(hclRegex)
"ecl" -> v in arrayOf("amb", "blu", "brn", "gry", "grn", "hzl", "oth")
"pid" -> v.matches(pidRegex)
else -> true
}
}
fun part2() = entries.count { it.hasRequiredKeys() && it.all { it.hasValidValues() } }
}
fun main() = with(createDay<Day04>()) {
println(part1())
println(part2())
}
+50
View File
@@ -0,0 +1,50 @@
package be.vandewalleh.aoc.days
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.createDay
import kotlin.math.abs
@Day(5)
class Day05(@Lines val input: Input<List<String>>) {
private fun row(line: String) = line.take(7)
.replace("F", "0")
.replace("B", "1")
.let { Integer.parseInt(it, 2) }
private fun col(line: String) = line.takeLast(3)
.replace("L", "0")
.replace("R", "1")
.let { Integer.parseInt(it, 2) }
private fun id(seat: Pair<Int, Int>) = seat.first.times(8) + seat.second
fun part1() = input.value
.map { row(it) to col(it) }
.map { id(it) }
.maxOrNull()!!
fun part2(): Int {
val seats = input.value.map { row(it) to col(it) }
val front = seats.minByOrNull { it.first }!!.first
val back = seats.maxByOrNull { it.first }!!.first
return seats
.asSequence()
.filterNot { it.first == front }
.filterNot { it.first == back }
.map { id(it) }
.sorted()
.windowed(size = 2, step = 1)
.find { (a, b) -> abs(a - b) > 1 }!!
.first() + 1
}
}
fun main() = with(createDay<Day05>()) {
println(part1())
println(part2())
}
File diff suppressed because it is too large Load Diff
+323
View File
@@ -0,0 +1,323 @@
.#.....#..#..#....##.........#.
...#...#.........#..#.#..#.....
#.#...#.#....#.....#..#..##..##
..#..#.#.#.....#..#..#..##.....
.#..........#....####..##.#..#.
....##.......#.#.....#.........
....#......#....####.#.##......
........##..........##......#..
.........#........##..#.#.....#
.#..##..........#..#...#..##.#.
........#........#.....#....#.#
..#.......#.###...#.......##...
.##..##.#...#........#.........
...#....#..#..#..##.......#..#.
.#.#.##.##..##..#.#.....#.....#
....#.........#........#....##.
........#........#....###.#..#.
........#....#......##.........
.###.##.#.............##.......
....#.........#...#.#.##..#....
#.............#.#.#.#..#..#..##
###...###.###..#........#......
##..#.....#....##..##..........
.......#...#....#...#...#.....#
...#......###...##.###...#...#.
#.......#...##..#.......#..#...
.....##....#....#..#..#.#.##..#
.........#....##.#.#..##.#.....
.....#......#.#.#.....#.....#..
..#..#...#.#...#.........##.#..
.....#..#.................#.#..
##.#....##........#......#.....
#..#...##...#.#.#..#...........
.#..####.....#......#.###......
.#.......##............#....#..
.#.........##..#.##...#.....###
....##.........#.#...####...##.
..#.......#......##.....#.#..#.
...##....#..#..##....##...#.#.#
.................#.............
...#.##..#.##..............#...
...#......#.........##........#
..#.#..##...#.......#.#........
.###.#.....#.##.##.#...#...#...
.....#.##.....#..#......#..#...
.....#.#...#........#..#..#..#.
#...#.##.#....#................
..#...#.#..#.....#.#.#.........
#.#.###...#.....##........##...
#..##.##....#..........##.#...#
...#..#.#.###...##......#.#....
.#..#........##...#......#.#.#.
##........###....#.#....#......
....#...........#.........#....
#.#....#..#.....#.#....#.....#.
........###.......#..#.#.#.#.#.
..#....#.....#...............##
.....#..##....#.#...####.......
.#..#.....#..#.....#....#....#.
..##....#...........#.#....#...
..#.#......#..#.#..#.....###.#.
...........................##..
##.....#....#......###.#...#..#
...#...#.........#..#..#....#..
....#####.#.#.#....#..#........
.##.#..#.#............###......
##.#...##...##....#...#...##...
..#.#.....#.......#..##..###.##
#..##...........#.##.....#.##..
#...#....#...#..##...#.#...#.#.
.#..#...........###...#.#...#..
.#.....#......#.#......#...#..#
.#...##.##...............#....#
..#.........#....#.............
.#..##..#.#................#...
..#.#.#.#.................#.#.#
...#..#.#..#.#......#........#.
##....#......###.#......#......
..#....##.....#..#........#....
.#.#....#...#.#.....###..#...#.
.#..#...##.....#.#...#.....#.#.
...#....#....##....##.....#....
.......#...#...##..#.#.......#.
.###..#..###.#.#.#.#.#.....##..
....#.#......###.#....#....#..#
##.....#.....##.#.....#....#...
......#...##...#..#.#.....#....
...#.........###.....#..##.....
....#...#..#....#..#.........##
.#........#..#.....#.##.#....#.
.......#......#.##...##.#..#...
#......#.......##..##..#.#.....
..#.##..........#.#..#......#..
#.....#.......#......#.........
...##......##...........#.#....
.#....#........#...#.#..#.....#
.#...#...##......##...##...##.#
.#.#.##.....##....#.#.#..#.....
...#..#........#.....#.#.#####.
#..#..#......#....##....##.....
.#.............#....###.##.#...
.#....#.......#.#.....#......##
#..#.#.#........#...#..#...#...
#.#.#.....#.......#.##..#.....#
..#....#.....#...##.#...##.....
......#..#.............###...#.
..#...#.#....###...#...........
.........#..#..#....#..#.......
#....#.....#..#....#.#..##.....
.#..#.#.....#...##.....##......
.....####..#..#......#....##..#
#.#....#....#.##.......#.#.....
....#.#.............##..#.#...#
....#.#.#.....##.....##..#...#.
.#..#...#....#...#.#....#...#..
.#..#.#.#.......#...#..........
...##..#..#...##.....#.......#.
..##...##.#..#.......#.........
.##.#.......##...#...#......#.#
##.#.#..#...#............#.....
..#.##...##..#....##..#......#.
...#..........#.....#.#........
...#..#..#.......#.#.....##....
##.............#.....#.##...#..
#.#......#........#...#.##..#.#
...#..#...##.#.#........#.#....
#.....##...........#....#......
...##....#..#.#...#........#...
..##..####..#..#...............
.#.#..#......#.##.........##.#.
.##....#...##.#...#..##..#.....
........#........#.###.#.#....#
......##...#......#..#..#......
..#.......#...#..##........#..#
.#....###..###....###...##.#.##
#.#....#..#.#...#.#...##...#...
..#..##......#..#......####....
.#....###.......#...##...#.....
...#....#..#.....#..#...####.#.
............#.####..##...#..##.
.#..#.......#....#...#......#.#
.......#.......#..#.#..........
...#.#............#..#......#..
..#...........#...##......#...#
...##......#.........#.#...#.##
.#..#..#..#......#...........#.
....#.....#.###........#.......
..##.#.#........#.#...##....#..
.#.#........##....#...#......#.
.......#.##..###...............
#..#...##.....##........##....#
...####........#...#.........##
...#..............##..#........
......#.....#....#.......#....#
..###......#..##.....##....##..
##...#.....#..#.#.#...#.....#..
...#....#............#.........
..#..##...#..#.........#.......
.#.#.#...##..........#..###....
.......##.#.#.#...#.#...#.....#
..#..#..#..#...###.....#.##....
.#.#.....#.....##.#..#...###..#
.........#..##......##...##.#.#
#.........##..#......#..#.#.#..
.#..##.#.##......##........#...
..#...#.....##..#......#.....##
.#..#...#......#..#...#.....##.
..#..##...#.....#.....#........
....##..#....#.#....#......#.#.
..#.......##..#..#.##.#..#...##
...#..........#...#..##........
..#............#.#......#......
.#...##.......#...#.#........#.
.#...#....#..#....#....#.#...#.
......#..#.#..#..............#.
.....#.##.#...............##.##
.#...............#.....#..#...#
.#..##.......#.#...#..#..#....#
..#..###.##........##..........
.#....#..##...#.#.........#....
.......#.....#....###...##.#.#.
##..#.#...##.##.##....##.#.###.
#.#...........#..#.#...........
....#..#..#..#...#....#.......#
........##....#..#......##.#...
.#.#..##...##...#....#..#.###..
#..##....#..#...#.......##.....
..###..#.###......#..####....#.
.....#..#........##.#..#.......
.#......##..............#.#.#..
..#.#.......##...#....#.#.###..
#..#..#...###..#...............
......#..#.....#..#..#...#.....
.#...#..........###..#..#.#....
.#......##..#......#.....###..#
.......#...#..#....###.....#...
#....#.......###.##.....##....#
..#.....#..##..#.........##....
.....##....#.#......#..........
....#...#...#......##.....##.#.
........#.#.#......#...........
.#....#...#...#....#.....#...#.
..............#..##.#.....###.#
.#......##.....##...#....#.....
.............#.##......#.....#.
.#....#.#............#.#..##...
.#...##.......#..#...##....#...
.#.....#..........#............
#.#.#........#.....#..#....##..
#....#.##......#...#...........
........#.##.....#...##.....#..
..#.##....#.##.#...#.#.#....#..
......#.......####......#.#...#
#...#.##.####......#.....##....
.#..#....#.......#...##.....#..
................#......#.##....
###...##..#.#..........#....#.#
#.#..#.....#..##.##.##...#...##
..#.......#.......#..##..#..##.
......#.##.......#..#.....#...#
.##..##..#.#.......#..#......#.
....##.#....#...##.#..#.....#.#
..#..#.........###.#...........
....#.......#....##......#....#
..........#...#......#....#...#
..#.#....###.....#..#.#.#..#...
.....#...##..#.##........####..
##.............#....##........#
..#..........#..##.#...........
##.#.......#.#....#......#.#...
........####.....##.#.........#
.....#...#.#.....#.##..##.#....
........#...#.#.#.#...#......#.
.#..#.#....#.#...##.....#..#...
.....#.#............#.#.#......
....##.#...#...#.##...##.......
.........#.##.....#.......#...#
...........###....#.#....#...#.
.#..#.###......#..#............
#...#..#......#.#...#......#...
..##.#.#........#........##..##
..#.#.##..##....#........#.#.#.
...#........###......#.#.....#.
#.#.#.##........#.#...#..#.....
#..#...............#...#.#...#.
.....##......#...#.....#..#....
............#...#...#.##.#....#
...#..#..#...##.#....#.#..#.#..
##.#..#..............##........
.#.#..#.#..#....##..#.#.##.##..
......######....##.....#.......
.#.......#..........#.#..#.#..#
..........#.#......#...##......
#..........#.#..#.............#
...#...#..#....................
....#...#.....#.....##.....#...
..#....##.....#..#......#......
.#.#.....#..##.##..........###.
.#.##....#....#....#....#...#..
..##.....................##.#..
.....#..##....#.#.....##..#....
.####...#...##..#.##...#..#....
.........#.#...#.......###.....
...#..#........#..#..##.....#..
..#....#....#....###.....#.....
......#....#..#.........#......
#.#...#..#..#.#...#..#.#......#
..........#..........#.#.##....
.#..###..##..#....#.#.....#..#.
.##......#..#.##...#.........#.
...##...#....#.........#..#....
....#..##........#.........#...
.........##....#...#.#.....#..#
.#..........##...#..#.#..##....
#.......#...#...#............#.
.....##.#.##.......#.......#...
...........#...#.....###.....#.
#..................#.##..##...#
.........##.............#...#.#
#.#.....##...#........###....##
...##..#.##.....###.....#......
..#...#.#..#......##.#.......#.
.........##.#...........###..#.
..#...#.....#...#.#.....#..#...
.....##..#...#.#.#....#.....###
..#.#....#..#..#..#....#.#...#.
........##....#......#....#..#.
.##..#.....#.#....#..#.###.....
..............##.........#.#.#.
.##....#.#..#..#...#..........#
.....##.......#....#..#......#.
...#.#....................#..##
#.##..#.#...#...#....#.#....##.
...#.#..#.###................#.
.....##..#.##.#.#.........#.#..
.................##..........#.
..#......#........#.#....#.....
#......##......#......###....#.
....##....#..#..####......#...#
.##.##.........#...#..#....#.#.
.#..#....##...##..#...........#
#...#......#...#...........#...
...#...####.............##..#..
.....#....##............##....#
......##.#...##...........#.#..
..#......##.....###.......#.###
...#...#......#...##.#........#
.#.........##.##......##.......
....................#....#....#
.#.#.#........##.#....#.....#..
#.#.....####..#.........#.#.#..
...####..#..............#.#....
....#.#....#..........#....#...
.#..#..#.#...#..#.#............
.#.#.......##........##.....#..
#.#.##..#.....##......##....#.#
......#...#...#...#......#.....
.........##..#.....#.####.#.#..
.....#....#.###...#.###.#..#..#
..#.#..#..#.......#.......##...
.....#.........#......##.#....#
..#.#.##....#.#...............#
.....#..#....##......##..###...
+959
View File
@@ -0,0 +1,959 @@
byr:1971
ecl:hzl pid:112040163
eyr:2023 iyr:2019
hcl:#b6652a hgt:167cm
pid:108667812 eyr:2023 hcl:#623a2f hgt:171cm iyr:2018 ecl:amb byr:1993
hcl:#cfa07d iyr:2014 ecl:blu eyr:2023 cid:304 hgt:70in byr:1961
byr:1977
hcl:#b6652a
iyr:2017 ecl:oth pid:703877876 hgt:185cm
byr:1972
cid:271
iyr:2016 pid:876104259 hgt:173cm eyr:2028 ecl:brn hcl:#733820
hgt:174cm ecl:gry iyr:2014 eyr:2029 hcl:#c0946f
byr:1967 pid:406306240
hcl:#6b5442
iyr:2011
pid:040592028 eyr:2026
ecl:amb
byr:1923
pid:293598838 byr:1960 cid:87
iyr:2018
ecl:blu eyr:2029
hcl:#7d3b0c
hgt:62in
iyr:2018 cid:137
hcl:1c7db1 ecl:#38812e byr:2006 eyr:2038 pid:1239811353 hgt:84
hcl:#888785 pid:308480529
iyr:2010 byr:1988
eyr:2025 hgt:176cm ecl:amb
cid:79 ecl:lzr
iyr:2013 byr:1991 hcl:2f49ef
hgt:191cm
pid:378428551
iyr:2005
hgt:64in hcl:89c369
ecl:gry byr:1932
eyr:2029 pid:753055776
ecl:amb iyr:2017
byr:1969 hcl:#fffffd
pid:305746470
hgt:173cm
pid:081972188 iyr:2011
hcl:9bb154
eyr:2024 byr:1966 ecl:oth cid:185 hgt:171cm
pid:522553186 hgt:171cm ecl:grn hcl:#7d3b0c
byr:1955
eyr:2025 iyr:1999
iyr:2015
byr:1941 pid:140123640 ecl:amb hgt:153cm hcl:#ceb3a1 eyr:2020
ecl:grn
cid:202 hcl:#602927
eyr:2029
hgt:180cm byr:1974
pid:658341964
iyr:2017
pid:2037156813 eyr:1978 ecl:grn hcl:519b45 iyr:2011 byr:2017
hcl:#fffffd ecl:hzl
pid:658716289 byr:2001 hgt:154cm cid:234 eyr:2031 iyr:2010
byr:2013 pid:#eb519e eyr:2026
hgt:157cm iyr:2030 hcl:7e9d5a ecl:oth
byr:2002
ecl:brn iyr:1998 hgt:60cm
hcl:#7d3b0c pid:#90286d
eyr:1938
byr:1956 hcl:#efcc98
hgt:190cm
iyr:2010 eyr:2023
ecl:amb
cid:342 pid:278521396
hgt:67cm
cid:98 eyr:2036 byr:2028 ecl:grt hcl:08b5ad iyr:2029 pid:187cm
ecl:dne hcl:fca461 hgt:129 iyr:2020 eyr:2027 byr:2022 pid:5014208295
hgt:169cm ecl:gry iyr:2015 eyr:2025 hcl:#733820 pid:240085824 byr:1920
iyr:2020 eyr:2033
pid:#3f8e9d hgt:190in ecl:brn hcl:#efcc98 byr:2004
iyr:2018 hcl:#18171d ecl:brn byr:1933
pid:514517439 hgt:171cm eyr:2028
eyr:2030 pid:053251865
byr:2028 hgt:174cm iyr:2015 hcl:5a0da9 ecl:hzl
hgt:169cm iyr:2014 ecl:oth eyr:2029 pid:348737413 hcl:#b6652a byr:1997
hgt:181cm cid:315
eyr:2021 iyr:2016 byr:1966 ecl:oth pid:779435812 hcl:#733820
pid:5052579 cid:268 hgt:193in
hcl:z
iyr:1942 eyr:1977
eyr:2039 hgt:69cm cid:337
iyr:2023 pid:568948965
byr:2018 hcl:z ecl:amb
byr:2014 eyr:2028
cid:311
pid:158cm ecl:#946399 hgt:99
hcl:z
iyr:1978
pid:474742310 iyr:2015 eyr:2021 hcl:#14f5da
hgt:163cm ecl:oth
hcl:#efcc98
ecl:blu
hgt:178cm pid:815309025 byr:2024
iyr:2008 eyr:1922
byr:1946 eyr:2028 pid:364439229 iyr:2011 hgt:186cm cid:79 ecl:blu
eyr:2028 hgt:157cm
cid:59 iyr:2010 byr:1927
ecl:brn
pid:893074368
hcl:#18171d ecl:#2defe4 hgt:128 byr:1940
pid:181904523 iyr:2022 eyr:1937
eyr:2023 hgt:172cm iyr:2012 hcl:#a97842 ecl:hzl byr:1982 pid:638759541
cid:91 hcl:#623a2f
byr:1996 eyr:2028 pid:181384347 hgt:175cm
iyr:2020
iyr:2017 eyr:2021 ecl:gry
byr:1979 hgt:168cm hcl:#6b5442 pid:950995084
ecl:blu iyr:2012 byr:1972
hcl:#888785 eyr:2022 hgt:179cm pid:293827532
hgt:179cm
ecl:hzl iyr:2011
byr:1982 eyr:2020 hcl:#efcc98 cid:209 pid:626732917
byr:1989
hcl:#6b5442 pid:679850983 iyr:2020
hgt:192cm ecl:blu
pid:333485773 hgt:167in ecl:zzz iyr:1945
eyr:2035 cid:319 hcl:#341e13
hgt:64in
cid:202 eyr:2023 ecl:gry hcl:#c0946f pid:212611149 byr:1928 iyr:2010
hgt:183cm hcl:#e8fa30 ecl:oth eyr:2021
byr:1943 pid:667658434
iyr:2010
cid:117
byr:2022 hcl:z ecl:#c6ae1f iyr:2028
hgt:188cm
pid:0883366415
eyr:2030
hcl:z
pid:99347800 iyr:2030 eyr:2032 ecl:#cd1fd7 hgt:192cm byr:2019
hgt:178cm byr:2013
iyr:2026 hcl:ad3da1
eyr:2020 pid:1626818790
hgt:63cm
iyr:1964
eyr:2032
cid:135 byr:2017 hcl:#a97842 pid:#1b83f5 ecl:gmt
hcl:c352d2 byr:1927 ecl:gmt hgt:187cm
eyr:2031 pid:170cm
byr:2022 eyr:1958 ecl:zzz pid:3692521800 hcl:8b2b50 iyr:1946 hgt:155in
ecl:#43f305 hcl:z byr:2028
pid:63518738 cid:243 eyr:2037
hgt:67cm iyr:1929
ecl:brn hcl:#888785
pid:495215177 byr:1962 eyr:2021
cid:192
hgt:151cm iyr:2012
ecl:#dcca8e cid:64 eyr:2030 pid:380057616
hcl:z iyr:2026 byr:1962
hcl:z
ecl:hzl eyr:2027 byr:2015 pid:302526406 hgt:175cm iyr:2017
byr:1966
cid:133 pid:9953651821 ecl:gry iyr:2020 hgt:152cm
hcl:#fffffd eyr:2026
hgt:191cm byr:1960 pid:752655640 hcl:#888785
cid:249 ecl:blu
iyr:2012 eyr:2028
pid:#c8c988 eyr:2027 hgt:157in hcl:z iyr:2025 byr:2019 ecl:zzz cid:195
hgt:96 pid:95381813 iyr:1950
hcl:#fffffd eyr:2026
byr:2010 cid:318
ecl:#48a819
eyr:2020
ecl:oth byr:1951 pid:080392492
iyr:2015 hcl:#6b5442 hgt:176cm
hgt:162cm pid:897792747 byr:1968
hcl:#ceb3a1 ecl:grn eyr:2026 iyr:2014
eyr:2038 hcl:cc324a byr:1983 ecl:brn
hgt:161 pid:#adf47f cid:208
iyr:2013 ecl:blu hcl:#866857 byr:1981 hgt:157cm eyr:2025 pid:216910202
hgt:152in byr:1990
iyr:2027 hcl:a4a3ae
ecl:#058ae2 eyr:2037 pid:646420120
ecl:oth byr:1982 eyr:2027 hgt:65in iyr:2019
hcl:#efcc98 cid:224
pid:854228141
pid:772612093
iyr:2027
hgt:175in byr:1981 hcl:c0b5a9 ecl:utc
hcl:#888785 iyr:2014 byr:1975
ecl:blu
pid:461319017 cid:229 eyr:2030 hgt:154cm
hgt:179cm eyr:2024
pid:192cm
iyr:2017 ecl:grt byr:1934 hcl:z cid:92
hcl:9c9409 iyr:2020 eyr:2030 hgt:156in
cid:189 pid:732321495
byr:1937 ecl:xry
eyr:2026 pid:092259220 byr:1943
iyr:2010 hgt:153cm hcl:#602927
byr:1925 hgt:180cm hcl:#888785 iyr:2014
pid:402548656 eyr:2023 ecl:hzl
cid:188
eyr:2020 pid:874307939 hcl:#3f85a4
ecl:gry hgt:167cm byr:1959 iyr:2014
eyr:2026 hgt:183cm iyr:2011 byr:1940 ecl:blu pid:810026000
cid:226 hcl:#866857
cid:292 ecl:grt hgt:72cm
byr:2009
iyr:2000 eyr:1946 hcl:7be409 pid:996363336
eyr:2027
iyr:2021
pid:632405666
byr:2027
ecl:#d83a36 hcl:z hgt:190in
cid:80
hgt:173cm
pid:735853952 ecl:gry hcl:#fffffd eyr:2025 iyr:2020 byr:1923
byr:1977
hcl:#733820
iyr:2020 ecl:#698d72 hgt:186cm pid:678869986 cid:67
eyr:2021
hgt:61cm iyr:2022 eyr:1972 hcl:979bcf byr:2023 pid:44037388 ecl:xry
eyr:2032 pid:193cm hcl:z
hgt:68cm byr:2016
byr:2008 cid:239
hcl:ddc745 eyr:2033 ecl:#6858b5 hgt:64cm iyr:2023
pid:89867524
iyr:2016 hgt:74in hcl:#18171d
byr:1959
ecl:blu
pid:848487392
eyr:2027
hgt:165in ecl:grn
byr:1960 eyr:2029
iyr:2017
hcl:#b6652a pid:096349067
eyr:2025 ecl:brn
pid:634481064 iyr:2015
hcl:#7d3b0c
byr:1943
ecl:grn eyr:2021
pid:34753212 cid:51 hgt:184 iyr:1970 byr:2012
eyr:1973 iyr:2014 cid:225
byr:2028 ecl:gmt
hgt:158cm
pid:#74f9b8 hcl:f6932a
hgt:168cm
hcl:#602927
pid:622067991 ecl:amb eyr:2025 iyr:2018
pid:791399958 byr:1956 eyr:2027 hcl:#602927
ecl:brn
iyr:2016 hgt:192cm
hgt:168cm iyr:2015 cid:115 ecl:#3fa48b eyr:2037 hcl:#1bf77b byr:1980 pid:947370470
iyr:2008
byr:2021 ecl:zzz
hcl:z hgt:109 pid:#fc2a91 cid:268 eyr:1957
byr:2018 hcl:fef19c iyr:2014 ecl:blu eyr:2023 cid:259 pid:193cm hgt:156
hcl:#b6652a
iyr:2023 byr:2021 hgt:153cm pid:934391984 eyr:2021 ecl:brn
pid:168cm hcl:b13f1e eyr:2038 iyr:2020 ecl:#7c0a6d hgt:169in
ecl:amb cid:170
pid:300188824 eyr:2024 byr:1954 hcl:#b6652a hgt:166cm
iyr:2013
ecl:brn
eyr:2023
hcl:#b6652a byr:1948 hgt:71in iyr:2015
pid:575973478
eyr:2026 hgt:180cm hcl:#866857 ecl:grn iyr:2013
byr:1997 pid:864648034
ecl:hzl
iyr:2013 eyr:2024 hcl:#02e17f byr:1960
hgt:163cm cid:338 pid:972201795
iyr:1994 eyr:2035 ecl:xry
hcl:z hgt:167in pid:159cm
ecl:hzl
byr:1952
eyr:2024 hgt:191cm pid:229400637 iyr:2011 hcl:#122db6
eyr:2022
pid:467667316 iyr:2019 hcl:#623a2f
hgt:161cm
ecl:oth
ecl:hzl eyr:2030 hcl:#733820 byr:1944
hgt:193cm pid:819137596
cid:321 hgt:184in ecl:hzl iyr:2018 byr:2010 eyr:2020 pid:171cm
ecl:amb eyr:2025 hcl:#c0946f pid:360891963 byr:1925
iyr:2017
hgt:180cm
hcl:#cfa07d byr:1949
eyr:1931 cid:350
ecl:#ff9943
pid:7550350393 hgt:75
eyr:2026 ecl:amb hcl:z pid:746919391 iyr:2014 hgt:179cm byr:1997
pid:157cm iyr:2030
hgt:152cm
hcl:ce8aa7 eyr:1976 ecl:grt cid:160 byr:2011
eyr:2022
hgt:183cm
byr:2000 iyr:2016 hcl:#a97842 ecl:blu pid:500935725
cid:245 eyr:2026 iyr:2015 ecl:gry hcl:#cfa07d
byr:1946
eyr:2022 hgt:168cm
pid:786361311 iyr:2013 hcl:#c0946f byr:1988 cid:244 ecl:hzl
byr:2014 hgt:176in iyr:2021
hcl:z pid:6361650130
eyr:2039 cid:300
ecl:#76310d
ecl:amb hgt:170in byr:2013
iyr:2024 eyr:2033 hcl:#888785
eyr:2025
iyr:1957 cid:182
ecl:blu pid:253552114
hgt:188cm hcl:z
cid:83 ecl:amb
eyr:2022 byr:1947
iyr:2013 hcl:#cfa07d
hgt:188cm pid:447734900
iyr:2013 hcl:#602927 byr:1979 hgt:167cm cid:321 pid:978238277 eyr:2020
ecl:grn
hgt:73cm
cid:199 ecl:amb iyr:2019
hcl:#733820 eyr:2021
byr:1939 pid:364966395
hgt:168in ecl:lzr eyr:2031
pid:#ff10ac byr:2014 iyr:2006
hgt:164cm eyr:1994 iyr:2010
ecl:amb hcl:#7d3b0c cid:240 pid:191cm
byr:2025
ecl:grn
eyr:2029
hcl:#7d3b0c hgt:158cm
byr:1939 iyr:2012 pid:855145518
iyr:2013 hcl:#ceb3a1
hgt:163cm eyr:2023 pid:761215570
hgt:154cm ecl:grn
iyr:2019 byr:1981 eyr:2021 hcl:#602927
cid:80 pid:427938374
eyr:2026 hgt:154cm cid:102 iyr:2012 pid:6632346648 ecl:amb
byr:2010 hcl:z
cid:302 iyr:2014
pid:161cm eyr:2037 byr:2026 ecl:gry hgt:60 hcl:9fb9e0
ecl:brn iyr:2015 pid:041582949 cid:180 byr:1938
hgt:158cm
hcl:#602927 eyr:2026
ecl:xry pid:#546891 hcl:#18171d hgt:71cm byr:1974
iyr:2018 eyr:2026
iyr:2015 eyr:2025 ecl:brn hgt:180cm hcl:#b6652a
byr:1938
pid:752379523
iyr:2020 ecl:grn hgt:179cm byr:1929
cid:103 hcl:#602927
pid:212212232
pid:262917603 ecl:gry iyr:2012 hcl:#fffffd hgt:165cm eyr:2022 byr:1965
byr:1960
eyr:2031 hgt:184in
pid:#ac1606 iyr:2013 hcl:#888785
cid:260 ecl:#7b2c3b
byr:1987
eyr:2025 cid:102
hgt:74in ecl:brn hcl:#4a6c75 pid:20220733 iyr:2028
eyr:2031 pid:823539963
iyr:1957
hgt:159cm byr:1953 ecl:oth cid:186 hcl:26d85f
ecl:gry iyr:2011
hgt:167cm hcl:#fffffd pid:001642707 eyr:2030 byr:1952
iyr:2029 ecl:grt
hcl:z byr:2011 hgt:64cm pid:37027672
eyr:1923
pid:021102096
eyr:2024 hgt:66 hcl:#a97842 byr:1922 ecl:gry iyr:2013
pid:166477382 ecl:oth byr:1982 iyr:2010 eyr:2020
hcl:#866857 hgt:60in
hcl:#7d3b0c
iyr:2018 pid:065652921 byr:1939
ecl:blu
hgt:180cm eyr:2028
ecl:amb iyr:2020 byr:1967 hcl:#fffffd eyr:2028 hgt:157cm
eyr:2029 hgt:185cm cid:85 hcl:z iyr:2014 pid:#1f4787 ecl:grn byr:2010
byr:1987 hcl:d397d9 iyr:2028
hgt:158cm pid:686994921 ecl:hzl
ecl:oth
byr:2008
pid:#db73d9 hgt:174cm hcl:#6b5442 iyr:1955 eyr:2028
eyr:2020 ecl:amb pid:490866828 hcl:#cfa07d cid:113
hgt:165cm
iyr:2011
pid:320518492
eyr:2028 byr:1940 hgt:164cm cid:84
hcl:#341e13 ecl:grn
hgt:142
hcl:z pid:152cm iyr:1953 eyr:2040 ecl:#e44f11 byr:2024
ecl:gmt hcl:be7483 eyr:2027
iyr:2026
pid:396722617 hgt:153cm
ecl:dne byr:2015
pid:330208482
hcl:#7d3b0c iyr:2014 eyr:2022 hgt:95
byr:1925 hcl:#7d3b0c
ecl:gry
eyr:2024
pid:694714722 hgt:158cm iyr:2015 cid:283
eyr:2023
hgt:183cm cid:345
hcl:#6b5442 ecl:hzl iyr:2019 byr:1971 pid:458416257
ecl:#dcae8b
iyr:2027 eyr:1940 byr:2009 hcl:f024de pid:20713584
hgt:169in
hcl:#888785 eyr:2026
byr:1984 iyr:2013 pid:935837461
hgt:193cm
ecl:gry
pid:7343429 byr:2002
hgt:191cm
ecl:lzr iyr:1983
eyr:1966 hcl:#623a2f
cid:302
hcl:#888785 iyr:2014 hgt:173cm
byr:2002 pid:005350165 eyr:2022
byr:2013 iyr:2028
ecl:lzr pid:5426915565 eyr:2018 hcl:z hgt:70cm cid:142
eyr:2021 hgt:157cm ecl:utc iyr:2014
byr:1934 cid:348 hcl:#623a2f pid:607329117
iyr:2015 hgt:167cm ecl:hzl
pid:088516395 hcl:#efcc98 byr:1968 eyr:2029
eyr:2028
iyr:2019
cid:199
ecl:amb
hgt:152cm byr:1928 pid:547112666 hcl:#623a2f
pid:406202463
byr:1950 cid:214
eyr:2021 hcl:#fffffd hgt:177cm
ecl:brn
eyr:2029
cid:210 byr:1982 pid:578085789 ecl:brn
hgt:187cm iyr:2010 hcl:#c0946f
byr:1980 hcl:#c0946f hgt:159cm pid:177650318 eyr:2024 ecl:amb iyr:2019
pid:923359071 byr:1997 ecl:#faa530
eyr:2028 iyr:2013 hcl:e6c902 hgt:177cm
eyr:2040
cid:98 hgt:156in
ecl:oth
iyr:1996 pid:81500971
hcl:#6b5442
byr:2017
byr:2004 iyr:1941
hcl:e1e4bb hgt:67cm pid:1143915351 ecl:#0d3e5d eyr:1972
hgt:184cm hcl:#623a2f
eyr:2028 pid:680951513 ecl:grn iyr:2014 byr:2001
hcl:#866857 hgt:156cm
eyr:2020
ecl:grn iyr:2010 pid:589945116
pid:599795227 iyr:2016 ecl:grn
hcl:#cfa07d hgt:157cm byr:1967 eyr:2029
hcl:#b6652a
byr:1966 iyr:2017 pid:117232314 ecl:oth hgt:186cm eyr:2029
pid:605019880
iyr:2020
hgt:169cm byr:1980 hcl:#623a2f
ecl:hzl eyr:2030
eyr:2019 hcl:#ceb3a1 pid:988269284
iyr:2015 byr:1989 hgt:171cm ecl:oth
cid:311 byr:1998 ecl:hzl
eyr:2027 hgt:152cm pid:734870801 hcl:#7d3b0c
iyr:2013
hcl:#efcc98
hgt:180cm iyr:2020
pid:202682423 byr:2027 ecl:grn eyr:2030
hcl:f0701f pid:161cm cid:291 hgt:160in iyr:2030
ecl:#e12345
cid:248 byr:1943 eyr:2024 hgt:181cm ecl:brn iyr:2010 hcl:#bf813e
byr:2005 hgt:187in eyr:2034 iyr:2025 hcl:z ecl:gmt
pid:78691465
byr:2000
hcl:#574f4e eyr:2024 iyr:2017 pid:#fec795 hgt:185cm ecl:gry
hcl:#a97842 byr:1959
iyr:2019 pid:690444949
hgt:160in eyr:1978
cid:236
iyr:2010 eyr:2025 byr:1976 pid:398376853
hcl:#341e13
hgt:150cm
hgt:182cm iyr:2019 hcl:#866857
ecl:grn
byr:1926 eyr:2029 pid:307880154 cid:94
ecl:blu
hgt:182cm pid:178cm byr:2019 eyr:2025
iyr:2022 hcl:#a2117d
eyr:2020 hcl:#c0946f ecl:amb pid:135511825 byr:1954 hgt:68in iyr:2017
hgt:188cm ecl:amb iyr:2011
pid:949021029 eyr:2028 hcl:#fffffd byr:1986
iyr:1949 pid:#8a8d94 ecl:#922a92 byr:1925 hcl:#63c4a5
hcl:#c0946f
ecl:grn iyr:2013 eyr:2024 pid:420295283 hgt:181cm
byr:1977
byr:1941 pid:299186098 hcl:#f1fa72
iyr:2013 ecl:amb eyr:2022 hgt:152cm
cid:150
ecl:blu eyr:2021 hgt:60in hcl:#623a2f
byr:1930 iyr:2018
eyr:2028 pid:663108638
hgt:75in cid:217
byr:1962 ecl:brn hcl:#733820
hcl:#341e13 hgt:188cm ecl:blu
pid:868930517
eyr:2029
iyr:2010 byr:1938
pid:194376910 byr:1956
hcl:#cd4ab4
eyr:1940 iyr:2012 ecl:#396cc3
pid:#c5da2a hgt:162cm
hcl:#866857
cid:95 ecl:#fa1f85
iyr:1965 byr:1963 eyr:2039
pid:44063430 hcl:289b20
ecl:#77ddd9 eyr:1953
iyr:1924 byr:2026 cid:267 hgt:180in
ecl:brn pid:990171473
eyr:2028 byr:1937
hgt:165cm iyr:2015
hcl:#fffffd cid:68
iyr:1968 ecl:lzr pid:#05a4ab eyr:1944 hcl:z
hgt:185cm hcl:#7d3b0c eyr:2029 ecl:oth
iyr:2016 byr:1997 pid:349316183
hcl:z
ecl:gry
hgt:192in pid:542996841 iyr:2019 cid:144 eyr:2028
byr:2026
eyr:2024
hcl:#18171d
ecl:grn hgt:160cm pid:399767457 byr:1979 iyr:2015
ecl:#924147 pid:665314 cid:216 iyr:2026 hcl:z
byr:2023 hgt:157
eyr:1987
eyr:1989 hcl:4f8779 ecl:#05ff52 iyr:1943 pid:3693010880 hgt:72cm
byr:2009
hcl:#c0946f eyr:2022
iyr:2015 hgt:157cm byr:1928 ecl:grn pid:243566446
eyr:2030
hcl:#733820 byr:1988 iyr:2017 cid:125 hgt:193cm ecl:amb pid:939550667
cid:161 hgt:157in
hcl:#cfa07d eyr:2036 ecl:#4efa35
iyr:2012 pid:3943280550 byr:1979
ecl:lzr hcl:#341e13 hgt:69cm eyr:2026 cid:322 byr:2006 pid:827964469
ecl:amb iyr:2012
eyr:2020 hgt:178cm pid:590705772 cid:218
hcl:#c0946f byr:1922
hcl:632b01 cid:252 byr:1933 ecl:hzl
iyr:2025 eyr:2040 hgt:191cm
pid:406010613
pid:711656819 ecl:blu eyr:2030 hgt:151cm
byr:1999 cid:319
hcl:#efcc98
pid:294223216 iyr:2012
hgt:171cm
eyr:2027
hcl:#ceb3a1 ecl:oth
byr:1952 cid:58
hcl:#888785 pid:457433756 eyr:2022 hgt:186cm
cid:336
byr:1923 iyr:2013 ecl:oth
byr:2014 hcl:6ce7d6 eyr:2030 pid:190cm iyr:2018 hgt:63cm ecl:#5063b9
cid:267 hgt:189cm
eyr:2020 hcl:#ffeffd iyr:2014 byr:1989
ecl:grn
pid:571696542
iyr:1953 hgt:160in
ecl:grt cid:188 eyr:2034
pid:179cm byr:2007
hcl:6895eb
hgt:165cm ecl:oth
iyr:2020
eyr:2028
hcl:#18171d pid:111506895
eyr:1957 cid:133 ecl:hzl pid:#e56ca2 byr:2003 hcl:8a9d65
hcl:6c4ecd byr:1930 hgt:179cm
eyr:2007 iyr:2028 ecl:#3d8705
pid:#dbfeec
eyr:2036
byr:1991 ecl:#2202d0 hcl:#341e13 pid:85636989 hgt:61cm
iyr:1930
byr:1996 iyr:2027 hcl:z
pid:780164868 ecl:zzz eyr:2026 hgt:73cm
byr:1940
iyr:1992 pid:132016954 eyr:2021
cid:147 hcl:#d78bfd ecl:xry
hgt:174cm
byr:1970
eyr:2021 hcl:#341e13 pid:086579106 iyr:2017 ecl:oth
ecl:oth cid:207 byr:1998 pid:479696359
hgt:174cm iyr:2017 eyr:2020 hcl:#6b5442
ecl:hzl iyr:2014
hcl:#cfa07d hgt:163cm eyr:2025
byr:1951 pid:563337128
ecl:gry hgt:172cm iyr:2013 hcl:#efcc98
byr:1970
pid:848996674
eyr:2027
hgt:163cm pid:583600660 iyr:2015 hcl:#18171d byr:1959 ecl:brn
hcl:#efcc98 pid:353178375 cid:145
iyr:2018 byr:1988 ecl:oth eyr:2029
hgt:62in
byr:1921 pid:125944934 hcl:#b6652a
eyr:2025 cid:71 iyr:2018 ecl:blu
iyr:2017 ecl:brn hcl:#602927 hgt:172cm pid:932690969 byr:1957 eyr:2026
hcl:#efcc98 pid:709772213 cid:146 ecl:oth byr:1998 iyr:2010 hgt:74in
eyr:2029
byr:1965
iyr:2011 hcl:#6b5442 cid:325 hgt:68in eyr:2028 pid:813272708 ecl:hzl
pid:57223084 hcl:#602927 ecl:grn
hgt:156cm eyr:1972 iyr:2017
pid:21573000 byr:2030 cid:168
hcl:baee61 eyr:2021 hgt:150cm
iyr:1950 ecl:#acdd7e
ecl:gry hgt:150cm hcl:#6b5442
byr:1927
iyr:2018 pid:161cm eyr:2021
hgt:153cm
iyr:2030 ecl:grn pid:575037626 byr:1921 eyr:2021 hcl:#866857
hgt:175cm iyr:2014
byr:1946 eyr:2025
cid:159 hcl:#18171d
ecl:oth pid:129913905
pid:566885568
hgt:157cm eyr:2021 ecl:gry byr:1933
hcl:#623a2f cid:223
ecl:blu byr:1981 cid:160
iyr:2014
hcl:#a97842 eyr:2021 hgt:172cm pid:714902414
hcl:#b6652a eyr:2021
hgt:168cm byr:1921 iyr:2018 ecl:oth pid:021318713
hgt:168 pid:222439573
cid:209
hcl:z byr:2016 ecl:#26a0fb
eyr:2031
hgt:181cm
byr:1970 eyr:2024
pid:476171876 ecl:hzl
hcl:#efcc98
iyr:2019
hcl:#18171d ecl:oth iyr:2018 byr:1949 hgt:165cm
eyr:2029 pid:078204562
byr:2021 ecl:blu iyr:1963
pid:2911597977 hcl:#ceb3a1 eyr:2020
hgt:154cm
pid:159642237
hcl:#81e94d ecl:gry eyr:2028 byr:1958
hgt:90 hcl:#a97842 pid:#db1158
iyr:1928 ecl:#c82a43 byr:1971 eyr:2036
eyr:2020
hgt:177cm iyr:2013
cid:347 ecl:grn
byr:1998 pid:455369144
byr:1936
pid:444305229 iyr:2013 eyr:2025 hcl:#733820
ecl:gry
hgt:175cm
byr:2027 hcl:z
hgt:61cm ecl:brn pid:836686228 eyr:2023 iyr:2030
byr:1931
ecl:hzl hgt:168cm eyr:2023 pid:956562488 hcl:#fffffd
ecl:#4126e5 pid:182cm iyr:2021
hgt:144 eyr:2039 hcl:z
pid:321400085 hcl:#733820 hgt:189cm
ecl:hzl byr:1923 eyr:2023 iyr:2016
iyr:2011 hgt:192cm hcl:#b6652a byr:1988 pid:998875769
ecl:#e612d9 eyr:2015
eyr:2021 iyr:2011 pid:265966660
byr:1934 hgt:180cm
hcl:#7d3b0c
ecl:gry cid:225
pid:550612542 ecl:oth byr:1931
iyr:2014 cid:99
hcl:#cfa07d hgt:163cm eyr:2026
ecl:gry hgt:156cm iyr:2018 hcl:#5d9d64 pid:295386055 byr:1996
eyr:2025
ecl:gry iyr:2013 pid:855457285 cid:309 eyr:2030
hcl:#733820 byr:1973
eyr:2030 pid:86472746 ecl:blu
hgt:192cm
iyr:2013 byr:1939 hcl:#b6652a
hcl:#888785
byr:1935
iyr:2018
hgt:155cm ecl:grn
pid:612879095 cid:108 eyr:2027
eyr:2016 hcl:z pid:025915371 iyr:2010 hgt:183cm ecl:gry
byr:2010
cid:228
hcl:#38dbf4
byr:1925 ecl:amb eyr:2020 pid:065102805 iyr:2018
cid:244 hgt:171cm
hcl:#cfa07d pid:466737179 eyr:2025
byr:1937 iyr:2020 ecl:oth
ecl:brn byr:1993 hgt:179cm hcl:#341e13 pid:855375268 eyr:2028
iyr:2018
pid:809135189 iyr:2020 hgt:162cm eyr:2027
hcl:#888785 byr:1988 ecl:grn
byr:2003 pid:4446708453
hgt:188cm iyr:2013 hcl:#888785 ecl:blu eyr:2008
hgt:165in ecl:#db642f iyr:2014
eyr:2020
byr:1955 hcl:371f72 pid:756089060
ecl:lzr
hgt:177in eyr:2037 pid:175cm
byr:2023 hcl:03b398 iyr:2026
iyr:2017 ecl:blu byr:1942 hcl:#733820 eyr:2023 hgt:151cm pid:289923625
+807
View File
@@ -0,0 +1,807 @@
FBFFFFFLLL
FFBFFFFRRR
FFFBBBBLRL
FBFFBBFLLL
FFFBFBBLLL
FBFFFFBRLR
BFFBBFBLLL
FBFBFFBLLL
BFFFBBBRLL
FBFBBFBRLR
BFBFFFBRLR
FFFBBFFRLR
FFFFFBFRRR
FBFBBBFRRL
FBFBBFBRRR
FBFBBBFLRR
BBFFFBBRLL
FBBBBBFRLL
FBFFFFBLLR
FBFFFFFLRR
FBFBFFBLRR
FBFBFBBRRL
FFFFBFFRRL
FFFFBBFLRR
BFFBBFBRLR
BBFFFFFRLR
FFBFBBBRLL
FFBFBBBLRL
FBFFFBBLLL
FFFFBBFRLR
FBFBBFFLLR
FBBFFBFRLL
BFFFBFBLLR
FBFFBBBLLL
FFFFBBBLRR
FFBFFBFLLL
BFBFBFBRRL
BFBFFFBRRL
FBFBFBFLLL
FBBBBFFRRR
FBFFBFBRRR
BBFFFFFRRL
BFFFFFFLRL
FFFFFBBLLR
FBBFBFBRRL
BFBFFBFLLL
FFFFBBBRLL
BFFFBFBRLL
FFFBBFFLLL
BFFFFFBRLR
FBFBBFFRLR
BFFBBBFRLR
BBFFBFFRRR
BFFBFFFRLL
FFFBBBFLLR
FBFBFFFRRL
FBBFFFBLLR
BFBFFBFLRR
BFFBBFBRRR
FFFBBBBRLR
BBFFBFFRLR
FBBBBBFRRR
FBFBBBFRLR
FBFFFBBLRL
FFBFBFFLRR
BFFFBFFRLL
FBFFBFBLRL
BFBBFBFLLR
BFFFBBFRLL
BFBFBFBLRR
BFFFFBBRLR
BFBBFFBRRL
BFFBFFBRRR
FBFFFBFRLL
FFFFBFFLLR
FBFFFBFLLR
FBFFFFFRRL
FBBBFBBLLR
BFBFFFBLLR
BFFBFFBLLR
FFFBBBFRLL
FBBBBFFRRL
FBBFBBFRRR
BFBFBFFLLR
BFFFBBBRRL
FBBFBBBRRL
FFBFBBFRLL
FBBFBFFLLL
FBBBBBFRLR
BFBFBFFRRL
BFFBBFFRRR
BFBFBFBRLL
BFFBFFBRLR
BBFFBFBLRL
FFBFBFBLLL
FFBBBFBRRR
BBFFFFBLRR
BFBBBBBRLR
BFFFFFBLLR
FBFBBBBRRR
FBBBFBFLRR
FBBFBBFLLL
BBFFFFBLRL
FFBBFBFLLL
FBBBBFBLLR
FFFBBBBRRL
FFBFFBFRLL
BFFBBBFLLR
FFFBFBBLRR
FFBBFFBLLR
FFBFFBFLRR
FBBBBFBLRL
FBBBFBFRLL
FBFBFFFRLL
FBBFBBFRLR
BFFFFBBLLL
FBFBFBFLRL
FBBBFFBRRR
FFFFBFFLLL
BFBBBFFRLL
FBBBFBFLLR
FBBFBBFLRR
FBFFBBBLRL
FBFFBBFLRR
FBBBFFBRRL
FBFBBFBRRL
FBFBBFBLRL
BFBFFBBLLL
FBFFFBFLRR
FBFFBBFRLL
FFBBFFFRLR
FBFBBBBRLL
FBBBBFFRLR
BFBFBFBRLR
BFFBFBFRLR
FFFBFFBLLL
FFFFBBFLLR
FFBFBBFRRL
FBBFBFBRLR
FBFBBFBLRR
BFBBBBFLRL
BFFFFBBRRR
FBBFBFBLLL
BFFFFBFLLR
FFFFFBBLRR
FFFBFBBRRL
BFBFFFFRRR
FBFBBFFLRL
FBFFBBBRLL
FFBBBBFLLR
FFFBFFBLLR
FBFFFFFRLL
BFBFFFBLLL
FBBBBFBRLL
FFFFFFBRRL
FFBFBFBLLR
FBFBFBFRLR
FBBBBBBLLL
BFFBFFBLRL
FFBBBFBLRL
FBBFFFFRLL
BBFFBFBLRR
BFBFFBFLLR
FFBBFBBRLR
FBBFFFFRRL
FBFFBFBRLR
BFBFBFFLLL
FFFBFFFLLL
BFBFBFFLRL
BFBFBBFLLL
FFFBBBBLRR
BFFBFBFLLL
BFBBFBFRRR
BFBBFFFLLL
BFFFBBBLRL
FFBBFBFLRL
FFFFBFBLLR
FBFBFFFLLL
BFBFFFBLRR
FFBBFBBLLR
FFFFBBFLRL
BFBBFBBLLR
BFFBBFBLLR
BFFBFFBRLL
BFFFBBFLLR
FFBBFBFLLR
FBBBFFBRLR
FFBFBFFLLR
FBFFFBBRLR
FBBFFFBRLL
FBBFFBBLRL
BBFFFFBRRL
FFBFFFBRLL
BFFFBFFLRL
FFFFFBBRRR
FBFFBBFRRL
FBFBFBFLRR
FBBFFBFLRR
BFBBFBBLLL
FFFBFBFLRL
BBFFFFBLLR
BBFFBFBLLL
BFBBFBFRRL
FBBFFFBRRL
BFFBBBFLRR
FFBBBBFRRL
FBBBBBBRLR
FFFBFFBRRL
FFFBBFBLRL
FBBBBBBRRL
FFFFBFFRRR
FFFBBBBRLL
FFBBFFBLLL
BFBFBBFRLR
FFBFFBBRLL
BFBBBBFLRR
FBFFBFFLLR
FBBBFFBLLR
BFFBBBBRRR
FFBFFFFLRL
BFFBBFBRLL
FFBFBBBRRL
FFBBBFFRLL
FBBFFBFLLR
FBFFBFFLRR
BBFFFFFLRL
FFBBBBFRLR
BBFFFBBLRR
FFFFFFBRRR
FBBBFBBLRL
BFFBBFBRRL
BFBFBBFRRL
BFBBFBBRLL
BFBFFFBRLL
BFFBFFFLRL
BFFBBBBRLL
FFBBBBBRRL
FBBFFBFRRR
BFBBBBBLRL
BFFFFFBLRL
BBFFFFBRLR
FFBBBBBLRL
BFFBFBFLRL
BFBBFFFLRR
BFFBBBFLRL
BFFBFFFLRR
BFBBFBFLRR
BBFFFFFLLR
FFBFFBBLRL
BFFBBBBLLR
FBFFBBBRLR
BFFFFBBLRR
BFFFBFFRRR
FBBFFBBRLL
FBFBFBFRRL
FFFFBFBRRR
FFBBBFBRLL
FBFFBFBRRL
FFBFBFBLRR
BFFFFFFRLL
BFFBFFBRRL
FBFBFFFLLR
BFBFFBBRLL
FFBFFBBLLR
FBFBBFBLLL
FFBBFBFLRR
FFFBBFBRLL
FBBFFBFLRL
FFBFBFFRRR
FBBBFBBRLL
FBFFFFBLRL
FFFFFFBLRR
BFFBFFFRRL
BFFBFBBLRR
FBBFFFBLRL
FBFFBBFRRR
BBFFFBFLRL
BBFFBFFLRL
FFBBFFFLRR
BFBBBFBLLR
FBFBFBFRLL
BFBFBBFRLL
FFBBFBBRLL
BFBBBFBRRL
BFFFBBFLRR
FFFBFFFRLL
BBFFBFFLRR
BBFFBFFLLR
FFFBFFBLRR
BFFBFFFRRR
FBFBFFFRLR
FBFBFFBLLR
FBBFBFBLRR
FBFBBBBLRL
FBFBBFFRRR
BFFFFBFLRR
FBBFBBBRLL
FFBFFBBLRR
FFBFBFFRLR
FBBBBBBLLR
BFBFFFFLRR
BFFFBBFRRR
FFBFBFFLLL
FFBFBBFRRR
BFFBBBFRLL
BFBBFBFRLL
BFBBBFFRRR
BFFFBBBLRR
FFFBBFBRLR
BBFFFBBLLR
BFFFBBBLLL
FFFBFFBRRR
BFBFBBBLRR
BFBFBFFLRR
FBFBFBBLLL
FBBBFBBLRR
FBFFBBBRRR
FFBFFBBRLR
FFFBBFFRRL
FBBFFBBRLR
BFFBFBBRRL
FBBBFFFLRL
FBBFFFFLLR
FFBBFFBRRR
FFFFFBFLRL
BBFFFFFRLL
BFBBBFFLLL
FBFBBFBRLL
FBFBBBFRLL
FBBBFFFLLR
BFBBFBBLRL
FFFFBBFLLL
BFBBBBBRRR
FFFBFBFRLR
FBFFBFBLLL
BFBBBBBLLR
FFBBFFFRLL
FFFBFFFLRL
FFBBBFFRRL
FFBFFFFRLR
BFFFBBBLLR
BFBFFFFLRL
FBBFFBFRLR
FBFFFFFRLR
BBFFFBBRRL
BBFFFBBLRL
FBFFFBFLRL
FBBFFFFLRR
FBFFFFBLRR
FBFFBFFLRL
BFBFFBFRLL
BFBFBBFRRR
FBBBFBFLLL
BBFFFFFLLL
FFFFBFFLRL
FBBFBBFLRL
FBBFBBBRLR
FFBFFFFLLR
FFBFBFBRRR
FBBBFBBLLL
FBFBBBBLLR
BFFFFBBLRL
BFFBFBFLLR
BFFBBBFRRR
BBFFFBFLRR
FBFFFFFLRL
BFFFFFFRRL
BFFBFFBLLL
BFFFFFFLLL
FFFBFFBLRL
BFFFFBFRRL
FBBBFFFRLR
BFBFBBBLRL
BBFFFBFRRR
BFFFFBBLLR
BFBFBBBRRR
FBFFFBFLLL
FBBBFBFRLR
FFFFFFBLRL
FBFBBFFRRL
BFBBFBFLLL
FFBFFBBRRL
BFBFFFFLLL
FBBFFBFLLL
FBFFFBFRRR
BFBBBBFRRL
BBFFFBFRLL
FBBFBFBLRL
FFBBFFFLRL
FBBFBBFRRL
FBBFBBFLLR
BFBFBFBLLR
FBBFFFFRRR
FBBFFBFRRL
BFFFFFFRRR
BFBBFBBRLR
FFFBFBFRLL
FBFFBBBLLR
BFBBBBBRLL
BFFBFFFRLR
BFBBBFFLRL
BFBBBFFRRL
FFBBFBFRRR
FFBFBBFRLR
FFBFBFFLRL
FBFBFFBLRL
FBBBFFBLRR
BFBBBFFRLR
BBFFBFFRRL
FBBBBBFRRL
FBFBBFFLLL
BFBBFBFRLR
FFBFBFFRRL
BBFFFFFLRR
FBBBFBFRRL
BFBFBBBRLR
FFBFFBFRLR
FFBBFBFRLR
FBFFBFFLLL
BFBFBBBLLL
BFFFFFBRLL
FFBFBBFLRR
BFBBFFFLRL
BFFFFBFLRL
FFBBFBFRRL
FFFFBBFRRR
FBFBFFBRLL
FBBBBFBLRR
BFBBFBBRRL
FFFBFBFRRL
FBFFBFBLLR
FFBFBBBLRR
BBFFFBFLLL
BFBBBBFRLR
FFFFFBFRLL
BBFFFBBRRR
BFFBBFFRLR
FBFBBBFLRL
BFBBFFBLRL
BFBBBFFLRR
FBBBFFFRRR
FFFFBFBLRL
BFFBBBFLLL
FBBBBFBRRL
BFFBFBBRRR
FBBBBBFLLR
BFBFBBBRLL
FFFFFBFLRR
BFFFBBFRRL
FFFBBBFLRL
FBBBBFBLLL
FBBFBBBLLR
FBFBBFBLLR
FBFBFFFLRR
BFFFFBFRLR
FFFBBBBLLL
BFBFFFFRRL
FBFBBBBLRR
FBBBBFFLRL
BFBBBFBLLL
FBBFFFBRRR
FFFBBFFLRL
FBBFFFFLLL
BFFFFBBRLL
FBBBBFBRLR
FFBBBFBLLL
BFFFBFFLLL
BFBBBBBLRR
FFBFFFFLRR
FBBFBFFRLL
BFFBBBFRRL
FFFBFBFLLR
BFFFBFFRRL
FBFBFBBLLR
FBFBBBFRRR
FBBFBFBRLL
BBFFFBBLLL
FBFFBFBRLL
BFBFFBBLLR
FFFBBFFLRR
FBBFBBBLRL
FFFFBFFRLL
FFBBFFFLLL
BFFBBBBLRL
BFBBBFFLLR
FFBBFBFRLL
BFBBBFBLRL
BFBBBFBRLR
BFFBBFFLRL
FFBBBBBRLL
FBBFBFFLRR
FFFBBFBLRR
FBBFFBBRRL
FFFBBFBLLR
FFFBBFBLLL
FBFBFFFRRR
FFFFFFFRRR
BFFFBFFLLR
FFBFFBFLRL
FFFBFFFLRR
FBBFBFFRLR
FBFBFBFLLR
FBFFFBBRRL
FBFFFBBRLL
FFBBFFBLRL
FFFFBFBRRL
FFFFFBFRRL
BFBBFFBLLR
FBFFFBBLRR
FFFFBFFRLR
BFFBBFFLRR
FBBBBBFLLL
BBFFBFFRLL
BFFFFFBRRL
FFFBBBFLLL
FFBBBBBRLR
FFBBBBBLRR
BFFFFFFLRR
FFFBBBFRRR
FFBBBFBRRL
BFBBBFBLRR
FBBFFBBLLR
FFFBFBBRRR
FBFBFBBRRR
FBBFFFBLRR
FFBFFFBLRR
FFBFBBBRLR
FFFBFBFRRR
BFFBFBFRLL
FFFFFBBLRL
FFBBFFFRRL
FFBFBBBRRR
FFBFFBBRRR
FFFFFBBRLL
FFFFBBBLLL
FBFBFFBRRL
FFFBFBFLRR
BFBBFBBRRR
BFFBFBBLLR
BFBFBBBLLR
FBBBBBBRLL
BFFBFBBRLL
FBFFBFFRRR
BFFFBFBRLR
FFBBFBBLRL
BFFFBBFLRL
FFFBBFFRRR
BFFBFFBLRR
FFFFFFBLLR
BFFBFBBRLR
FBFBBBBRRL
BFBBFFFRLL
FBFBBFFLRR
FBBFBBFRLL
FFBBFBBLRR
BFBBFFBRRR
FBBBFBFRRR
FFFFBFBRLR
FFFFFBFRLR
FBBBFFFRRL
FBBFFFFRLR
FFFFBBFRLL
FBBBFBFLRL
BBFFFBFRLR
BFBBFFFLLR
BFFBFBFRRL
FBBBFBBRLR
FBBFBFBRRR
FBFFBBFRLR
FFBBFBBRRL
FBFFFFBLLL
FBFFBBFLLR
BBFFBFBRLR
FBFBBBFLLR
FFFFFFFRRL
FFBFBBBLLL
FFFFBFBLRR
BFFFBFFLRR
FFFFBBBLLR
FFBFBFBRLR
BFFBBFFLLL
BFBBBFBRLL
BBFFFBFLLR
FFFBFBFLLL
FFFFBFFLRR
FFBBBBBLLL
FFFFFBFLLL
FBFBFBBLRR
BFFFFFBLLL
BFBBFFBRLL
FBFBFBBRLR
FBFBFBBLRL
FBBBBBBLRR
FFBFFFBRRL
FBBFBFFLLR
FBBFFBBRRR
BFBBBBFLLR
BFFBBBBRRL
FFFBFFFRRR
BFBFBBFLLR
FFBBFFBLRR
BFFBFFFLLL
FBBFBFBLLR
FFBFFFBLLL
FFFBFFFRRL
FFBFFFFRRL
FFFBBBFRLR
FBFFBBBLRR
FFBBFFBRLR
FFFBBFBRRL
BFFFFFBLRR
BFBFBFFRLR
FFBBFBBLLL
FFFFFBBLLL
FFFFBBBRRL
BFFBFBFLRR
FFBBFFBRLL
FFBFBFBRRL
BFBFFFFLLR
BFFBBBBLRR
FFFBBBBRRR
FFBFBFBLRL
FBFFFBBRRR
FFBFFFFLLL
FFBBBFFRLR
FBFBBBBRLR
FBBBBFFLLR
BFFFBFBRRR
FBBFBBBRRR
FFBFFBFLLR
FFBBBFBLRR
BFBFFFFRLL
BFBBBBBLLL
BFBFFBFRRR
BFFFBFBRRL
FBFBBBFLLL
FFBBBBFLLL
BFFBBFFLLR
BFBFFBFRLR
FBBBBFBRRR
FBFFFBFRRL
FFBBBFBLLR
FBFFBBFLRL
BFFBFBBLLL
FFFFFFBRLR
FBBFBBBLLL
FFFBFFBRLR
BFBBBFBRRR
BFFFFFFRLR
BFFFBBFRLR
FFBBBBFRRR
FFFFFBBRLR
BFBFFBBRRR
FBBFBFFRRR
FFBBBBFLRL
FBBBFBBRRL
FBBBBBBLRL
FBBBBBFLRR
BFBFFBFRRL
FFFFBFBRLL
FBBBBFFRLL
FBBFFFBLLL
BBFFFBFRRL
FFBFFFBLRL
FFFBFFFLLR
FFBFFFBLLR
BFFFBFBLLL
BFBBBBFRRR
BFBBFBBLRR
BFBBFFBLLL
FBFFBFFRRL
FBBFBFFRRL
FFFBBBBLLR
FFBBBFFLLL
BFFBBFBLRR
FBFBFFBRLR
FFBFFFBRRR
FFFFBBBRRR
BFBFFFFRLR
FFBBBFFLLR
FBBBFFFRLL
FBBFFBBLRR
FFBBBFFLRR
FFBFBFBRLL
BFBFBBFLRL
BFBFFBFLRL
FBBBFFFLLL
FFBBBFFLRL
FBFBBBBLLL
FFBBBBFRLL
FBBBFFFLRR
FBFBBFFRLL
BFBFFBBLRL
FBBBFFBLLL
BBFFBFBLLR
FBBBFBBRRR
BBFFFFBRLL
FFFBFBBLLR
BFBFBBBRRL
BBFFFFFRRR
BFFFFFFLLR
FFBFFFFRLL
FBBFFFFLRL
FFFBBBFLRR
FFBFBBFLLR
BFBBFBFLRL
FFBFBBBLLR
BFFFFFBRRR
BFBBBBBRRL
BFFBFFFLLR
BFBBFFFRRL
FFFBFBBLRL
FBBBBBBRRR
FFFFBFBLLL
FFBBBFFRRR
BFFFFBFRRR
FFFFFFBRLL
FFFFFBFLLR
FFBFBBFLRL
BFFFFBBRRL
BFBFBBFLRR
FBFBFBFRRR
FBFFBFFRLL
FFFFBBBRLR
BFBBFFBRLR
BFBFBFFRRR
FFBFFFBRLR
FBBFBBBLRR
FBFFFBBLLR
FFFBBFFLLR
FBBFBFFLRL
BFFFFBFRLL
BFFFBBBRRR
FBFFFFFLLR
FFBBBBBLLR
FBFFFFFRRR
FBFBFBBRLL
BBFFFFBRRR
BFFFBFBLRR
BFFFBFBLRL
BFFFBFFRLR
FFFBFBBRLL
BFBFFFBRRR
FFBFFBFRRR
BFBFBFFRLL
BFBBBBFLLL
FBBFFFBRLR
BBFFBFBRLL
FFBFFBFRRL
BFFBBBBLLL
BFBFFFBLRL
BFBBFFFRLR
FBBBBBFLRL
FFFFBBBLRL
FFFBBFBRRR
BFFBFBFRRR
FBFFFFBRLL
FBFFBBBRRL
FFBFBBFLLL
FFFFBBFRRL
FBFFBFFRLR
BFBFFBBRRL
FFFFFFBLLL
BFBFFBBRLR
FBBBFFBLRL
BFFBBBBRLR
BBFFFFBLLL
FBFFFBFRLR
FBBBBFFLLL
BBFFFBBRLR
FFFBBBFRRL
BFBFBFBLRL
FFFFFBBRRL
BFBFBFBLLL
FFFBFBBRLR
FBBFFBBLLL
FFBBBBBRRR
BFFFBBFLLL
BFBFBFBRRR
BFFBFBBLRL
FFBBFFFLLR
BFFBBFFRRL
BFFBBFBLRL
FBFFFFBRRR
FBBBFFBRLL
FFFBFFFRLR
BFBFFBBLRR
FFBBFBBRRR
FFBBBFBRLR
FFBBFFBRRL
BFBBFFBLRR
FBFBFFBRRR
BFBBFFFRRR
FBBBBFFLRR
BFFFFBFLLL
FBFFFFBRRL
FFFBFFBRLL
BFFFBBBRLR
FBFBFFFLRL
FFBFBFFRLL
FFBBFFFRRR
BFBBBBFRLL
BBFFBFFLLL
FFBBBBFLRR
FFBFFBBLLL
FBFFBFBLRR
FFFBBFFRLL
+56
View File
@@ -0,0 +1,56 @@
package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.input.Input
import be.vandewalleh.aoc.utils.input.createDay
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class Day03Test {
@Nested
inner class Example {
private val example = listOf(
"..##.......",
"#...#...#..",
".#....#..#.",
"..#.#...#.#",
".#...##..#.",
"..#.##.....",
".#.#.#....#",
".#........#",
"#.##...#...",
"#...##....#",
".#..#...#.#",
).let { Input(it) }
private val day03 = Day03(example)
@Test
fun `part1 result`() {
assertThat(day03.part1()).isEqualTo(7)
}
@Test
fun `part2 result`() {
assertThat(day03.part2()).isEqualTo(336)
}
}
@Nested
inner class RealInput {
private val day03 = createDay<Day03>()
@Test
fun `part1 result`() {
assertThat(day03.part1()).isEqualTo(294)
}
@Test
fun `part2 result`() {
assertThat(day03.part2()).isEqualTo(5774564250)
}
}
}
+110
View File
@@ -0,0 +1,110 @@
package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.input.Input
import be.vandewalleh.aoc.utils.input.createDay
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class Day04Test {
@Nested
inner class Example {
private val example = """
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm
iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929
hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm
hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in
""".trimIndent()
.let { Input(it) }
private val day04 = Day04(example)
@Test
fun parse() {
val str = """
[(ecl, gry), (pid, 860033327), (eyr, 2020), (hcl, #fffffd), (byr, 1937), (iyr, 2017), (cid, 147), (hgt, 183cm)]
[(iyr, 2013), (ecl, amb), (cid, 350), (eyr, 2023), (pid, 028048884), (hcl, #cfa07d), (byr, 1929)]
[(hcl, #ae17e1), (iyr, 2013), (eyr, 2024), (ecl, brn), (pid, 760753108), (byr, 1931), (hgt, 179cm)]
[(hcl, #cfa07d), (eyr, 2025), (pid, 166559648), (iyr, 2011), (ecl, brn), (hgt, 59in)]
""".trimIndent()
Assertions.assertEquals(str, day04.entries.joinToString("\n"))
}
@Test
fun `part1 result`() {
assertThat(day04.part1()).isEqualTo(2)
}
@Test
fun `part2 invalid`(){
val input = """
eyr:1972 cid:100
hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926
iyr:2019
hcl:#602927 eyr:1967 hgt:170cm
ecl:grn pid:012533040 byr:1946
hcl:dab227 iyr:2012
ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277
hgt:59cm ecl:zzz
eyr:2038 hcl:74454a iyr:2023
pid:3556412378 byr:2007
""".trimIndent().let { Input(it) }
assertThat(Day04(input).part2()).isEqualTo(0)
}
@Test
fun `part2 valid`(){
val input = """
pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980
hcl:#623a2f
eyr:2029 ecl:blu cid:129 byr:1989
iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm
hcl:#888785
hgt:164cm byr:2001 iyr:2015 cid:88
pid:545766238 ecl:hzl
eyr:2022
iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719
""".trimIndent().let { Input(it) }
assertThat(Day04(input).part2()).isEqualTo(4)
}
}
@Nested
inner class RealInput {
private val day04 = createDay<Day04>()
@Test
fun `part1 result`() {
assertThat(day04.part1()).isEqualTo(192)
}
@Test
fun `part2 result`() {
assertThat(day04.part2())
.`as`("Part 2 results")
.isEqualTo(101)
}
}
}
+21
View File
@@ -0,0 +1,21 @@
package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.input.createDay
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
class Day05Test {
private val day05 = createDay<Day05>()
@Test
fun part1() {
assertThat(day05.part1()).isEqualTo(813)
}
@Test
fun part2() {
assertThat(day05.part2()).isEqualTo(612)
}
}
+1 -1
View File
@@ -11,7 +11,7 @@ dependencies {
implementation(Libs.Slf4J.api)
implementation(Libs.Slf4J.kotlin)
runtimeOnly(Libs.Slf4J.logback)
runtimeOnly(Libs.Slf4J.simple)
testImplementation(Libs.Tests.jimfs)
kaptTest(Libs.Micronaut.processor)
-14
View File
@@ -1,14 +0,0 @@
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>true</withJansi>
<encoder>
<pattern>%cyan(%d{YYYY-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{36}) - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<logger name="io.micronaut" level="INFO"/>
<logger name="io.micronaut.context.lifecycle" level="INFO"/>
</configuration>
@@ -0,0 +1,6 @@
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