summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Segundo2024-12-05 12:41:57 +0100
committerChristian Segundo2024-12-05 12:41:57 +0100
commit25f7a5e5bc80c699d9538aed0d3f31b9406e0a74 (patch)
treeae46b552dd1ea048410cf486d151f96355fe56af
parent773b37cfb0211a65d3a05bc60b7b70e79db5b881 (diff)
downloadadvent-of-code-2024-25f7a5e5bc80c699d9538aed0d3f31b9406e0a74.tar.gz
add day 5
-rw-r--r--5-input.txt1377
-rw-r--r--5.pl49
2 files changed, 1426 insertions, 0 deletions
diff --git a/5-input.txt b/5-input.txt
new file mode 100644
index 0000000..6c28765
--- /dev/null
+++ b/5-input.txt
@@ -0,0 +1,1377 @@
+58|55
+89|38
+89|34
+85|64
+85|25
+85|43
+71|97
+71|17
+71|85
+71|87
+91|77
+91|67
+91|35
+91|85
+91|44
+49|43
+49|27
+49|38
+49|75
+49|34
+49|55
+78|13
+78|62
+78|23
+78|43
+78|51
+78|49
+78|83
+77|49
+77|17
+77|85
+77|46
+77|71
+77|97
+77|19
+77|87
+51|75
+51|15
+51|47
+51|79
+51|67
+51|34
+51|24
+51|83
+51|84
+36|38
+36|94
+36|89
+36|64
+36|62
+36|45
+36|44
+36|87
+36|78
+36|39
+76|51
+76|39
+76|55
+76|64
+76|17
+76|25
+76|62
+76|49
+76|43
+76|27
+76|78
+48|77
+48|19
+48|97
+48|86
+48|53
+48|85
+48|71
+48|74
+48|15
+48|91
+48|59
+48|34
+46|78
+46|64
+46|76
+46|44
+46|43
+46|24
+46|85
+46|27
+46|17
+46|19
+46|49
+46|35
+46|36
+34|79
+34|59
+34|53
+34|46
+34|86
+34|97
+34|75
+34|36
+34|57
+34|83
+34|98
+34|71
+34|45
+34|74
+11|15
+11|91
+11|46
+11|74
+11|84
+11|48
+11|79
+11|77
+11|34
+11|24
+11|53
+11|67
+11|19
+11|36
+11|57
+53|98
+53|79
+53|35
+53|46
+53|57
+53|91
+53|85
+53|97
+53|36
+53|84
+53|67
+53|59
+53|93
+53|15
+53|44
+53|45
+47|24
+47|71
+47|13
+47|19
+47|91
+47|46
+47|98
+47|74
+47|53
+47|75
+47|67
+47|57
+47|45
+47|77
+47|83
+47|79
+47|36
+55|79
+55|91
+55|57
+55|19
+55|53
+55|24
+55|36
+55|13
+55|67
+55|74
+55|98
+55|86
+55|45
+55|15
+55|85
+55|75
+55|46
+55|59
+35|23
+35|11
+35|94
+35|47
+35|64
+35|62
+35|27
+35|49
+35|72
+35|38
+35|83
+35|87
+35|25
+35|43
+35|44
+35|39
+35|51
+35|48
+35|74
+45|89
+45|85
+45|51
+45|49
+45|97
+45|64
+45|25
+45|93
+45|58
+45|23
+45|78
+45|87
+45|44
+45|94
+45|27
+45|39
+45|11
+45|62
+45|38
+45|72
+38|55
+38|59
+38|83
+38|51
+38|67
+38|94
+38|91
+38|58
+38|48
+38|47
+38|77
+38|75
+38|13
+38|62
+38|15
+38|86
+38|72
+38|74
+38|23
+38|53
+38|25
+64|25
+64|94
+64|62
+64|34
+64|11
+64|53
+64|59
+64|58
+64|38
+64|74
+64|75
+64|51
+64|48
+64|13
+64|86
+64|55
+64|47
+64|43
+64|49
+64|27
+64|83
+64|23
+62|48
+62|77
+62|83
+62|55
+62|25
+62|34
+62|86
+62|15
+62|84
+62|53
+62|79
+62|47
+62|59
+62|67
+62|74
+62|72
+62|94
+62|75
+62|11
+62|91
+62|13
+62|57
+62|58
+44|27
+44|43
+44|74
+44|49
+44|86
+44|11
+44|38
+44|64
+44|89
+44|94
+44|72
+44|47
+44|39
+44|25
+44|55
+44|34
+44|87
+44|23
+44|83
+44|78
+44|51
+44|62
+44|48
+44|58
+72|67
+72|53
+72|77
+72|46
+72|75
+72|71
+72|11
+72|84
+72|15
+72|55
+72|34
+72|91
+72|25
+72|24
+72|79
+72|57
+72|36
+72|48
+72|13
+72|59
+72|83
+72|86
+72|74
+72|47
+15|45
+15|27
+15|76
+15|89
+15|77
+15|19
+15|35
+15|87
+15|79
+15|24
+15|64
+15|98
+15|46
+15|97
+15|17
+15|93
+15|39
+15|36
+15|71
+15|78
+15|85
+15|49
+15|44
+15|57
+94|51
+94|74
+94|13
+94|58
+94|83
+94|79
+94|59
+94|25
+94|46
+94|53
+94|67
+94|72
+94|48
+94|34
+94|75
+94|84
+94|55
+94|77
+94|15
+94|47
+94|86
+94|91
+94|57
+94|11
+84|35
+84|77
+84|98
+84|93
+84|85
+84|45
+84|87
+84|79
+84|64
+84|44
+84|36
+84|97
+84|78
+84|46
+84|76
+84|89
+84|24
+84|39
+84|57
+84|49
+84|17
+84|15
+84|19
+84|71
+98|62
+98|94
+98|64
+98|89
+98|44
+98|43
+98|27
+98|87
+98|97
+98|19
+98|45
+98|17
+98|85
+98|39
+98|72
+98|93
+98|51
+98|76
+98|23
+98|35
+98|58
+98|49
+98|38
+98|78
+79|64
+79|27
+79|17
+79|76
+79|78
+79|36
+79|49
+79|45
+79|71
+79|97
+79|39
+79|85
+79|43
+79|24
+79|44
+79|98
+79|93
+79|89
+79|38
+79|87
+79|46
+79|57
+79|35
+79|19
+17|35
+17|87
+17|94
+17|25
+17|58
+17|43
+17|49
+17|78
+17|38
+17|55
+17|27
+17|72
+17|11
+17|51
+17|34
+17|44
+17|23
+17|64
+17|47
+17|62
+17|83
+17|39
+17|48
+17|89
+59|87
+59|35
+59|24
+59|67
+59|19
+59|36
+59|39
+59|93
+59|84
+59|57
+59|77
+59|85
+59|79
+59|98
+59|75
+59|44
+59|45
+59|89
+59|46
+59|97
+59|17
+59|76
+59|71
+59|15
+87|64
+87|72
+87|48
+87|13
+87|62
+87|34
+87|55
+87|38
+87|94
+87|83
+87|11
+87|47
+87|43
+87|58
+87|23
+87|78
+87|49
+87|51
+87|74
+87|86
+87|27
+87|25
+87|39
+87|89
+93|43
+93|94
+93|78
+93|39
+93|23
+93|87
+93|38
+93|49
+93|76
+93|47
+93|25
+93|51
+93|35
+93|17
+93|89
+93|64
+93|48
+93|72
+93|44
+93|62
+93|11
+93|27
+93|58
+93|55
+13|46
+13|77
+13|75
+13|45
+13|15
+13|24
+13|53
+13|98
+13|84
+13|36
+13|17
+13|19
+13|91
+13|79
+13|67
+13|76
+13|59
+13|57
+13|97
+13|35
+13|71
+13|93
+13|85
+13|44
+23|47
+23|15
+23|74
+23|25
+23|58
+23|77
+23|86
+23|79
+23|91
+23|72
+23|55
+23|83
+23|48
+23|84
+23|94
+23|67
+23|51
+23|34
+23|53
+23|13
+23|62
+23|11
+23|75
+23|59
+27|38
+27|34
+27|91
+27|23
+27|75
+27|84
+27|62
+27|13
+27|58
+27|11
+27|51
+27|86
+27|74
+27|47
+27|94
+27|67
+27|83
+27|48
+27|25
+27|53
+27|43
+27|55
+27|72
+27|59
+24|71
+24|44
+24|94
+24|45
+24|17
+24|78
+24|36
+24|93
+24|87
+24|23
+24|85
+24|19
+24|62
+24|38
+24|35
+24|64
+24|89
+24|97
+24|39
+24|43
+24|49
+24|27
+24|98
+24|76
+19|45
+19|64
+19|27
+19|89
+19|76
+19|51
+19|97
+19|49
+19|58
+19|93
+19|17
+19|23
+19|62
+19|94
+19|38
+19|35
+19|87
+19|78
+19|85
+19|25
+19|72
+19|39
+19|43
+19|44
+97|44
+97|35
+97|47
+97|55
+97|49
+97|78
+97|23
+97|27
+97|62
+97|93
+97|89
+97|11
+97|72
+97|51
+97|94
+97|17
+97|25
+97|38
+97|58
+97|87
+97|76
+97|64
+97|43
+97|39
+67|97
+67|17
+67|77
+67|39
+67|89
+67|71
+67|93
+67|84
+67|98
+67|45
+67|76
+67|24
+67|15
+67|79
+67|44
+67|19
+67|78
+67|64
+67|35
+67|57
+67|87
+67|85
+67|36
+67|46
+43|84
+43|59
+43|25
+43|11
+43|48
+43|13
+43|91
+43|38
+43|53
+43|94
+43|86
+43|15
+43|58
+43|72
+43|47
+43|34
+43|83
+43|67
+43|62
+43|74
+43|55
+43|75
+43|51
+43|23
+74|17
+74|71
+74|84
+74|79
+74|53
+74|93
+74|19
+74|97
+74|13
+74|36
+74|59
+74|86
+74|75
+74|67
+74|98
+74|85
+74|15
+74|91
+74|46
+74|76
+74|45
+74|77
+74|57
+74|24
+57|87
+57|64
+57|39
+57|24
+57|71
+57|17
+57|97
+57|93
+57|36
+57|27
+57|23
+57|78
+57|45
+57|76
+57|35
+57|98
+57|46
+57|38
+57|43
+57|19
+57|89
+57|85
+57|44
+57|49
+83|85
+83|13
+83|15
+83|36
+83|74
+83|86
+83|71
+83|59
+83|46
+83|91
+83|19
+83|79
+83|53
+83|97
+83|57
+83|93
+83|77
+83|76
+83|67
+83|45
+83|98
+83|24
+83|75
+83|84
+39|91
+39|48
+39|34
+39|51
+39|55
+39|23
+39|47
+39|27
+39|83
+39|64
+39|74
+39|86
+39|53
+39|43
+39|13
+39|78
+39|94
+39|49
+39|25
+39|58
+39|72
+39|62
+39|11
+39|38
+25|55
+25|46
+25|57
+25|71
+25|79
+25|75
+25|67
+25|74
+25|11
+25|48
+25|86
+25|15
+25|91
+25|53
+25|24
+25|98
+25|84
+25|34
+25|13
+25|59
+25|83
+25|36
+25|47
+25|77
+75|76
+75|71
+75|39
+75|89
+75|67
+75|57
+75|15
+75|17
+75|24
+75|19
+75|97
+75|84
+75|77
+75|78
+75|44
+75|45
+75|93
+75|79
+75|36
+75|35
+75|85
+75|46
+75|98
+75|87
+86|71
+86|19
+86|84
+86|57
+86|97
+86|67
+86|17
+86|93
+86|59
+86|91
+86|98
+86|79
+86|76
+86|77
+86|53
+86|45
+86|35
+86|75
+86|85
+86|15
+86|13
+86|36
+86|24
+86|46
+58|46
+58|36
+58|83
+58|59
+58|34
+58|72
+58|24
+58|57
+58|11
+58|13
+58|25
+58|91
+58|77
+58|86
+58|53
+58|67
+58|79
+58|15
+58|47
+58|75
+58|84
+58|48
+58|74
+89|47
+89|72
+89|49
+89|25
+89|62
+89|27
+89|43
+89|86
+89|39
+89|53
+89|78
+89|51
+89|83
+89|58
+89|64
+89|55
+89|48
+89|13
+89|23
+89|74
+89|94
+89|11
+85|23
+85|47
+85|62
+85|94
+85|49
+85|44
+85|78
+85|58
+85|87
+85|76
+85|38
+85|17
+85|97
+85|93
+85|51
+85|35
+85|27
+85|89
+85|11
+85|72
+85|39
+71|38
+71|43
+71|78
+71|94
+71|19
+71|27
+71|93
+71|49
+71|76
+71|35
+71|23
+71|44
+71|51
+71|62
+71|39
+71|89
+71|45
+71|98
+71|64
+71|58
+91|15
+91|45
+91|84
+91|75
+91|46
+91|93
+91|87
+91|59
+91|89
+91|76
+91|97
+91|71
+91|98
+91|24
+91|79
+91|57
+91|17
+91|19
+91|36
+49|51
+49|59
+49|23
+49|91
+49|72
+49|47
+49|13
+49|58
+49|48
+49|11
+49|94
+49|86
+49|62
+49|25
+49|74
+49|53
+49|83
+49|67
+78|72
+78|27
+78|53
+78|74
+78|58
+78|34
+78|86
+78|11
+78|91
+78|48
+78|25
+78|38
+78|47
+78|64
+78|55
+78|94
+78|59
+77|98
+77|36
+77|93
+77|35
+77|76
+77|78
+77|44
+77|79
+77|64
+77|43
+77|45
+77|39
+77|57
+77|24
+77|27
+77|89
+51|57
+51|11
+51|25
+51|86
+51|91
+51|46
+51|58
+51|13
+51|48
+51|55
+51|77
+51|74
+51|59
+51|72
+51|53
+36|23
+36|43
+36|35
+36|19
+36|49
+36|27
+36|97
+36|17
+36|51
+36|93
+36|71
+36|85
+36|76
+36|98
+76|34
+76|58
+76|44
+76|38
+76|48
+76|35
+76|87
+76|89
+76|72
+76|23
+76|47
+76|94
+76|11
+48|45
+48|24
+48|98
+48|57
+48|84
+48|36
+48|13
+48|67
+48|75
+48|83
+48|46
+48|79
+46|39
+46|89
+46|23
+46|38
+46|93
+46|97
+46|45
+46|87
+46|71
+46|98
+46|62
+34|84
+34|24
+34|91
+34|67
+34|19
+34|15
+34|77
+34|93
+34|85
+34|13
+11|75
+11|47
+11|86
+11|83
+11|98
+11|13
+11|55
+11|59
+11|71
+53|19
+53|17
+53|76
+53|77
+53|24
+53|75
+53|87
+53|71
+47|15
+47|34
+47|48
+47|86
+47|55
+47|59
+47|84
+55|77
+55|48
+55|34
+55|84
+55|83
+55|71
+35|89
+35|78
+35|34
+35|58
+35|55
+45|35
+45|17
+45|76
+45|43
+38|11
+38|34
+38|84
+64|91
+64|72
+62|51
+
+98,85,15,24,46,97,19,89,87,44,57
+64,39,94,19,49,27,85,36,23
+17,71,97,93,49,43,24,76,62,98,27,87,38,19,44,89,78
+13,71,57,79,76,24,36,67,77,74,19
+79,71,45,17,87,49,43
+53,91,75,84,15,79,46,24,36,71,98,19,85,97,93,35,44
+49,43,38,11,48,83,86,13,53,91,75
+62,94,51,72,47,48,74,86,13,53,59,75,67,15,77
+97,38,62,39,45,36,49,23,35,43,78,89,94,27,71,44,19,93,85
+94,51,83,47,91,13,67,72,86,11,59,25,84,79,57,74,34,77,48,58,15,55,53
+34,91,49,23,43,13,53,74,86,78,55,62,94
+97,17,35,87,39,78,64,49,38,51,25
+17,35,87,89,78,64,43,38,62,94,51,72,11,55,34
+45,71,93,64,35,39,89,76,98,44,24,27,49,17,78,46,38,85,97,43,23
+23,35,27,72,89,47,38,43,44
+77,57,46,36,98,19,85,97,35,44,39,64,27
+34,83,47,84,11,59,53,67,48,86,38,91,23,62,94,15,13,58,75,72,55,51,74
+79,98,44,78,87,97,24,15,17,71,36,77,67,89,46
+87,39,49,43,94,58,72,11,47,48,86
+15,86,83,58,72,25,91,84,53,51,55,47,62,13,23,38,11,59,94,48,74
+53,74,98,57,86,46,13,19,59,48,75,85,83,34,71
+72,86,62,51,38,15,84,58,91
+87,39,79,57,71,97,19,89,44,35,67,77,24,46,78,36,84
+25,34,74,91,67,84,77,36,71
+35,87,39,62,94,51,72,34,83
+76,17,35,44,87,78,64,49,27,43,38,23,62,94,51,58,25,55,48
+75,45,67,93,39,71,15
+46,24,36,98,19,97,76,87,49,38,23
+87,94,44,89,98,71,38,17,35,78,36
+76,17,35,44,87,89,23,51,72,11,47
+43,35,46,45,19,97,24,36,89,79,93
+53,83,79,84,47,59,77,55,67,48,25,15,72,74,91,36,86
+27,87,78,44,64,98,71,77,57,35,85,39,93,19,89,46,17,76,97,79,45,24,49
+79,57,46,71,98,19,45,85,97,93,76,17,44,87,89,39,78,64,49,27,43
+44,64,49,27,23,62,94,51,58,25,11,83,74
+79,46,24,36,71,98,19,45,85,97,93,17,35,89,39,78,64,49,43
+79,46,87,45,97,44,27,39,43,19,64
+25,11,47,48,34,83,74,86,13,53,59,75,67,15,77,79,24,36,71
+13,53,79,19,45,76,35
+53,91,59,75,67,84,15,77,79,57,46,24,36,71,98,19,85,97,93,76,17,35,44
+49,48,39,51,38,27,87,55,83,23,64,62,44,78,72,94,58,43,47,34,35
+93,76,44,89,39,78,49,38,23,25,11,47,55
+98,45,97,93,76,87,89,78,23,62,94,51,58
+74,36,72,79,24,48,53,59,55
+38,51,17,94,11,49,93
+58,47,55,48,83,86,59,75,67,84,77,79,57,46,24
+71,78,97,49,76,23,94,64,45,89,93,62,51,98,17,38,39,19,85,27,43
+38,58,94,49,83,53,25,62,75,23,27
+53,91,84,15,77,79,46,24,36,98,85,97,93,76,17,35,44
+25,86,47,27,59,48,83,58,94,55,43,62,75,51,67,91,13,53,11
+19,45,85,97,93,76,17,35,44,87,89,78,64,49,27,43,38,23,62,94,51,58,72
+55,84,86,72,58,11,91,46,57,34,24,83,77
+87,39,78,49,62,94,72,74,86
+85,97,93,76,17,35,44,87,78,64,49,27,43,38,23,62,94,51,58,72,25
+36,34,67,91,59,57,77,53,97
+84,15,77,57,46,24,45,85,97,93,76,35,44,87,39,78,64
+51,62,58,97,43,85,64,87,89,44,93,27,94,25,11
+84,15,57,24,36,71,98,19,45,85,97,93,76,17,44,87,89,78,64
+36,62,76,44,38,24,93
+67,48,24,86,11,91,53,13,34,84,55
+25,74,53,84,46,15,11,55,34,71,48,75,77,47,59,24,57,83,36
+49,79,57,78,77,27,36
+24,36,98,45,85,97,93,76,35,44,87,89,78
+77,57,79,15,78,49,19
+93,78,97,85,19,44,49,27,62,24,89,23,17,43,64,36,87,45,76
+62,94,51,58,72,25,11,55,48,34,83,74,86,13,53,91,59,75,67,84,15,77,79
+34,53,72,51,83,11,86,48,67,47,77,13,59,57,75,58,46
+67,36,74,77,24,34,19,53,98,86,46,45,83,71,91,15,57,75,13,84,48,59,55
+36,93,17,44,87,89,27
+93,57,77,39,79,44,89,75,46,45,97,35,15,76,87,84,71,98,17
+62,47,79,25,51,72,74,55,94,84,53
+45,93,17,35,44,87,89,39,78,49,27,62,51,58,25
+57,64,84,24,87,46,36,76,39,85,78
+86,25,79,15,46,57,58,77,13,47,91,84,75,51,59,55,74
+89,64,58,94,43,87,44,47,93,49,51,76,11,78,17,72,97,38,25,27,39,62,23
+72,25,11,47,55,34,83,74,13,53,91,59,67,84,15,77,79,57,46,24,36
+53,75,24,71,46,86,67,45,98,84,83,91,57,36,55,19,79,77,59,48,34
+89,97,85,98,44,58,51
+86,53,91,59,75,67,15,77,79,57,46,98,85,97,93,76,17
+64,38,23,94,51,58,72,25,11,55,48,34,83,74,86,13,53,91,59
+64,38,47,34,72,94,17,25,49,58,55
+35,36,39,49,78,27,57,89,46,76,93,17,98,44,77
+64,49,39,34,51,48,62,43,78,35,58,87,25,89,27,38,11,55,44,94,83
+62,51,11,83,74,13,79
+11,27,62,67,13,83,23,72,38,58,53
+27,23,62,58,47,13,67
+93,17,35,87,39,64,49,27,43,62,94,58,25,11,47
+15,57,46,19,76,17,35,44,87,89,64
+39,74,13,38,86,11,78,53,43
+87,78,94,64,62,85,39,72,23
+85,93,78,64,43,62,94,72,11
+15,58,79,83,13,91,57,53,48
+57,24,71,19,45,97,93,76,35,44,89,64,49,43,38
+51,34,43,75,27,94,25,83,55,13,38,91,62,48,59,47,11,86,58,53,67
+71,98,19,45,85,97,93,76,17,35,44,87,89,39,78,64,49,27,38,94,51
+36,71,98,19,85,97,93,76,17,35,44,87,89,39,78,64,49,27,43,38,23,62,94
+36,71,98,19,45,97,93,44,43,38,23,62,94
+13,34,84,46,67,83,91,86,47,55,11
+67,84,75,15,46,74,48,34,11,83,71,53,36,77,86,91,57,79,98,24,13
+76,87,35,98,39,71,27,85,93,78,49,24,62,38,44,45,43,17,19,23,64
+67,25,48,13,71,36,79,77,59,53,83,11,86
+59,71,75,74,13,91,79,67,47,86,57,48,53,19,98,55,77,46,15,83,84
+48,83,86,13,84,15,79,46,36,71,98
+47,55,78,11,64,48,17,44,58,62,72,51,23,38,25,35,89,76,94,39,43,87,49
+34,83,74,86,13,53,91,59,75,67,84,15,77,79,57,46,24,36,71,19,45,85,97
+13,53,91,59,75,67,84,15,77,79,57,24,36,71,19,45,85,97,93,76,35
+17,35,44,87,89,78,64,27,43,38,23,62,51,72,25,11,47,48,34
+43,38,23,62,94,51,72,25,47,55,48,34,74,86,53,59,75,67,84
+19,76,17,35,44,87,89,39,64,49,27,23,62,58,72
+17,35,44,87,89,39,78,64,49,27,43,38,23,62,94,51,58,72,11,47,55,48,34
+86,13,67,46,75,84,83,58,91,72,11,74,77,47,55,53,15,48,25,34,59,57,24
+59,15,57,98,44,87,89
+71,76,67,36,57,79,24,91,15,98,86,59,46,77,45,97,85,53,17,19,75,84,13
+62,51,58,72,25,55,48,34,83,74,53
+77,15,49,87,46,71,24
+86,13,91,59,75,67,15,57,36,71,19,45,85,97,93,76,17
+55,48,34,53,67,84,79,98,45
+47,27,94,67,75,43,11
+85,36,27,49,94,19,43,38,93,45,89,97,71,76,44,23,64,98,87,78,62
+78,25,38,86,94,27,58,11,49,83,87,43,72,23,64,39,74,55,34,89,47,51,48
+57,24,71,19,85,97,76,17,35,87,89,78,64,49,27
+93,71,79,19,97,77,44,15,87,35,67,84,91,85,76
+64,43,94,86,49,83,53,72,23,55,58,13,27,91,74,34,62,38,48,11,78
+62,13,53,91,59,77,79
+39,78,64,27,43,38,62,94,72,25,11,47,48,34,83,74,86,13,53
+83,46,93,97,71,98,59,53,36,13,84
+79,57,55,34,15,47,74,25,11,53,58,67,86,46,91,84,13,48,75
+36,35,98,49,79,45,24,44,78,97,71,64,93,17,87,77,46
+44,89,78,64,94,72,48
+86,72,43,11,78
+19,17,98,62,39,24,43,71,49,38,64,97,36,35,93
+62,94,51,58,72,25,11,47,55,48,34,74,86,53,91,59,75,67,84,77,79
+34,79,62,72,77,25,75
+91,75,84,77,79,57,46,36,71,19,17,44,87
+36,85,75,97,19,76,13,15,84,77,24,86,45,91,53,67,59,17,71
+64,27,62,94,58,11,55,48,74,53,59
+55,48,34,83,74,13,53,91,59,24,36,71,98,19,45
+11,47,58,23,17,51,64,72,76,55,35,89,78,49,43,94,44
+62,94,58,25,47,48,83,86,13,15,77
+93,35,43,51,38,87,89,17,39,78,94,45,98,71,76,85,62
+57,46,24,36,71,98,19,85,93,76,17,44,87,89,39,78,49,27,38
+84,77,46,24,98,85,17,87,64
+83,74,13,53,59,75,67,15,79,57,46,98,45,85,97
+39,17,62,51,35,45,76,43,64,44,94,93,98,58,19,87,78
+48,74,86,13,53,91,59,67,84,15,77,79,57,46,24,36,71,98,19,45,85
+19,45,97,93,76,17,44,87,89,39,49,43,38,62,94,58,72
+23,17,46,38,24,49,87
+75,77,57,46,36,71,45,97,76,17,35,44,87,89,39
+34,83,74,86,53,91,59,75,67,84,15,77,57,46,36,71,98,19,45,85,97
+89,78,55,83,72,58,11,64,13,94,38,47,62,74,34,86,49,23,51,25,27
+53,94,79,55,57,83,58,74,77,47,25,67,13
+71,75,85,97,15,35,13,84,93
+89,93,39,11,62,58,78,97,25,27,51,94,76,72,49,35,44,64,87,47,43,23,38
+57,77,71,87,97,24,91,59,85,35,44,15,17
+24,35,97,76,19,45,93,79,46
+58,72,25,47,55,34,83,74,13,53,91,67,84,15,57,46,24
+46,24,36,71,98,19,45,85,93,76,17,35,89,39,78,64,49,27,43,38,23
+27,43,38,23,62,51,58,72,25,11,47,55,48,34,83,74,86,13,53,91,75
+23,51,72,34,83,74,13,53,84,15,77
+67,83,57,36,93,46,77,15,91,97,59,71,74,84,19
+23,49,27,64,51,86,72,39,58,87,38
+34,74,86,59,84,77,79,24,36,71,98,19,45
+91,75,67,15,77,79,46,24,36,71,98,19,85,97,76,17,35,44,87
+89,51,47,83,11,38,64,72,78,49,39,74,48,94,27,87,44,34,25,55,43,23,62
+77,98,86,19,93,15,13
+38,23,94,58,48,34,13,91,75,67,15
+71,98,45,97,93,76,17,35,89,39,78,49,43,38,23,62,51
+48,74,86,13,53,59,15,79,46,24,36,19,45
+55,58,23,47,43,48,49,13,86,38,51,78,72,94,11,34,74,62,64,83,53
+43,38,62,94,51,58,72,25,11,55,34,74,86,13,53,91,59,67,84
+51,57,74,72,55,47,86,34,91,77,83,79,59,58,11
+74,47,53,51,15,75,59,46,55
+15,57,24,36,98,19,85,97,93,76,17,35,89,39,49
+58,72,11,47,48,34,83,74,86,75,67,15,77,57,24
+38,23,62,94,51,58,72,25,11,47,55,48,34,83,74,86,13,53,91,59,75,67,84
+89,39,78,49,43,38,94,51,72,25,11,47,83,86,13
+55,34,86,13,53,91,59,75,67,84,15,77,79,57,24,71,98,19,45
+74,86,53,91,84,19,76
+71,98,19,45,85,97,17,39,64,27,43,62,51
+75,67,84,77,57,46,36,71,19,45,93,17,44,87,39
+11,55,34,74,13,53,91,59,84,77,57,71,98
+35,44,87,89,39,78,27,38,23,62,94,58,72,25,11,55,83
+94,51,72,55,34,86,13,53,91,67,15,77,79
+91,75,67,84,15,77,79,57,46,36,45,85,97,76,17,35,87
+79,57,46,24,71,98,45,85,97,76,17,44,87,89,39,64,49,27,43
+27,89,39,34,62,83,47,25,49,23,51,78,48,58,74,44,94,72,38
+85,97,93,76,17,35,44,87,23,58,11
+64,49,27,23,62,94,51,58,72,47,55,34,83,74,86,13,53,91,59
+78,64,49,27,43,38,23,62,94,51,58,72,25,47,55,48,34,83,74,86,13
+13,15,85,91,67,34,71,53,79,45,46,98,36,77,24,48,57,86,74,19,59,83,84
+49,27,23,51,58,55,34,74,86,53,75
+59,15,77,57,46,24,36,71,98,19,45,85,97,93,76,17,44,87,89
+23,89,76,39,36,38,43,98,85,44,46,17,35,93,71
+94,51,58,72,25,11,47,55,48,34,83,74,13,53,91,59,75,67,84,15,77,79,57
+55,64,58,89,39,86,23,72,38,13,48,25,47,34,27
+64,23,49,17,78,89,27,87,58,39,93,35,97,98,43,85,19,44,94
+87,85,19,72,58,38,64,17,43,49,93,39,76,23,97,51,78,94,44,62,35,27,89
+25,55,83,86,13,53,91,75,67,15,79,57,71
+49,43,23,62,94,58,72,25,47,55,48,83,75
+35,91,79,15,71,46,59,19,75,93,45,67,76,77,85,53,97,36,17,57,24,84,13
diff --git a/5.pl b/5.pl
new file mode 100644
index 0000000..1c8db1a
--- /dev/null
+++ b/5.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+
+$ordering_rules = [];
+$updates = [];
+open($fh, "5-input.txt") or die ;
+while (<$fh>) {
+ chomp;
+ if (m/(\d+)\|(\d+)/) { push @$ordering_rules, [$1, $2]; }
+ elsif (m/^\d+,\d+/) { push @$updates, [split(/,/, $_)]; }
+}
+close($fh);
+
+$sum_no_order = 0;
+$sum_order = 0;
+
+for($x=0; $x<scalar @$updates; $x++) {
+ if (in_order($ordering_rules, $updates->[$x])) {
+ $sum_no_order=$sum_no_order+@{$updates->[$x]}[scalar @{$updates->[$x]} / 2];
+ } else {
+ @{$updates->[$x]} = sort {
+ foreach (@$ordering_rules) {
+ if ($_->[0] == $a and $_->[1] == $b) { return -1; }
+ elsif ($_->[1] == $a and $_->[0] == $b) { return 1; }
+ }
+ return 0;
+ } @{$updates->[$x]};
+ $sum_order=$sum_order+@{$updates->[$x]}[scalar @{$updates->[$x]} / 2];
+ }
+}
+
+print "puzzle 1: $sum_no_order\n";
+print "puzzle 2: $sum_order\n";
+
+sub in_order {
+ my ($i, $j) = @_;
+ for(my $k=0; $k < scalar @$j; $k++) { return 0 if not in_order_idx($i, $j, $k); }
+ return 1;
+}
+
+sub in_order_idx {
+ my ($i, $j, $k) = @_;
+ for (my $x=$k+1; $x<scalar @$j; $x++) {
+ for(my $z=0; $z<scalar @$i; $z++) {
+ return 0 if @{$i->[$z]}[0] eq $j->[$x] and @{$i->[$z]}[1] eq $j->[$k];
+ }
+ }
+
+ return 1;
+}