diff --git a/README.md b/README.md
index 837f832..262a435 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
-
+
## 🛷 How to run
@@ -161,6 +161,7 @@ e.g. `HandyHaversacks`)*
| | 6 | [Wait For It](https://adventofcode.com/2023/day/6) | [[Code](src/main/kotlin/adventofcode/year2023/Day06WaitForIt.kt)] [[Test](src/test/kotlin/adventofcode/year2023/Day06WaitForItSpec.kt)] | `2269432` | `35865985` |
| | 7 | [Camel Cards](https://adventofcode.com/2023/day/7) | [[Code](src/main/kotlin/adventofcode/year2023/Day07CamelCards.kt)] [[Test](src/test/kotlin/adventofcode/year2023/Day07CamelCardsSpec.kt)] | `250474325` | |
| [**2024**](https://adventofcode.com/2024) | 1 | [Historian Hysteria](https://adventofcode.com/2024/day/1) | [[Code](src/main/kotlin/adventofcode/year2024/Day01HistorianHysteria.kt)] [[Test](src/test/kotlin/adventofcode/year2024/Day01HistorianHysteriaSpec.kt)] | `1970720` | `17191599` |
+| | 2 | [Red-Nosed Reports](https://adventofcode.com/2024/day/2) | [[Code](src/main/kotlin/adventofcode/year2024/Day02RedNosedReports.kt)] [[Test](src/test/kotlin/adventofcode/year2024/Day02RedNosedReportsSpec.kt)] | `572` | |
## 🕯️ Useful commands
diff --git a/src/main/kotlin/adventofcode/year2024/Day02RedNosedReports.kt b/src/main/kotlin/adventofcode/year2024/Day02RedNosedReports.kt
new file mode 100644
index 0000000..7087a48
--- /dev/null
+++ b/src/main/kotlin/adventofcode/year2024/Day02RedNosedReports.kt
@@ -0,0 +1,34 @@
+package adventofcode.year2024
+
+import adventofcode.Puzzle
+import adventofcode.PuzzleInput
+import kotlin.math.abs
+
+class Day02RedNosedReports(customInput: PuzzleInput? = null) : Puzzle(customInput) {
+ override val name = "Red-Nosed Reports"
+
+ override fun partOne() =
+ input
+ .lines()
+ .map { report -> report.split(" ").mapNotNull(String::toIntOrNull) }
+ .count { report -> report.isSafeReport() }
+
+ companion object {
+ private fun List.isSafeReport(): Boolean {
+ val change =
+ this
+ .zipWithNext()
+ .map { (a, b) -> b - a }
+
+ if (!change.all { it > 0 } && !change.all { it < 0 }) {
+ return false
+ }
+
+ if (change.any { abs(it) > 3 }) {
+ return false
+ }
+
+ return true
+ }
+ }
+}
diff --git a/src/main/resources/inputs/year2024/day02.txt b/src/main/resources/inputs/year2024/day02.txt
new file mode 100644
index 0000000..8741f5f
--- /dev/null
+++ b/src/main/resources/inputs/year2024/day02.txt
@@ -0,0 +1,1000 @@
+2 5 6 8 6
+87 89 90 93 96 99 99
+13 14 15 18 19 23
+67 69 71 72 73 76 82
+29 32 30 31 34 35 37
+54 56 54 57 54
+70 73 75 74 77 79 81 81
+53 55 56 59 62 61 65
+90 93 95 92 99
+58 61 61 64 67
+36 37 37 39 42 39
+32 35 38 40 40 40
+17 19 19 21 22 23 25 29
+9 11 12 12 14 20
+20 22 26 27 28 29
+75 78 82 84 87 84
+78 79 83 85 88 91 91
+30 31 32 36 40
+68 69 72 76 79 82 88
+29 31 37 38 40 43 45 46
+23 26 31 34 32
+59 61 62 69 72 72
+39 40 42 49 50 53 55 59
+60 61 63 68 71 78
+27 25 26 27 30 31
+92 89 90 91 92 91
+25 24 26 28 28
+45 44 47 49 52 56
+45 44 47 48 55
+13 11 9 11 14 16 19
+70 69 71 68 70 73 72
+25 24 26 27 29 28 28
+43 41 43 42 43 44 48
+15 13 15 14 16 19 24
+26 23 26 28 28 31
+81 79 79 81 84 85 84
+15 12 15 15 15
+83 82 85 85 87 91
+33 31 32 32 39
+84 82 85 89 90
+67 64 67 71 72 75 78 76
+17 15 19 22 23 25 25
+44 42 43 47 51
+6 3 7 8 9 16
+39 36 38 43 44 45 48 50
+93 92 93 98 99 96
+19 16 19 20 22 25 31 31
+56 53 55 60 61 62 65 69
+19 18 21 23 28 30 35
+84 84 85 86 89
+44 44 45 48 47
+48 48 50 53 53
+84 84 85 86 89 91 94 98
+21 21 23 24 26 33
+38 38 40 37 39
+41 41 43 40 37
+6 6 3 6 9 10 10
+32 32 34 35 36 35 37 41
+54 54 52 53 55 56 61
+86 86 88 88 91 92 95 96
+42 42 42 43 44 46 47 46
+24 24 24 26 27 28 28
+38 38 39 39 43
+21 21 24 27 27 28 33
+52 52 54 57 61 62
+60 60 61 65 64
+45 45 46 47 51 54 57 57
+27 27 31 33 34 37 38 42
+21 21 22 26 27 34
+52 52 58 59 60 63 65 66
+47 47 54 56 57 56
+57 57 60 63 64 65 70 70
+39 39 42 47 50 53 56 60
+22 22 25 27 30 37 40 45
+8 12 15 16 18 19 22
+56 60 62 65 67 68 66
+78 82 83 85 88 89 89
+4 8 10 13 14 18
+80 84 86 88 90 91 96
+31 35 34 36 38 39
+33 37 40 43 44 46 43 40
+48 52 53 55 56 55 57 57
+66 70 67 68 69 72 76
+63 67 70 71 73 74 72 78
+36 40 40 43 45
+1 5 5 7 6
+61 65 67 68 71 74 74 74
+68 72 73 73 74 78
+37 41 42 44 44 47 48 53
+65 69 70 71 75 76
+13 17 18 20 23 27 30 27
+8 12 14 18 21 22 22
+7 11 12 15 19 21 24 28
+24 28 32 35 36 41
+59 63 66 71 72
+15 19 20 26 25
+25 29 34 36 36
+32 36 37 42 43 46 48 52
+8 12 19 20 22 28
+17 24 25 28 29 31 34
+74 81 82 85 83
+67 72 73 76 77 77
+22 27 30 33 34 37 38 42
+13 19 21 24 26 28 33
+50 57 58 57 60 63
+16 21 24 26 27 25 28 27
+84 91 89 91 92 95 95
+50 56 54 57 59 60 64
+4 9 11 13 16 14 19
+14 20 23 24 24 27
+64 70 73 73 72
+40 47 48 48 51 52 55 55
+80 86 86 88 91 93 95 99
+63 70 71 71 78
+20 26 30 31 34 37 39 40
+61 68 69 73 74 77 78 77
+64 71 74 76 79 81 85 85
+14 19 21 24 28 32
+3 10 12 14 16 18 22 29
+7 12 14 17 20 23 29 31
+49 56 62 65 67 65
+68 75 80 83 85 86 89 89
+51 58 59 65 68 70 74
+44 51 54 60 62 63 66 73
+33 32 29 26 29
+53 50 49 46 46
+55 54 53 52 50 49 46 42
+18 15 14 11 8 7 1
+52 50 47 49 47 46 45 42
+11 10 7 6 9 6 4 5
+90 89 88 90 88 88
+86 85 84 81 80 81 77
+26 24 26 25 24 22 17
+34 33 30 28 28 27 24 22
+34 32 29 27 27 30
+5 4 2 1 1 1
+41 38 36 35 35 32 31 27
+90 89 89 87 86 80
+81 80 77 73 72
+60 58 57 53 51 52
+98 96 95 92 88 88
+60 59 55 54 53 51 47
+68 66 62 59 52
+34 33 28 25 22
+37 34 31 26 24 22 20 21
+90 88 87 81 81
+51 49 43 40 38 34
+41 38 37 34 32 30 23 17
+53 56 54 53 52 50 48 45
+36 37 35 34 33 32 31 33
+83 84 83 82 82
+89 90 87 86 82
+72 75 72 69 66 63 58
+19 21 20 19 17 19 16
+91 94 93 96 97
+57 59 57 54 53 55 54 54
+77 80 81 80 78 75 74 70
+81 82 79 77 76 77 71
+83 84 83 83 81 79 76
+59 62 59 57 57 60
+84 87 86 84 84 83 83
+41 43 41 38 38 34
+74 75 73 73 67
+79 82 79 77 76 75 71 69
+46 49 45 44 45
+70 71 70 66 66
+34 36 35 32 28 24
+60 61 57 54 49
+15 17 14 8 7 6 5
+17 18 16 11 14
+91 93 86 83 81 80 80
+40 41 35 33 29
+31 34 32 30 25 24 17
+71 71 70 68 67 66
+65 65 64 61 58 57 60
+37 37 35 33 30 27 26 26
+67 67 66 65 61
+86 86 85 82 81 74
+95 95 92 95 92
+58 58 55 54 56 53 54
+37 37 35 32 33 30 28 28
+56 56 53 51 48 49 45
+33 33 30 29 28 31 26
+37 37 37 35 34 31 29
+26 26 26 25 28
+67 67 67 64 64
+80 80 77 77 73
+47 47 47 44 41 36
+54 54 52 50 46 45 42 41
+52 52 50 46 43 46
+38 38 34 32 31 29 29
+99 99 97 95 91 90 89 85
+26 26 24 20 18 16 14 8
+16 16 14 11 9 4 2
+78 78 75 73 67 69
+37 37 35 28 28
+83 83 80 79 73 69
+59 59 57 55 52 47 40
+57 53 52 51 49
+45 41 40 39 37 39
+99 95 93 92 90 89 86 86
+59 55 53 50 47 43
+59 55 52 49 44
+52 48 50 48 46
+96 92 90 87 90 89 91
+60 56 54 51 52 52
+17 13 11 13 11 10 6
+66 62 61 60 63 56
+72 68 65 65 62
+45 41 38 38 39
+56 52 49 48 48 48
+58 54 51 51 50 46
+69 65 62 59 59 58 53
+93 89 88 85 81 80
+38 34 32 28 30
+22 18 17 13 11 11
+49 45 42 40 37 35 31 27
+70 66 63 60 56 51
+71 67 64 58 57 56 54 51
+89 85 78 76 73 71 70 72
+67 63 62 59 56 49 47 47
+88 84 82 75 72 69 68 64
+46 42 40 37 35 28 25 20
+79 74 73 70 68 66 64
+58 53 52 49 51
+30 24 22 19 19
+61 54 53 50 47 45 41
+75 70 67 65 59
+89 83 86 84 81
+29 24 23 20 17 18 21
+17 11 9 6 4 6 6
+93 88 90 88 84
+53 48 46 45 42 45 44 38
+22 17 14 13 10 10 9
+65 58 57 56 56 55 53 55
+35 30 29 29 26 26
+19 14 12 11 10 10 8 4
+70 65 62 60 60 59 57 51
+98 91 88 86 84 80 78
+41 36 34 30 29 31
+45 38 37 33 33
+55 49 46 42 39 36 35 31
+78 72 69 65 64 62 55
+97 91 84 82 79 77 76
+95 89 82 81 83
+43 37 35 34 28 25 24 24
+87 82 77 74 71 67
+56 49 48 45 40 39 34
+89 90 88 85 84 84 77
+35 39 41 42 43 44 41 47
+45 44 43 39 36 34 34
+9 8 12 13 15 22
+74 72 73 75 76 78 81 85
+53 53 50 52 50 48 51
+98 98 96 92 88
+87 87 84 82 83 80 78 74
+74 70 67 70 68 66 68
+78 74 71 68 64 61 56
+53 53 50 48 47
+52 47 47 44 41 40 37 37
+78 78 79 80 81 83
+76 80 79 82 83 84 88
+47 43 41 38 34 32 30 27
+43 43 42 37 36
+30 37 40 44 51
+76 82 85 89 93
+63 58 57 54 53 52 54
+40 40 40 43 46 49 49
+66 68 66 65 64 63 63
+69 69 69 72 69
+52 59 60 61 63 68
+69 64 62 60 59 54 52 45
+86 81 79 77 77 73
+63 58 56 54 53 49
+55 53 50 53 55 58 60 57
+56 62 65 63 66 67
+63 64 61 55 52 51 48 48
+67 64 67 74 78
+23 19 16 12 9 5
+17 17 14 12 9 2
+20 13 11 7 4 6
+41 37 35 30 28 25
+13 13 12 10 6 6
+34 30 28 26 24 19
+69 71 70 68 68 66 62
+93 93 92 89 88 86 81 77
+52 53 57 59 60 61 63 63
+92 91 90 87 87 84 77
+66 66 69 72 79 81
+78 73 72 73 71 70
+54 49 46 45 44 39
+64 70 73 76 77 77
+37 37 38 39 43 41
+63 67 70 76 79 81 83 83
+68 67 69 69 70 74
+57 56 55 54 50 46
+28 29 30 30 33 30
+57 55 57 60 62 65
+84 84 88 91 97
+19 19 17 15 14 13 15
+1 2 5 12 15 16 17 15
+80 87 90 91 91 93 91
+52 56 58 63 64 62
+94 90 87 85 82 79 78 76
+24 24 25 31 33 34 36 36
+80 86 86 88 93
+93 94 92 93 95 98
+17 21 23 25 25 30
+37 31 31 29 27 25 23 20
+41 34 32 29 29 27 30
+39 39 40 43 46 43
+18 18 16 16 12
+17 17 20 23 25 29 31 35
+50 50 57 58 65
+14 14 13 13 15
+45 42 43 45 50 53
+49 46 47 53 55 56 59 58
+30 32 30 28 24 20
+34 33 34 32 35 39
+62 58 56 56 53 53
+34 33 27 24 22
+37 39 32 29 26 22
+90 86 88 86 83
+34 30 27 24 18 18
+78 75 72 69 71 69 67 67
+64 64 68 69 72 73 76 76
+21 19 20 23 26 33 33
+58 54 52 49 43 45
+78 78 75 74 73 72 72
+29 31 28 29 27 24 17
+46 49 51 53 51 56
+38 38 35 33 31 24 27
+69 69 66 65 64 62 58 59
+53 59 60 67 70
+88 90 89 85 83 82
+14 14 12 11 7
+18 25 27 29 31 34 32
+70 70 73 71 71
+39 43 50 53 55 57
+95 93 95 93 92 90 88 89
+95 90 86 85 85
+30 36 40 42 43
+50 54 55 56 57 57 60
+83 84 81 79 78 80 78
+56 63 64 67 71 71
+26 25 22 20 21
+85 82 84 83 77
+69 69 69 66 60
+35 36 33 27 24 27
+29 27 24 17 16 16
+8 6 3 5 12
+23 24 23 21 20 22
+3 5 2 3 4 1
+55 55 57 59 59 66
+31 28 29 32 32 33 36
+27 33 30 31 31
+25 28 30 27 29 30 31 35
+47 50 48 51 51
+9 15 17 19 18 20 21 18
+16 15 13 14 11 10
+76 80 80 82 82
+47 42 40 37 36 36 34 27
+17 22 23 26 33 33
+48 42 40 39 42 43
+56 61 66 67 68 66
+81 78 74 71 68 67 65 60
+84 84 88 89 90 93 96 98
+84 84 83 81 79 80 73
+22 18 19 17 10
+36 42 42 44 47 50 50
+38 38 39 41 44 46 47 47
+97 92 91 90 88 81 78 75
+77 80 77 76 73 69 71
+31 30 35 38 41 48
+79 75 75 73 66
+28 32 35 39 40 43
+29 30 28 26 24 21 23 19
+65 64 68 71 72 75
+72 78 80 77 79 80 84
+62 55 54 53 48 46 45 45
+49 45 43 41 38 35 34 34
+55 53 51 51 49 48 45 48
+8 12 13 16 18 19 23 20
+72 78 82 83 82
+50 53 49 48 48
+22 26 29 32 37 43
+48 45 42 39 37 35 33 33
+64 70 73 76 80
+22 26 28 32 33 34 35 35
+75 78 79 82 88
+75 74 75 76 78 84
+10 10 12 19 23
+6 8 13 15 19
+73 71 69 68 65 66 62
+84 85 83 83 81 80
+81 81 84 81 78 76 74
+46 45 46 49 46 48 48
+65 65 62 60 60 58 57 57
+48 50 52 58 60 63 66 66
+37 34 27 26 23 22 19 21
+48 52 54 54 56 59 61 65
+43 46 44 45 46
+12 16 17 20 23 25 27 34
+40 37 37 36 32
+59 63 66 67 71
+54 54 56 55 58 62
+48 51 51 54 56 56
+45 44 40 39 37
+78 72 73 72 68
+25 21 20 18 16 18
+32 30 30 32 33 35 33
+51 53 46 44 43 42 41 36
+21 14 11 14 11 8 3
+50 50 52 50 57
+5 7 10 14 15 16 17 15
+37 38 37 34 31
+75 78 79 80 84 85 91
+29 28 25 21 20 18 16 17
+24 24 21 17 15 12
+48 44 44 43 40
+14 18 20 24 26 28 29 35
+15 14 14 17 17
+61 61 63 65 68 71 75
+56 55 57 57 63
+3 5 6 9 11 15 19
+90 83 82 78 76 75 74 73
+87 87 85 87 90 93
+67 73 75 77 83 85 90
+19 20 22 24 26
+66 64 63 61 58 55 52
+63 65 68 69 71 74 75
+63 60 58 55 52 49 46
+32 30 28 27 25
+74 73 71 70 69 68
+28 25 22 21 19 17 15 12
+59 56 54 53 50 47
+50 49 46 45 42 39 38
+57 58 60 61 62 64
+4 5 6 7 10 12 15
+6 7 10 12 14 17
+36 39 42 44 47 49 52 54
+53 51 48 45 44 43 41
+70 73 75 78 80 81 84 87
+57 58 61 64 66 67
+29 32 35 37 38 40
+31 29 26 23 21 18 16
+41 39 37 36 35 32 30 29
+93 90 89 87 84 83 82
+44 42 41 38 35
+68 65 62 60 57 56
+19 17 14 12 9 6
+33 31 29 26 23 22
+26 29 30 33 34 37 40
+23 25 28 29 31 32 35
+63 66 67 70 71
+26 24 21 18 17 15
+87 84 81 78 77 74 71
+18 17 16 14 13 12 10 7
+2 5 6 7 10 13 15 18
+41 42 45 47 48 51 52
+22 24 26 27 29 30 32 35
+65 63 62 60 58 55 53 50
+33 36 37 40 42 43 44
+87 89 91 93 96 97 98
+17 18 21 22 23
+85 83 81 80 77 75 74
+33 30 27 24 22 20 17
+28 29 31 33 34 35 37
+17 20 22 23 24 26
+33 36 38 40 43 44 46 48
+29 28 25 22 19 18
+38 35 33 32 29 28 27
+54 51 50 48 47
+88 91 92 95 97 99
+43 42 41 39 36 33 31
+42 44 45 48 49 50 51 53
+72 74 77 78 81 84 87 89
+72 70 67 65 64 63 62 60
+24 22 19 17 14 13
+72 74 76 77 80 82 83
+9 10 12 15 17 19
+64 65 68 69 72
+65 63 60 59 58 56 54
+67 70 71 72 75 76 77 80
+4 6 8 10 13 14
+35 33 32 30 27 26 23 22
+52 51 49 46 45 44 41
+39 41 43 44 45
+50 53 55 57 58 59 62 64
+58 61 64 65 66 69
+10 8 7 4 3 2
+92 89 87 85 82
+76 77 80 81 84 85 86
+82 85 86 87 90 92
+22 21 18 16 13
+82 83 85 88 91 93 95
+38 39 41 42 44 46 49 50
+25 27 30 33 36 39 41 44
+48 50 51 52 53 56
+97 95 92 89 88
+60 62 64 65 67 68
+55 57 60 62 64 66 67 68
+34 33 32 31 28 26 25
+72 70 68 65 64 61 59
+76 78 80 81 82
+29 27 25 23 21 18 17
+87 84 83 80 77 75 74 73
+69 70 73 76 78
+74 73 70 69 66 64
+49 50 53 56 58 60 63 66
+56 55 53 50 49
+30 28 25 22 19 18
+97 95 93 91 88 87
+76 75 74 73 72
+39 40 43 44 45 48 51
+33 30 27 24 21
+45 47 49 52 55
+46 48 50 52 55
+46 44 41 38 37 35 34 31
+54 52 51 50 47 45 43
+43 42 41 38 37 36 35
+14 17 20 21 23 26 28 29
+47 46 44 41 40 38
+71 73 74 75 77 79 81 84
+10 12 13 14 16 19 22
+75 72 71 70 67 64
+60 59 57 54 52 49
+60 61 64 66 69 70 72 75
+47 44 41 40 39 37 34 33
+65 63 60 58 55 53 50
+82 83 85 87 88 89
+40 38 37 36 33 30 27
+53 52 50 48 46 45
+72 70 69 68 67 66
+14 17 19 21 24 25 26
+94 93 90 88 85
+65 68 70 73 75 77
+68 66 65 64 62
+83 81 78 76 75 72 69 66
+1 3 5 6 9 10 11 13
+30 29 27 24 21 19 17
+93 90 88 85 84 81 80
+29 31 34 35 38 40
+33 34 36 39 42
+65 68 69 70 71 74 75
+51 54 56 57 58 61 64 65
+68 70 72 75 77 78 79 82
+94 93 91 88 85
+60 57 54 53 51 49 46
+43 45 46 47 50 53 56 57
+64 67 69 72 74 76 78 79
+47 46 45 44 43 40 39
+45 42 41 38 35 33 30
+12 10 9 8 6
+3 6 9 10 12 13 16
+74 73 70 69 66 63 61 59
+21 19 17 15 12 10 9 6
+45 44 42 41 39 37
+35 33 30 28 27 24
+8 9 10 11 12 13 15 17
+50 51 54 57 60
+75 74 73 71 70 68
+60 58 55 52 49
+49 51 54 55 57 58
+23 26 28 29 32 34
+15 13 10 7 4
+51 52 55 57 59 61 62
+73 71 68 67 64
+77 75 74 71 70 69 67
+60 58 56 53 52 50 48 46
+17 19 20 23 25 26 27 30
+19 22 24 27 28 29 30 32
+60 62 65 66 67 68 71 74
+14 15 16 17 18 21 24
+73 75 77 79 81 82 83
+7 9 10 11 13
+58 60 61 62 65
+84 83 82 81 79 76 75 73
+29 28 27 26 23 21 20
+95 94 92 91 89 86
+93 90 87 86 83 81 79
+68 71 72 75 76 78
+68 67 65 63 62
+30 31 33 36 39 40 42 45
+96 93 91 90 88 85
+14 15 18 21 22
+84 81 78 76 74 71
+32 31 30 29 28 27 26
+61 58 56 55 54 51
+6 7 9 10 11 12 15
+74 77 79 80 83 84 85 88
+29 30 31 34 36 38 39 40
+41 44 46 47 48 51 53
+85 86 89 92 94 97
+79 78 77 76 73 70 69
+87 85 82 79 77 76 75
+71 74 76 77 80 82 84 85
+83 85 87 90 93 94 96
+96 95 94 93 92
+8 10 12 15 16 18 20
+76 73 72 71 69 66 63
+75 76 78 81 82 84 87 88
+29 30 32 34 36
+78 77 75 74 73 71 69 67
+92 90 87 86 83
+32 33 36 37 39 41 43
+53 56 59 60 63 65 67 68
+55 53 52 50 47 46 45 43
+30 27 25 23 22 19 16 14
+74 73 70 68 65 62
+99 97 96 93 90 87
+12 14 15 16 17 19
+65 63 62 59 57 55 52 50
+37 36 35 34 31 30 27 24
+36 39 41 42 43 44 46 49
+2 3 5 8 10 12 15
+79 80 81 82 85 88
+16 15 14 11 8 7
+84 83 81 79 78 76
+24 23 22 21 20
+25 22 20 17 16 14 12
+52 53 56 59 60 61 62
+69 68 67 66 65 64 62
+82 79 76 74 71 68 65 62
+12 9 8 7 6 5
+42 39 37 36 34
+74 71 68 67 64
+77 78 80 81 84 87 89
+34 37 39 40 43 46
+3 4 7 9 12 15 16
+71 69 68 66 65 64
+65 64 63 61 60
+60 63 64 67 70 72
+52 49 46 43 42 41
+58 59 61 62 64 67 68 71
+42 45 47 49 51
+15 13 11 10 7 5 2
+45 42 41 38 36 33
+13 16 19 22 24 26
+45 42 40 38 35 33
+59 58 57 56 55 53
+66 63 61 58 55 53
+19 20 22 24 26 29
+64 65 67 68 69
+82 80 77 74 71
+88 85 83 81 79 76 75 74
+26 28 29 31 34 36 37 39
+38 39 42 44 45 47 48 51
+1 4 7 9 10
+74 77 79 81 82 84 86 89
+60 62 65 67 69 70
+3 4 5 6 9 10 13
+55 52 50 49 47 46
+16 13 11 10 8 6
+59 61 63 66 68 69 72
+79 77 74 73 71 70 67 65
+29 30 33 36 39
+80 83 86 88 91 92 94 95
+12 13 15 18 20 21 23 26
+22 24 27 29 32 34 35 37
+73 72 69 68 66 64 62
+12 9 8 5 4
+92 89 87 85 84 81
+40 41 42 43 44 47 49 51
+48 49 50 52 54 55 56 59
+22 23 25 28 31
+79 82 84 86 88 89 91 93
+88 87 84 81 80 79 76
+47 50 53 55 56
+88 89 92 93 94 95 96
+1 4 7 10 11 12
+69 70 72 74 75 78 80 82
+68 69 72 73 76 79
+5 6 8 10 13 16
+87 85 83 82 79 76 74 73
+40 42 45 47 49
+41 39 37 36 34 32 29 26
+36 33 31 28 26 24 23
+87 90 91 93 96
+35 34 31 28 26 25 23 20
+82 80 77 74 71 68 67 65
+59 56 53 50 48
+46 45 44 42 41
+79 76 73 70 68 67 64 63
+94 92 90 87 86 84 82
+22 21 18 15 14 13 11
+94 92 89 88 86 83
+80 79 78 76 73
+4 7 9 10 12 14 15 18
+81 83 86 89 91
+49 52 53 56 58
+55 58 61 63 65
+71 68 66 65 64 63 62
+54 57 60 63 65
+55 52 49 48 46 43
+60 59 57 55 52 49 48 47
+41 44 45 48 50 53 54
+47 45 43 41 38 35 34 32
+25 23 21 20 18 15 12
+54 53 50 47 44 43 40
+32 35 38 41 43 46 48
+54 53 52 49 46 44
+44 42 41 39 37 34
+64 66 69 71 73 76 77 79
+81 82 84 86 88 91 92 95
+17 14 12 10 8 5 4
+74 77 79 82 85 88
+66 68 69 70 73
+58 56 55 54 53 50 47 46
+39 37 35 33 31 30 28
+8 11 14 15 17 18
+59 60 61 63 66
+68 65 63 62 60
+51 48 45 44 41 38 36
+75 78 80 82 85 88
+89 87 85 82 79 78
+16 13 11 8 6 5 3
+20 17 14 12 11 9
+34 32 31 29 27 25
+91 88 86 84 81 79
+79 81 82 85 86 88 90
+97 95 93 92 91 90
+85 82 80 78 75 74 73 70
+66 68 71 74 76 77 80
+90 88 87 85 82 79 78
+38 41 42 44 46
+13 14 17 20 23 25 28
+84 85 88 90 91
+62 61 60 59 58
+59 62 63 66 67
+21 22 24 25 26 28
+79 76 75 73 72 69 68 66
+28 27 24 23 21 18 15 14
+52 49 47 45 42 41 38 35
+84 81 80 79 78 76
+78 77 75 72 70
+79 80 82 83 86
+75 77 79 81 82 85
+53 55 58 59 60
+76 73 71 69 66 63
+73 76 77 80 81 84 86
+23 20 17 15 12 11 10
+77 74 73 71 70 69 67 66
+38 35 32 30 28 25 23
+92 89 88 86 85 83 81
+95 92 89 87 84 83
+27 28 29 32 33 35 37 40
+12 10 8 5 3 1
+29 31 33 35 36 37
+19 20 23 24 27 30
+91 88 86 83 82 81
+31 34 36 37 38 39 42
+63 66 69 70 72 75
+63 65 68 71 72 75 78
+71 70 67 66 65 62
+22 24 27 30 32 34 37
+46 47 48 51 52 53
+26 24 22 19 18 17
+39 41 43 44 46 47 49
+47 45 44 42 40
+66 67 68 71 74 75 77
+1 2 3 6 7 9 10
+74 76 79 82 84 85
+86 85 82 80 78 77 76
+48 47 45 44 41 38 35 33
+63 64 66 69 71
+86 85 83 82 81 80
+49 46 45 42 41 38 37 36
+37 38 39 40 41
+81 78 75 72 70 68
+4 5 7 10 11 14 16 18
+51 53 56 57 60 63 65 67
+88 85 82 81 78 77 74
+27 30 31 33 34 35
+35 32 31 30 29 28 25
+60 59 56 55 53 51 48
+89 91 94 96 98
+65 66 69 72 74 75 77
+40 43 45 46 48
+41 43 46 48 50 53 56 57
+13 16 18 19 22 23 25 28
+57 54 52 51 48 45 42 40
+35 38 40 42 45 47 48
+25 26 29 32 34 37 39 41
+31 32 34 36 38 39
+15 16 18 20 23 25
+6 8 11 12 14 17 19 21
+86 85 83 81 79 76 74
+2 3 5 8 10
+63 65 68 71 73 75
+5 6 7 10 12 14 15 16
+85 88 89 92 95
+58 55 52 49 46
+10 9 7 5 2
+65 68 69 70 71 73 76 78
+96 93 90 88 87 86 83
+51 54 56 57 60 61 64 66
+17 18 21 24 25
+40 39 37 34 32 29 26
+30 32 33 35 37
+16 19 22 25 27 28 29
+8 7 5 4 1
+99 98 97 96 95 94 93
+85 87 89 92 95 98
+57 60 62 64 65 67
+37 34 31 29 27 25 24
+49 50 51 54 55 57
+8 9 11 13 15
+72 73 74 75 77
+7 9 12 13 15
+29 30 33 34 37 40 43
+77 78 79 80 81 83 85
+72 73 76 77 80
+44 43 41 39 37 34 33
+17 20 23 24 26 28 30 31
+80 77 76 74 73
+53 56 58 59 60 61
+78 75 73 70 69 66 64
+14 16 17 20 22 25 28
+16 15 12 10 9 8 5 2
+34 32 29 26 23 20 19 18
+7 8 9 12 14 17 18
+49 52 54 57 58
+46 45 43 42 40
+47 44 43 41 39 36
+61 58 56 55 52
+50 53 55 58 61 63 64
+37 38 40 42 45 46 48 50
+12 14 15 18 21 22
+62 61 58 55 54 53
+61 64 67 70 73 75 78 79
+81 84 86 88 90 92 93
+13 11 10 9 8 6
+21 20 17 16 15 13 11 8
+34 33 31 28 25 22 21 20
+12 9 6 3 2
+10 11 12 13 16 18
+17 18 21 22 25
+48 51 53 54 57
+57 58 61 62 64
+84 86 87 90 92 95
+61 59 56 53 50 48 47
+31 34 35 36 37 40 43 45
+89 86 83 81 80 78 77 76
+11 13 14 15 16
+29 32 35 36 37 39 40
+26 27 28 29 32 33
+34 37 40 43 44
+68 70 73 76 78 79
+61 58 57 54 53 52 49
+88 86 83 82 79
+21 19 17 14 13 12 10
+67 66 63 60 59 56 55
+54 55 58 60 61
+75 76 77 78 79 80 83
+72 74 75 78 80
+15 17 19 20 22 23
+62 61 58 56 53 51
+80 79 76 75 72 69
+74 75 78 79 80
+47 44 41 38 36 34 31
+24 22 21 19 16 14
+49 48 45 44 41
+52 53 54 56 58 61
+4 5 7 9 11 14 17
+52 54 55 57 58 59 60
+92 91 90 87 86 85
+38 37 34 33 30
+27 28 31 32 34 36
+87 85 82 80 78 75 72 69
+6 8 9 12 14 16 18
+65 68 71 74 77
+35 34 33 31 28 27
+58 57 55 54 53 52 50 47
+19 16 13 11 8 7 5 4
+43 41 39 38 35 34 31 29
+50 47 44 42 39 37 34
+58 56 53 51 48 47
+19 21 24 26 27 30
+80 79 78 77 75 73
+11 10 8 7 5
+64 66 69 70 73 74 76
+43 41 40 38 37 35 32 29
+88 87 85 83 82 80 77 76
+72 75 78 81 84 87 90 93
+83 82 79 78 75 74 73 71
+81 78 77 74 72
+43 40 39 36 35 32 30
+13 11 10 9 8 6 3
+51 52 53 56 57
+64 66 67 69 70
+98 95 93 91 89
+50 49 46 44 43 40 39
+87 85 82 80 79 77 75 73
+73 72 70 67 65
+60 61 64 67 69 70 71
+66 65 63 61 59 57 56 53
+75 74 71 69 67
+88 86 85 83 81 79 76 75
+28 27 25 22 20 18 15 12
+20 21 24 27 29 30 32
+38 37 34 33 30 28 26 24
+81 79 76 75 72 69 67
+92 89 86 85 82 81 80
+52 51 49 47 44 43
+26 23 20 18 15
+50 47 45 44 42 41 38 35
+69 67 65 63 61 58
+38 35 34 33 31 29 26
+63 62 61 58 55 52
+16 19 21 23 25 28 31 33
+56 57 58 60 63
+9 7 6 4 2
+64 65 67 69 70 71
+79 76 74 72 69 66
+35 36 37 39 40 41 42
+5 8 10 11 12
+52 51 49 48 47
+29 32 34 36 39 40 42
+78 76 73 70 67 66
+16 15 13 10 7
+38 35 34 33 32 29 28
+90 88 85 84 81 78 75 74
+22 24 26 29 32 33 34 37
+53 54 55 56 57 58 59 61
+9 11 12 14 17 20 23
+84 81 80 77 76 73 71
+31 28 25 22 21
+15 18 19 21 22 24
+24 22 20 18 15 12 9 6
+27 28 30 32 35 36
+99 97 95 92 89 86 84 82
+31 28 26 23 22 19
+58 61 62 65 67 69
+33 30 27 24 23 22
+21 18 17 16 15 14
+25 27 29 32 34
+45 43 42 40 38 36 33 31
+20 18 16 15 13 11
+76 74 73 71 70 69 66
+88 89 90 93 95 97 99
+55 52 51 50 48 46 43
+48 50 52 55 57 58 59 62
+60 63 64 66 68
+53 52 49 48 47 44 42 39
+85 83 80 78 75
+39 40 43 44 46 49 52
+10 11 12 15 18 21
+46 47 50 52 55 56
+68 67 66 65 62 61 60
+28 29 32 34 35 36 38
+17 16 14 13 10
+38 41 42 43 44
+59 57 54 52 50 48 47
+81 80 77 74 71 68 66 63
+44 42 41 39 36 35 32 31
+7 10 11 14 16 18
+50 52 53 55 57 60 63 64
+57 60 61 64 67
+46 44 43 42 40 38 35 32
+63 60 59 58 55
+19 22 24 25 26 27 28 30
+2 3 4 6 9 10
+19 18 17 16 14
+85 84 81 80 78 77
+82 81 79 78 75 73
+66 63 62 60 59 57 55
+99 96 95 92 89
+41 44 46 48 51 53
+46 45 42 41 40 39 38
+52 53 54 56 57
+75 73 71 70 69
+93 90 88 86 84
+39 36 34 33 32 29 28
+46 43 40 37 34 33
+99 96 94 93 92 89
+73 75 76 79 80 81
+63 66 68 71 72 73 76 79
+68 65 62 59 57 56 54
+81 80 77 74 73 71 70 68
+14 13 10 9 6 4 1
+75 77 79 80 82 83 84
+1 3 5 8 9
+36 35 33 30 27 25 22 19
+73 72 69 67 66 65 64
+80 82 83 86 88 90
+62 60 57 56 54 52 49
+78 77 76 75 72
+22 24 26 27 29 31 34
+13 15 18 21 23
+12 15 18 20 22 24 27 29
+29 26 23 20 18
+63 60 57 54 52 49 48
+21 20 19 16 15 14 11 9
+37 34 33 32 30 28
+57 55 53 52 49 48 46 45
+13 15 17 18 19
+50 53 56 59 61 64 67
+59 58 56 55 52 49
+26 28 29 31 32 34
\ No newline at end of file
diff --git a/src/test/kotlin/adventofcode/year2024/Day02RedNosedReportsSpec.kt b/src/test/kotlin/adventofcode/year2024/Day02RedNosedReportsSpec.kt
new file mode 100644
index 0000000..bcc3a43
--- /dev/null
+++ b/src/test/kotlin/adventofcode/year2024/Day02RedNosedReportsSpec.kt
@@ -0,0 +1,5 @@
+package adventofcode.year2024
+
+import adventofcode.PuzzleBaseSpec
+
+class Day02RedNosedReportsSpec : PuzzleBaseSpec(2)
diff --git a/src/test/resources/inputs/year2024/day02.txt b/src/test/resources/inputs/year2024/day02.txt
new file mode 100644
index 0000000..82cd679
--- /dev/null
+++ b/src/test/resources/inputs/year2024/day02.txt
@@ -0,0 +1,6 @@
+7 6 4 2 1
+1 2 7 8 9
+9 7 6 2 1
+1 3 2 4 5
+8 6 4 4 1
+1 3 6 7 9
\ No newline at end of file