advent-of-code-2023

My solutions to AoC 2023
git clone git://git.entf.net/advent-of-code-2023
Log | Files | Refs

commit e512d75fa75e3917eff343c99be4cec0b601f20f
parent e7c30ef9ccca656e72497a61ace16972a563576d
Author: Lukas Henkel <lh@entf.net>
Date:   Mon,  4 Dec 2023 06:14:56 +0100

Day 4 task 1

Diffstat:
Ainput/4.txt | 219+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/day-4.lisp | 42++++++++++++++++++++++++++++++++++++++++++
At/day-4.lisp | 13+++++++++++++
3 files changed, 274 insertions(+), 0 deletions(-)

diff --git a/input/4.txt b/input/4.txt @@ -0,0 +1,219 @@ +Card 1: 99 71 95 70 36 79 78 84 31 10 | 5 45 54 83 3 38 89 35 80 49 76 15 63 20 21 94 65 55 44 4 75 56 85 92 90 +Card 2: 73 44 51 27 89 2 81 32 42 93 | 93 81 29 48 51 1 36 92 23 80 44 85 73 13 89 33 96 2 12 32 50 77 27 42 61 +Card 3: 15 80 72 53 26 29 57 81 95 21 | 81 27 26 50 80 74 96 95 65 25 12 44 8 56 99 72 29 23 14 15 47 53 73 21 57 +Card 4: 61 39 42 50 51 19 83 8 6 59 | 39 51 50 34 4 6 96 25 79 19 8 29 61 42 37 38 90 83 15 59 10 71 7 94 48 +Card 5: 83 63 23 45 72 51 70 4 28 47 | 31 73 38 63 83 23 59 86 47 40 28 33 69 85 34 45 50 72 51 70 9 79 82 4 37 +Card 6: 7 85 75 80 88 92 63 22 72 42 | 63 40 54 22 92 29 75 89 72 85 33 88 18 30 7 42 99 1 12 41 94 76 35 80 14 +Card 7: 64 72 66 7 15 80 99 12 49 29 | 4 42 85 99 74 66 40 44 80 48 71 72 73 35 86 43 7 49 5 15 78 26 64 29 12 +Card 8: 46 39 26 90 37 74 56 19 68 38 | 45 83 90 39 93 56 22 27 69 46 30 4 81 65 37 9 6 26 77 24 92 73 88 19 42 +Card 9: 92 80 16 53 68 79 52 67 46 99 | 99 94 52 90 5 41 46 79 12 73 35 20 77 16 80 60 65 92 43 82 23 67 68 7 53 +Card 10: 73 68 54 50 3 41 26 69 86 20 | 41 93 36 94 72 50 3 17 91 66 73 67 7 35 48 42 54 52 20 74 2 11 86 75 68 +Card 11: 13 7 2 74 99 21 19 57 98 53 | 70 36 10 69 53 57 80 48 19 45 83 7 98 54 13 21 31 99 74 3 44 23 2 85 29 +Card 12: 71 12 22 93 7 74 25 82 36 58 | 68 97 52 1 96 54 9 13 77 4 44 56 47 65 38 58 98 11 89 85 25 70 26 35 45 +Card 13: 32 35 30 83 70 11 81 84 41 85 | 1 30 52 84 32 41 85 83 98 97 58 91 57 21 6 23 28 93 96 35 81 33 46 11 70 +Card 14: 1 89 42 5 51 2 41 46 10 48 | 91 80 3 47 5 48 92 33 36 60 40 55 7 90 93 66 68 38 64 72 4 73 97 42 83 +Card 15: 30 2 70 48 46 52 33 94 22 35 | 20 22 23 16 46 30 51 60 4 41 48 52 35 13 72 37 40 42 17 70 85 94 2 26 33 +Card 16: 27 7 54 33 62 42 86 29 60 31 | 95 19 61 52 25 76 3 22 62 60 90 32 88 70 87 14 71 73 77 16 85 82 89 74 27 +Card 17: 44 66 75 77 53 63 41 20 39 43 | 97 90 25 20 27 52 74 58 67 73 84 40 69 55 29 32 35 51 86 15 56 43 13 48 1 +Card 18: 65 55 81 16 17 66 9 50 79 24 | 81 94 88 92 76 64 74 98 17 41 46 49 99 96 5 65 66 78 97 16 93 69 79 84 9 +Card 19: 34 48 51 4 33 64 10 76 96 83 | 90 21 32 61 85 45 91 58 67 86 93 41 54 15 94 39 3 70 97 99 31 75 40 19 43 +Card 20: 94 45 12 48 65 29 63 74 18 51 | 53 38 79 57 80 45 2 18 47 77 16 71 95 76 91 1 29 23 33 88 74 39 44 42 68 +Card 21: 20 8 57 48 95 92 69 16 27 79 | 33 2 89 48 51 28 84 64 54 9 59 80 87 34 17 24 45 71 29 20 66 94 96 4 21 +Card 22: 46 90 22 95 52 73 6 98 94 80 | 38 89 23 13 21 85 81 17 26 48 67 93 2 9 62 18 97 7 76 33 40 57 37 61 92 +Card 23: 37 83 50 69 31 59 98 48 12 82 | 6 81 53 87 67 39 41 29 51 47 70 38 73 72 8 23 25 63 37 98 30 14 45 54 77 +Card 24: 17 46 21 79 87 32 78 70 19 69 | 1 55 6 47 50 37 94 74 99 42 40 70 52 68 64 88 10 22 66 4 3 81 24 38 84 +Card 25: 28 35 32 81 51 46 58 4 74 88 | 21 54 22 6 92 95 3 37 5 47 17 76 33 34 13 16 79 75 50 23 40 41 20 78 29 +Card 26: 51 44 56 78 57 88 18 36 68 39 | 31 27 87 40 13 29 22 38 43 37 69 32 75 91 26 82 64 20 55 15 88 19 79 8 16 +Card 27: 16 76 77 44 37 98 85 54 25 27 | 92 54 68 77 10 8 25 5 73 36 20 44 96 91 16 85 76 60 27 29 2 31 71 37 98 +Card 28: 90 78 37 68 12 32 99 86 35 36 | 60 77 9 12 91 20 58 42 85 94 17 63 4 73 30 82 90 53 37 26 31 51 84 1 18 +Card 29: 1 54 43 4 42 71 80 19 46 98 | 23 31 29 94 4 9 64 27 60 54 98 52 45 68 19 42 1 91 67 88 17 80 43 46 71 +Card 30: 6 36 13 39 31 88 27 2 59 51 | 64 32 66 59 2 25 36 22 46 6 31 37 85 13 78 45 51 24 27 21 88 28 92 39 5 +Card 31: 92 62 69 20 34 89 49 27 29 17 | 56 21 2 29 39 17 48 9 92 44 42 20 57 68 7 84 86 47 26 98 49 96 74 13 32 +Card 32: 21 24 37 65 36 69 29 47 63 61 | 17 4 71 34 28 75 77 60 95 6 43 89 1 42 41 53 54 13 64 52 84 92 32 3 18 +Card 33: 91 64 15 16 54 2 85 82 24 27 | 82 20 67 16 85 24 68 43 27 2 91 31 40 18 15 99 87 19 8 94 84 49 64 34 54 +Card 34: 76 99 93 72 60 21 67 20 82 65 | 72 76 98 20 53 60 37 64 99 14 29 2 84 92 94 67 82 75 21 93 26 80 65 41 51 +Card 35: 60 74 84 32 64 25 34 87 31 42 | 29 86 45 69 37 71 32 80 25 64 42 13 31 24 55 58 73 87 20 8 60 74 67 34 84 +Card 36: 84 26 18 77 72 22 32 17 67 45 | 14 28 84 33 25 77 32 86 55 70 17 23 41 69 53 26 95 1 98 47 73 72 12 76 18 +Card 37: 57 75 65 98 48 37 46 38 2 94 | 18 79 37 10 3 2 62 95 20 94 26 44 38 71 65 51 84 74 98 29 15 64 75 57 59 +Card 38: 3 93 29 48 20 74 42 75 23 30 | 17 23 46 95 29 91 3 4 63 30 57 48 81 97 47 74 37 75 8 93 43 64 20 68 42 +Card 39: 13 20 83 35 91 51 74 7 8 39 | 67 35 27 36 20 54 64 91 74 60 93 32 83 47 39 42 8 48 76 10 90 62 7 3 13 +Card 40: 54 72 41 61 65 77 3 75 91 80 | 21 45 58 54 62 84 13 71 12 61 75 92 41 43 57 80 59 76 47 40 42 10 23 36 56 +Card 41: 23 67 15 48 7 8 35 68 21 64 | 46 55 59 5 65 96 73 52 39 78 7 35 21 92 41 64 95 23 48 31 50 69 10 99 30 +Card 42: 5 39 68 26 63 40 14 48 65 23 | 6 22 48 63 93 65 37 68 27 99 3 15 11 33 97 46 26 59 34 53 70 76 72 62 23 +Card 43: 29 55 31 81 65 53 70 57 77 6 | 20 4 12 54 37 21 73 71 1 14 8 3 43 97 61 99 27 9 98 18 64 96 24 13 89 +Card 44: 83 55 94 72 40 35 41 58 7 45 | 10 18 75 45 93 27 42 87 1 59 54 50 28 3 40 84 85 73 74 49 17 48 6 88 64 +Card 45: 13 53 30 61 77 90 98 55 58 41 | 39 37 61 18 96 59 51 12 60 17 63 36 33 2 98 19 90 88 79 16 72 56 11 76 89 +Card 46: 86 58 95 57 88 43 87 60 51 89 | 55 87 34 78 37 73 24 71 4 19 1 13 82 91 21 46 68 67 36 22 41 26 64 80 23 +Card 47: 88 71 37 47 5 76 78 95 79 28 | 12 29 10 20 65 6 56 63 97 38 94 96 3 7 51 39 70 86 46 68 17 58 64 89 24 +Card 48: 82 77 16 24 42 3 8 68 64 48 | 50 99 88 22 89 78 85 53 19 66 60 64 31 52 75 69 27 4 47 32 41 55 21 96 80 +Card 49: 20 55 73 3 41 87 35 97 29 60 | 94 63 56 46 85 25 96 83 89 45 18 8 74 81 27 51 95 44 34 99 22 77 38 69 5 +Card 50: 42 84 27 79 14 59 91 94 87 30 | 46 90 99 45 79 68 13 41 39 84 76 87 26 33 91 37 59 42 14 65 32 30 27 94 9 +Card 51: 52 1 20 6 70 54 66 29 88 31 | 87 1 81 76 52 11 88 31 91 72 70 42 2 86 66 6 27 78 54 47 29 46 99 20 69 +Card 52: 67 73 66 1 54 15 33 50 30 27 | 77 30 27 94 1 60 54 91 5 33 58 67 84 7 78 24 50 15 73 75 71 93 66 2 42 +Card 53: 77 72 59 45 61 35 63 56 23 96 | 35 99 8 77 46 72 97 12 28 10 87 30 43 59 56 96 1 63 31 23 70 32 61 45 62 +Card 54: 99 90 44 72 42 78 94 37 33 22 | 99 69 42 9 44 84 81 94 14 5 13 95 34 26 22 33 66 55 90 78 10 98 63 72 37 +Card 55: 35 21 13 8 85 29 20 25 27 64 | 11 30 69 50 36 43 22 85 82 9 8 25 32 20 13 7 49 61 57 93 29 35 27 64 21 +Card 56: 57 36 51 13 35 9 16 1 63 95 | 35 21 36 65 85 13 18 1 9 29 63 70 51 16 69 43 86 57 53 52 66 84 41 23 95 +Card 57: 19 85 67 8 54 56 11 40 97 39 | 81 54 29 36 57 13 80 31 40 27 97 47 33 78 1 86 63 76 6 22 96 62 98 95 71 +Card 58: 35 62 19 46 95 73 99 63 44 78 | 87 95 77 73 72 18 60 69 78 54 38 39 43 8 48 88 41 71 61 36 89 83 99 52 62 +Card 59: 97 20 41 25 22 26 93 33 85 63 | 26 51 80 42 66 63 10 24 81 22 5 31 30 58 27 19 46 16 33 61 54 50 85 39 25 +Card 60: 65 50 27 43 20 75 45 25 5 56 | 45 9 91 55 98 62 43 74 75 20 27 42 52 22 29 93 56 65 50 8 14 3 36 25 5 +Card 61: 52 66 67 33 27 93 7 96 77 73 | 53 27 69 66 52 47 62 18 92 6 85 33 94 75 19 67 91 73 7 50 93 77 81 96 65 +Card 62: 47 12 70 85 81 23 83 42 39 25 | 88 39 12 40 38 5 21 41 80 81 49 62 46 94 14 82 51 19 47 93 23 74 48 42 34 +Card 63: 85 53 50 20 89 13 84 40 26 88 | 67 23 49 44 4 31 91 94 81 92 52 97 53 24 40 26 87 3 15 89 30 20 46 57 28 +Card 64: 68 21 67 80 58 11 20 98 94 64 | 4 76 27 75 23 94 93 37 17 66 12 10 9 2 33 52 41 81 15 18 99 60 5 42 59 +Card 65: 85 11 79 22 95 13 64 46 52 66 | 48 65 55 63 85 35 26 39 19 37 8 53 30 98 95 22 69 47 54 66 99 79 25 46 91 +Card 66: 70 50 51 60 92 24 95 43 61 96 | 51 48 24 52 33 46 28 79 61 81 70 84 30 92 23 96 11 95 34 10 53 26 75 86 64 +Card 67: 24 49 73 72 51 35 27 57 16 55 | 35 49 95 25 74 89 11 51 78 6 28 60 86 13 14 23 15 48 37 52 16 61 20 5 45 +Card 68: 16 54 52 48 1 70 86 50 15 9 | 59 85 50 1 8 29 37 67 70 72 2 47 30 48 15 62 27 75 88 84 55 66 51 73 80 +Card 69: 4 34 79 38 5 94 96 89 33 92 | 77 45 98 86 88 68 22 21 76 35 69 84 58 46 95 38 73 87 9 94 15 85 61 29 11 +Card 70: 96 19 50 33 80 84 75 25 93 74 | 3 81 39 52 32 54 4 47 8 12 77 6 24 78 57 71 99 98 17 60 86 87 14 2 95 +Card 71: 44 13 33 51 90 18 41 3 38 46 | 84 99 74 81 60 89 92 93 20 57 91 97 38 85 33 44 32 16 78 47 31 26 65 36 10 +Card 72: 40 1 12 22 50 38 43 21 27 7 | 47 99 24 73 62 57 38 67 13 33 10 68 12 82 89 61 88 51 15 54 28 92 77 65 76 +Card 73: 46 13 4 77 88 43 27 20 16 23 | 59 45 96 62 50 56 93 75 43 97 14 99 52 9 25 91 92 34 1 81 49 84 33 35 38 +Card 74: 62 3 52 1 69 72 73 79 64 28 | 99 94 23 59 58 65 90 76 96 95 9 93 50 56 38 61 80 84 31 46 41 82 54 85 43 +Card 75: 99 21 75 69 43 59 61 93 22 76 | 39 66 34 76 74 49 96 68 99 84 59 21 61 87 69 73 43 22 18 93 88 83 75 13 58 +Card 76: 97 60 56 9 71 42 82 51 68 29 | 33 71 56 66 74 73 9 77 21 57 47 61 92 68 60 17 32 22 29 82 55 1 37 65 95 +Card 77: 74 99 79 82 22 62 81 23 20 48 | 97 58 75 28 48 5 83 99 15 23 62 26 81 74 82 29 43 70 96 73 22 25 79 20 11 +Card 78: 87 27 89 26 18 44 5 29 80 71 | 97 88 48 23 36 26 61 74 94 72 79 95 78 96 7 30 28 57 91 86 47 65 3 34 31 +Card 79: 73 14 36 3 13 30 56 71 80 26 | 42 89 57 98 34 26 31 94 73 71 3 35 36 13 24 68 14 2 85 43 91 30 79 56 80 +Card 80: 31 66 25 43 22 28 34 93 84 71 | 88 11 33 17 27 22 12 18 92 49 82 26 3 20 24 31 93 46 67 89 85 76 98 60 81 +Card 81: 19 53 29 87 83 73 3 23 77 46 | 1 64 17 84 60 61 36 42 80 18 39 14 81 88 11 56 73 93 44 24 51 28 32 16 35 +Card 82: 88 56 52 30 81 58 16 29 33 7 | 68 52 46 19 88 29 50 64 16 48 56 59 81 7 74 30 15 94 42 32 65 4 14 33 58 +Card 83: 35 68 10 89 13 54 73 99 57 37 | 5 43 98 72 18 97 37 96 44 45 49 46 74 91 57 89 34 80 84 39 21 90 54 50 2 +Card 84: 55 20 37 59 73 3 54 27 9 46 | 38 31 12 48 43 95 65 8 24 68 85 92 83 96 57 30 40 89 44 84 94 93 87 6 26 +Card 85: 24 89 68 66 53 13 32 21 35 37 | 63 21 9 13 65 32 68 3 24 35 80 18 8 66 40 1 95 37 89 71 41 60 91 79 67 +Card 86: 14 26 59 87 89 2 43 6 58 82 | 50 82 26 32 66 98 13 77 81 59 52 24 58 6 89 95 8 47 3 83 87 73 43 2 14 +Card 87: 28 64 26 16 98 50 9 90 22 14 | 22 90 80 9 69 42 78 16 14 3 85 89 2 88 59 53 28 65 38 98 97 54 92 51 40 +Card 88: 74 15 77 76 57 41 89 48 69 99 | 54 15 9 38 22 21 65 59 79 25 57 75 70 85 93 81 41 29 92 77 46 72 31 90 86 +Card 89: 16 13 22 17 65 72 12 33 96 6 | 2 25 67 5 1 98 9 50 56 11 92 99 66 7 89 70 49 77 59 87 60 76 96 85 37 +Card 90: 60 26 2 36 25 79 6 57 68 94 | 68 39 3 22 1 59 87 20 93 21 80 36 83 10 44 50 28 26 41 25 34 90 6 15 64 +Card 91: 59 70 54 71 61 73 87 34 33 76 | 24 48 27 47 35 96 56 69 73 59 54 76 98 68 71 61 17 41 46 31 14 19 45 75 78 +Card 92: 17 7 4 96 81 55 64 13 73 95 | 3 13 95 40 29 94 58 73 17 67 77 2 42 83 59 11 49 78 47 60 98 64 26 10 5 +Card 93: 41 96 8 12 10 94 68 64 37 77 | 45 88 24 74 19 56 34 70 69 10 41 26 6 1 66 80 5 90 73 28 48 75 67 22 87 +Card 94: 12 61 83 85 74 14 89 95 93 25 | 6 44 62 84 17 94 23 72 16 39 30 76 83 87 8 98 1 21 78 63 13 3 57 35 52 +Card 95: 60 26 74 15 7 51 57 68 33 39 | 91 60 6 30 96 74 8 37 84 73 23 58 65 32 77 34 25 24 47 61 62 2 87 56 35 +Card 96: 81 41 18 12 34 82 7 4 89 24 | 94 39 83 57 60 69 98 29 52 76 74 63 13 11 50 92 30 68 22 44 77 99 38 72 67 +Card 97: 82 81 60 11 91 48 77 38 49 17 | 21 90 36 14 57 61 72 68 75 80 5 29 19 86 37 47 45 53 32 54 10 35 52 9 31 +Card 98: 21 57 80 13 20 11 72 76 85 93 | 52 7 72 71 92 85 2 96 39 62 84 45 30 17 95 57 34 11 28 46 21 99 29 80 77 +Card 99: 7 37 26 23 99 74 38 40 90 2 | 14 68 33 40 21 29 7 39 28 38 37 80 26 5 75 91 88 44 93 74 2 23 34 99 90 +Card 100: 49 2 30 5 88 53 18 28 13 9 | 52 24 11 61 96 94 13 55 53 44 5 72 41 66 77 56 36 90 38 20 45 21 54 42 39 +Card 101: 8 67 46 27 64 65 58 41 99 45 | 41 35 81 34 93 51 39 88 98 9 45 67 84 26 44 91 22 46 7 20 8 36 27 61 83 +Card 102: 67 4 42 94 16 69 27 2 65 35 | 5 94 58 16 61 86 47 74 76 88 35 91 37 8 79 64 17 33 7 97 22 55 38 98 14 +Card 103: 35 71 33 16 10 14 87 45 55 73 | 73 38 33 16 88 44 35 22 14 61 64 45 8 75 53 62 71 55 85 87 10 4 28 79 23 +Card 104: 45 59 22 17 46 25 23 56 94 16 | 14 94 45 17 98 35 22 46 48 16 56 25 24 93 74 31 12 59 42 95 87 76 32 23 81 +Card 105: 57 42 86 2 12 19 66 31 38 92 | 86 71 92 3 70 15 35 43 19 57 38 53 73 66 16 42 31 37 60 75 2 18 34 21 12 +Card 106: 84 99 11 56 54 46 36 75 80 1 | 53 51 81 70 2 73 46 62 79 80 34 91 96 99 90 55 56 50 26 7 86 74 3 43 68 +Card 107: 65 18 86 33 42 59 2 96 64 14 | 73 56 18 59 53 88 11 86 70 82 94 79 64 14 5 33 42 36 96 65 51 2 47 25 72 +Card 108: 52 28 55 29 74 89 91 36 18 82 | 66 91 18 90 52 45 2 28 47 19 32 29 89 6 79 25 55 82 36 3 51 13 75 43 44 +Card 109: 10 49 37 32 38 53 20 2 67 93 | 80 76 31 58 3 11 7 20 77 49 17 52 78 37 70 97 6 46 18 85 19 91 35 8 43 +Card 110: 28 57 67 95 96 72 97 21 38 46 | 94 70 27 1 32 57 72 95 61 75 22 12 52 30 83 10 33 78 24 28 66 93 16 23 79 +Card 111: 77 49 11 27 44 82 51 79 58 39 | 42 90 56 71 25 94 27 23 92 96 43 24 80 29 63 8 11 58 30 64 1 84 91 44 9 +Card 112: 71 77 10 64 69 31 2 59 57 7 | 4 66 20 30 89 99 1 86 21 61 41 93 6 15 40 18 92 73 25 56 48 46 44 84 94 +Card 113: 98 30 10 20 88 51 15 5 23 40 | 89 11 27 53 57 99 93 77 54 2 88 17 72 42 49 90 19 39 86 92 76 55 87 25 1 +Card 114: 80 29 60 53 19 36 12 31 22 6 | 37 32 50 44 73 78 41 13 46 98 38 93 86 83 23 20 82 48 70 33 5 71 66 97 65 +Card 115: 14 78 64 49 38 22 26 46 67 99 | 95 66 32 39 7 15 20 94 17 65 33 21 99 85 74 76 27 82 43 19 49 35 47 88 97 +Card 116: 99 88 19 41 44 31 20 65 4 15 | 26 80 72 18 91 50 9 40 30 44 71 24 92 57 66 36 22 20 85 58 52 48 37 15 2 +Card 117: 55 12 5 54 83 91 51 43 48 62 | 73 45 87 78 72 23 40 1 2 49 71 79 36 8 18 21 86 97 89 27 60 31 28 41 6 +Card 118: 68 94 29 44 59 32 63 42 12 15 | 20 46 76 75 98 14 62 7 28 4 99 65 6 26 95 89 60 83 19 78 96 37 59 91 53 +Card 119: 64 23 62 48 84 46 82 10 53 79 | 60 20 58 33 38 97 12 85 74 36 24 99 9 81 56 15 71 69 1 19 95 68 7 26 54 +Card 120: 74 59 32 56 49 20 95 21 35 4 | 49 42 13 44 69 33 14 99 66 19 27 9 89 60 65 90 74 41 82 58 92 17 16 1 6 +Card 121: 87 83 4 51 17 12 71 73 9 31 | 83 1 17 94 4 56 23 10 31 12 14 39 26 61 70 87 9 71 51 67 73 38 90 78 59 +Card 122: 90 20 15 22 54 89 8 33 81 36 | 46 60 4 92 35 1 28 61 43 10 8 36 50 34 72 65 63 82 49 15 54 44 45 13 58 +Card 123: 82 21 25 95 41 64 62 31 63 27 | 5 34 25 36 83 1 53 2 19 65 24 70 63 60 41 31 92 11 52 43 96 64 42 4 38 +Card 124: 68 54 67 15 80 34 26 93 10 3 | 35 66 68 54 10 31 40 93 4 90 67 2 57 34 39 80 26 72 41 81 46 15 16 3 87 +Card 125: 35 61 2 95 30 55 8 13 80 78 | 82 14 58 66 65 1 90 76 44 80 10 84 96 72 88 56 27 9 3 22 16 95 86 83 93 +Card 126: 59 2 72 67 52 17 93 57 43 83 | 2 97 23 93 56 45 57 72 52 67 59 77 43 84 95 90 68 99 81 5 17 1 15 47 22 +Card 127: 46 3 47 78 98 52 62 73 70 88 | 82 16 66 93 38 62 70 81 2 60 35 34 52 84 32 79 50 4 61 1 42 25 54 24 97 +Card 128: 17 9 68 52 36 54 16 98 39 61 | 33 42 59 6 57 73 76 48 15 86 36 61 99 47 68 3 62 41 26 39 96 22 7 54 85 +Card 129: 8 24 69 14 54 11 49 72 38 94 | 61 44 67 37 18 70 64 19 29 89 34 97 75 33 74 10 12 28 98 92 99 73 43 41 51 +Card 130: 59 60 29 90 27 53 18 83 70 57 | 97 34 8 1 45 89 85 24 19 61 68 62 95 91 52 82 35 40 58 2 23 77 55 48 93 +Card 131: 90 50 34 81 52 37 9 86 3 47 | 39 33 97 10 72 46 5 96 77 86 16 19 11 64 94 75 9 45 58 6 35 15 14 32 28 +Card 132: 35 54 62 69 75 30 40 74 43 44 | 11 32 66 99 64 16 34 13 62 79 41 17 46 43 82 72 14 52 92 48 30 98 88 37 27 +Card 133: 21 7 47 91 75 86 73 19 49 54 | 88 62 45 70 89 57 99 41 4 9 27 15 77 83 67 28 10 69 52 68 66 34 30 38 74 +Card 134: 84 31 7 87 6 38 46 27 26 66 | 65 17 47 71 16 33 15 49 20 43 2 51 92 9 21 63 1 91 54 94 18 98 23 48 97 +Card 135: 91 63 53 17 6 66 71 29 47 96 | 67 69 77 83 31 79 92 93 20 87 45 10 22 30 5 75 56 24 3 44 82 27 8 19 61 +Card 136: 7 57 22 98 3 36 93 13 27 80 | 7 96 55 93 59 31 89 58 52 57 37 29 54 17 62 46 25 14 92 6 27 50 39 76 26 +Card 137: 82 50 55 30 12 78 69 85 29 79 | 55 97 1 42 41 28 25 29 30 17 84 69 52 78 79 46 82 72 86 40 2 50 12 85 70 +Card 138: 67 17 38 39 16 69 18 45 82 20 | 68 24 28 6 18 69 77 38 16 10 73 26 85 82 53 3 30 17 39 45 42 20 84 36 2 +Card 139: 46 90 6 73 4 83 69 47 59 89 | 69 61 89 8 53 86 54 79 59 46 25 2 45 90 84 5 30 28 6 52 4 47 73 12 83 +Card 140: 55 29 59 71 40 95 56 50 64 98 | 74 49 63 20 22 66 35 11 29 51 56 50 98 64 55 95 59 83 40 90 47 71 32 41 57 +Card 141: 52 25 71 49 39 63 84 86 43 1 | 34 27 39 53 17 75 6 99 84 38 82 91 25 96 37 29 54 59 7 56 36 89 41 24 11 +Card 142: 80 38 65 46 8 52 7 97 21 81 | 77 26 81 50 3 79 65 40 75 8 43 36 10 39 52 7 94 85 46 20 91 19 69 38 80 +Card 143: 47 76 1 79 38 15 74 96 44 51 | 86 66 83 60 21 70 48 13 16 56 35 45 47 25 84 24 85 99 1 96 51 23 10 20 53 +Card 144: 82 10 89 17 13 95 90 26 39 80 | 70 25 24 12 7 93 43 55 27 66 42 62 5 79 86 95 75 53 3 50 60 8 65 29 18 +Card 145: 68 19 72 53 15 46 87 23 93 29 | 28 18 60 74 10 26 6 69 86 90 21 76 27 58 25 42 80 98 57 84 13 4 61 45 55 +Card 146: 88 19 68 96 93 54 17 75 47 29 | 66 72 47 93 64 12 54 10 55 3 62 45 24 26 69 53 71 30 78 92 86 34 85 70 99 +Card 147: 92 95 68 70 56 79 52 86 94 74 | 65 45 30 43 60 76 3 4 84 57 15 38 11 58 17 27 69 98 31 49 91 85 68 7 2 +Card 148: 87 75 20 44 51 59 69 29 98 84 | 66 92 60 74 80 21 96 25 73 90 89 38 11 94 79 93 61 40 82 72 34 50 78 1 39 +Card 149: 79 17 94 63 29 9 36 85 32 90 | 5 27 92 10 87 75 95 57 78 8 61 40 56 64 67 26 60 31 3 42 74 6 84 50 45 +Card 150: 36 35 60 78 34 94 89 38 51 2 | 59 71 24 46 27 53 62 5 65 50 33 4 93 97 58 76 72 14 1 63 96 74 29 87 98 +Card 151: 76 78 48 25 89 81 24 54 62 46 | 65 24 25 31 89 46 42 80 76 59 54 47 81 43 48 78 92 35 99 29 62 15 2 95 51 +Card 152: 80 40 54 29 18 38 28 6 71 88 | 10 77 76 45 42 37 72 56 24 79 4 84 74 65 12 89 5 57 44 33 19 61 9 16 21 +Card 153: 27 98 50 68 10 81 9 1 56 65 | 6 21 2 39 76 1 71 7 81 50 98 93 48 66 85 9 11 65 43 68 56 12 25 55 27 +Card 154: 85 73 71 36 74 53 4 16 21 77 | 71 83 77 44 81 50 4 38 78 73 27 15 86 74 85 36 33 75 52 16 59 76 19 21 53 +Card 155: 51 2 84 71 11 20 34 62 96 30 | 19 72 62 2 1 77 27 6 30 84 55 11 75 23 63 28 20 7 51 36 96 34 91 71 95 +Card 156: 82 17 14 3 10 47 94 46 8 81 | 13 63 17 54 81 14 3 79 47 99 11 7 46 32 58 8 74 65 10 68 48 15 82 94 84 +Card 157: 60 29 13 49 55 19 68 63 83 54 | 84 56 83 14 33 54 38 63 29 74 19 11 51 49 32 53 55 80 12 68 79 13 69 30 60 +Card 158: 13 2 78 61 55 16 10 68 49 15 | 14 33 49 80 15 13 68 91 60 69 61 99 8 10 12 82 94 55 87 77 37 32 4 16 85 +Card 159: 46 7 54 82 9 98 38 88 71 6 | 97 30 87 73 32 79 52 65 51 44 94 1 91 89 20 50 96 69 34 27 80 5 2 18 56 +Card 160: 69 30 71 29 27 83 51 16 75 54 | 15 73 3 58 52 83 71 19 57 46 91 74 8 89 27 69 40 56 44 31 24 35 21 82 2 +Card 161: 44 88 72 86 20 49 18 43 5 70 | 20 25 30 59 85 78 90 70 96 24 74 34 49 53 46 28 86 80 44 72 5 37 13 55 36 +Card 162: 52 23 46 90 73 70 31 5 89 1 | 90 54 69 47 92 33 70 62 51 75 46 97 81 5 52 58 7 64 87 18 73 23 68 36 89 +Card 163: 71 64 75 3 49 55 62 16 11 76 | 96 67 29 92 82 35 70 28 20 39 43 5 59 7 91 90 62 26 33 1 52 15 2 46 80 +Card 164: 94 25 75 78 71 5 26 10 93 35 | 2 81 24 30 82 85 50 58 78 23 79 22 67 34 40 62 42 10 38 25 31 61 19 36 41 +Card 165: 2 4 95 36 78 70 49 6 61 14 | 38 28 87 33 24 4 30 92 70 83 93 79 2 19 21 36 45 42 49 54 14 57 53 50 88 +Card 166: 63 77 19 36 40 67 65 60 38 57 | 55 11 67 24 46 36 52 48 33 79 37 19 87 94 49 26 51 3 62 75 6 47 60 13 77 +Card 167: 17 31 42 76 78 98 51 4 24 47 | 20 34 21 2 73 37 95 44 81 74 46 69 33 63 35 87 91 22 54 80 58 53 75 71 72 +Card 168: 35 29 4 38 2 84 11 51 82 95 | 54 91 22 49 47 5 99 3 92 76 97 81 67 80 17 98 19 31 41 12 61 78 23 26 39 +Card 169: 31 9 40 97 67 8 95 55 98 39 | 54 87 51 9 43 65 61 29 89 92 90 97 10 45 78 27 71 38 75 96 60 57 16 3 30 +Card 170: 57 13 36 35 34 9 47 43 69 77 | 13 26 25 48 39 56 53 12 22 1 23 46 54 30 4 81 97 73 17 88 2 91 14 92 79 +Card 171: 94 31 8 53 93 92 99 86 38 50 | 61 73 14 87 40 48 26 58 65 17 41 23 63 78 34 62 36 66 79 96 28 57 1 11 45 +Card 172: 65 32 15 44 58 62 89 47 39 72 | 75 77 12 6 74 84 39 94 48 49 61 83 5 78 79 19 41 91 95 27 8 34 3 32 88 +Card 173: 41 62 58 74 21 43 95 76 86 61 | 31 81 17 36 43 76 55 9 41 4 29 11 3 62 35 97 46 95 58 61 50 18 74 86 21 +Card 174: 51 98 49 10 63 17 29 89 77 90 | 34 42 85 63 2 59 38 49 17 81 9 90 72 30 77 68 89 15 10 51 29 25 98 52 88 +Card 175: 86 66 20 51 68 18 9 54 87 40 | 93 64 62 4 65 44 51 20 86 54 10 40 25 9 76 72 55 24 29 18 66 80 33 68 87 +Card 176: 78 29 90 46 47 31 83 26 51 25 | 95 31 19 29 33 59 84 46 61 25 34 44 83 89 26 56 98 54 53 85 51 78 90 64 47 +Card 177: 95 56 62 13 87 93 1 60 98 80 | 67 24 57 95 60 7 13 56 87 98 62 33 93 15 45 1 47 92 35 80 55 36 46 73 18 +Card 178: 21 99 2 36 57 68 73 34 32 31 | 68 73 15 31 32 72 81 60 99 2 71 58 55 20 21 67 8 51 78 57 42 9 95 34 49 +Card 179: 91 34 61 60 97 12 99 44 25 67 | 17 43 67 82 44 7 26 98 61 51 95 23 84 56 34 97 25 12 46 50 91 80 75 60 99 +Card 180: 47 36 46 99 85 40 64 84 42 54 | 15 40 90 70 49 21 32 72 43 14 46 95 92 80 76 38 75 82 44 84 47 93 6 54 16 +Card 181: 63 50 87 79 76 74 26 17 38 77 | 68 8 46 62 52 26 11 56 17 41 3 54 94 50 1 77 21 74 6 79 97 40 15 29 63 +Card 182: 7 64 1 63 8 62 78 56 48 55 | 44 21 66 78 38 37 63 31 55 64 70 67 1 7 8 48 49 61 11 65 75 95 17 56 20 +Card 183: 70 14 76 55 85 32 58 43 30 47 | 23 26 13 58 78 44 32 73 30 96 14 93 40 70 85 55 76 42 7 43 59 71 48 47 39 +Card 184: 79 3 56 71 90 21 72 97 33 94 | 27 21 13 49 8 67 64 70 56 45 86 52 46 58 1 15 22 71 80 57 44 83 60 20 87 +Card 185: 49 76 37 2 56 67 47 52 53 32 | 82 44 46 78 70 16 62 59 73 85 65 58 24 63 83 29 30 50 60 31 18 80 9 94 10 +Card 186: 52 33 62 15 9 54 96 65 17 34 | 78 84 59 33 62 10 15 34 74 53 56 46 55 85 9 61 17 52 96 39 65 41 36 22 12 +Card 187: 91 42 64 39 98 6 69 78 81 73 | 2 90 91 41 73 95 28 25 10 20 77 64 81 66 97 74 82 99 57 96 65 93 40 67 76 +Card 188: 86 40 7 4 58 43 17 42 3 41 | 51 20 19 46 77 25 48 87 72 75 33 1 11 95 59 12 24 37 93 73 30 92 69 35 84 +Card 189: 55 88 58 95 53 98 61 14 99 32 | 88 92 59 43 10 48 24 34 2 13 96 39 52 89 82 57 98 55 58 8 56 14 16 21 32 +Card 190: 98 92 36 82 35 16 30 87 97 34 | 39 4 34 29 92 48 73 88 15 89 32 80 36 19 98 63 82 16 2 11 49 21 44 18 79 +Card 191: 70 77 87 90 57 25 40 15 1 21 | 78 88 39 51 86 87 3 52 7 19 74 80 71 91 70 75 23 65 45 49 15 18 4 54 55 +Card 192: 56 92 22 12 49 58 65 75 4 13 | 19 13 96 83 26 11 48 90 31 20 8 97 73 32 43 10 74 9 92 89 29 72 77 6 56 +Card 193: 96 71 66 59 31 65 18 64 98 2 | 60 9 28 45 41 90 85 22 89 18 88 65 74 4 99 33 70 25 53 47 35 16 38 24 98 +Card 194: 95 79 4 68 41 28 66 57 48 63 | 34 23 36 1 25 35 78 8 81 61 26 99 67 37 30 39 10 13 27 74 85 92 20 65 32 +Card 195: 41 83 10 73 51 22 94 89 69 24 | 87 61 32 58 35 33 30 66 59 60 5 45 28 72 37 90 12 46 19 25 17 16 31 57 47 +Card 196: 47 13 6 72 90 41 21 91 26 89 | 19 46 23 31 2 95 82 49 42 62 8 98 55 45 48 24 70 59 18 71 88 81 35 32 43 +Card 197: 28 94 70 24 89 47 20 97 73 16 | 73 66 16 28 61 41 47 76 5 96 70 17 72 89 91 77 32 19 94 42 97 88 24 80 20 +Card 198: 38 14 72 57 28 61 58 83 95 34 | 28 16 61 82 68 54 38 69 6 58 57 63 18 83 67 95 27 39 76 74 13 14 91 72 34 +Card 199: 9 98 46 14 29 54 74 88 47 56 | 93 23 78 26 19 20 99 38 39 7 13 50 90 22 66 89 87 73 29 24 53 8 40 14 63 +Card 200: 46 67 91 4 68 40 17 28 5 79 | 21 68 28 79 17 98 59 93 5 67 27 84 43 46 91 86 80 45 42 4 40 52 35 89 19 +Card 201: 76 11 20 45 41 85 27 90 86 60 | 86 41 21 11 17 96 40 62 59 64 36 90 35 49 85 93 60 43 8 12 97 76 45 44 20 +Card 202: 91 18 87 23 12 5 15 7 93 75 | 22 56 30 62 19 53 8 59 32 55 60 76 96 95 50 66 26 40 29 72 35 27 61 58 33 +Card 203: 34 37 15 89 9 24 72 93 76 1 | 21 43 19 56 91 30 83 62 60 28 23 42 90 97 78 94 32 10 25 84 58 63 27 54 38 +Card 204: 27 15 36 61 35 83 86 1 20 58 | 35 20 32 87 27 75 40 86 15 58 48 45 61 83 66 24 18 36 5 78 1 77 64 52 7 +Card 205: 28 98 47 86 52 91 34 41 79 85 | 60 41 74 79 25 29 20 8 86 99 19 13 89 39 80 34 69 85 36 4 98 49 91 64 33 +Card 206: 97 10 61 28 81 83 12 87 33 91 | 10 22 55 32 63 68 40 5 11 86 43 2 90 66 37 99 12 19 81 17 13 94 88 27 95 +Card 207: 74 80 72 2 26 12 90 68 21 17 | 72 65 36 35 82 96 73 58 69 77 8 47 5 17 26 90 80 9 78 39 16 67 79 61 74 +Card 208: 57 81 71 67 87 80 40 39 95 98 | 91 92 16 67 90 78 84 77 24 80 7 83 30 45 42 37 3 4 21 79 68 58 52 71 27 +Card 209: 89 62 13 17 84 26 78 81 79 8 | 49 77 71 68 8 97 1 47 22 74 96 62 26 6 27 19 18 32 46 13 79 93 52 17 90 +Card 210: 74 87 27 78 36 54 70 31 41 97 | 83 33 11 41 72 97 23 68 17 70 54 12 27 4 80 78 51 15 35 87 62 89 74 95 52 +Card 211: 94 7 17 66 47 13 9 89 5 28 | 74 89 79 8 66 52 59 94 11 69 20 71 35 96 90 7 2 21 26 91 27 46 93 51 28 +Card 212: 55 41 84 46 83 4 87 24 75 56 | 29 6 93 32 51 7 71 20 88 3 37 72 62 40 66 38 90 85 9 74 10 31 78 27 44 +Card 213: 86 21 88 6 39 9 47 1 38 34 | 76 88 46 84 27 73 15 6 86 79 7 95 51 5 92 93 9 28 58 98 42 74 38 61 37 +Card 214: 34 62 79 39 97 8 78 81 86 18 | 20 7 3 32 28 76 25 40 80 66 77 62 27 13 95 15 14 48 64 60 54 31 74 97 58 +Card 215: 69 15 78 85 50 51 57 71 74 58 | 63 79 4 13 94 97 17 10 25 38 87 33 27 86 75 76 99 23 36 35 47 64 41 46 84 +Card 216: 2 39 13 72 47 45 38 37 3 89 | 67 12 37 18 69 8 60 80 55 6 17 96 7 74 10 23 50 72 15 92 95 41 21 32 35 +Card 217: 39 78 45 4 20 96 26 87 55 1 | 7 91 37 48 83 59 53 27 16 78 49 90 61 81 92 15 17 46 62 73 42 8 9 50 82 +Card 218: 32 2 98 53 69 96 76 79 7 50 | 9 49 16 21 70 6 44 34 47 41 93 58 95 81 66 65 4 62 57 30 90 53 10 89 25 +Card 219: 74 23 73 99 60 87 45 75 70 85 | 32 64 31 27 67 46 29 92 34 76 37 40 35 95 50 86 30 63 42 69 68 83 61 55 62 diff --git a/src/day-4.lisp b/src/day-4.lisp @@ -0,0 +1,42 @@ +(defpackage #:aoc/day-4 + (:use #:cl #:aoc/utils) + (:export #:day-4)) +(in-package #:aoc/day-4) + +(defun read-card-numbers (line) + (loop with winning-numbers = nil + with my-numbers = nil + with divider? = nil + for i from 8 below (length line) + for char = (aref line i) + do (cond + ((char= char #\Space)) + ((char= char #\|) + (setf divider? t)) + ((digit-char-p char) + (multiple-value-bind (number end) + (parse-integer line + :start i + :junk-allowed t) + (if divider? + (push number my-numbers) + (push number winning-numbers)) + (setf i end)))) + finally (return (list winning-numbers my-numbers)))) + +(declaim (ftype (function (list list) fixnum) task-1)) +(defun task-1 (winning-numbers my-numbers) + (loop with score fixnum = 0 + for number fixnum in my-numbers + when (member number winning-numbers) + do (setf score (if (= score 0) + 1 + (* score 2))) + finally (return score))) + +(defun day-4 (input) + (loop for line = (read-line input nil) + while line + for (winning-numbers my-numbers) = (read-card-numbers line) + sum (task-1 winning-numbers my-numbers) into task-1 fixnum + finally (return (values task-1)))) diff --git a/t/day-4.lisp b/t/day-4.lisp @@ -0,0 +1,13 @@ +(defpackage #:aoc-test/day-4 + (:use #:cl #:lisp-unit2)) +(in-package #:aoc-test/day-4) + +(define-test test-day-4 + () + (assert= 13 + (aoc:run-day 4 "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11")))