aboutsummaryrefslogtreecommitdiff
path: root/2020
diff options
context:
space:
mode:
authorMarvin Borner2020-12-20 00:12:35 +0100
committerMarvin Borner2020-12-20 00:12:35 +0100
commit8b675a93e9f0c176a3a78a9d0485e96fbcd9303f (patch)
treea04b9a24fc3512383e189293aa20c1b158e20aab /2020
parent6b488c1fed7801bbae1d79b9b985d19008fd925b (diff)
Finally (I used JS now..)
Diffstat (limited to '2020')
-rw-r--r--2020/19/Makefile5
-rw-r--r--2020/19/input (renamed from 2020/19/input1)0
-rw-r--r--2020/19/input2617
-rw-r--r--2020/19/solve.c22
-rw-r--r--2020/19/solve.js42
-rw-r--r--2020/README36
6 files changed, 77 insertions, 645 deletions
diff --git a/2020/19/Makefile b/2020/19/Makefile
index fc2ff1a..c88f7f9 100644
--- a/2020/19/Makefile
+++ b/2020/19/Makefile
@@ -6,5 +6,8 @@ solve.o: solve.c
clean:
@rm -f *.o
-run: solve.o
+run:
+ @node solve.js
+
+c: solve.o
@./solve.o
diff --git a/2020/19/input1 b/2020/19/input
index e472e6c..e472e6c 100644
--- a/2020/19/input1
+++ b/2020/19/input
diff --git a/2020/19/input2 b/2020/19/input2
deleted file mode 100644
index c9757e5..0000000
--- a/2020/19/input2
+++ /dev/null
@@ -1,617 +0,0 @@
-101: 118 64
-83: 132 118 | 108 2
-61: 19 2
-33: 126 2 | 68 118
-80: 2 48 | 118 91
-47: 38 2 | 64 118
-40: 25 2 | 93 118
-18: 38 2 | 108 118
-2: "a"
-74: 118 108 | 2 12
-41: 118 17 | 2 58
-56: 125 2 | 132 118
-66: 12 2 | 27 118
-62: 118 52 | 2 125
-58: 2 128 | 118 99
-89: 110 2 | 3 118
-30: 118 85 | 2 21
-20: 2 70 | 118 111
-85: 118 115 | 2 52
-98: 118 46 | 2 10
-12: 118 2 | 43 118
-99: 102 118 | 56 2
-127: 2 119 | 118 100
-53: 125 2 | 108 118
-15: 2 27 | 118 108
-22: 95 2 | 61 118
-109: 115 2 | 46 118
-90: 76 2 | 121 118
-37: 15 118 | 23 2
-27: 118 2 | 118 118
-104: 2 46 | 118 12
-32: 64 2
-26: 35 118 | 32 2
-123: 131 2 | 89 118
-21: 118 132 | 2 115
-95: 112 118 | 125 2
-79: 88 2 | 60 118
-34: 107 2 | 133 118
-6: 2 101 | 118 110
-55: 118 112 | 2 64
-10: 2 118
-115: 2 118 | 2 2
-39: 2 61 | 118 81
-42: 92 118 | 124 2
-105: 38 2 | 10 118
-7: 10 2 | 27 118
-106: 87 2 | 1 118
-75: 118 46
-28: 2 71 | 118 16
-120: 118 27 | 2 112
-100: 69 2 | 109 118
-102: 46 118 | 132 2
-5: 39 118 | 51 2
-14: 57 2 | 96 118
-8: 42 | 42 8
-25: 118 59 | 2 67
-3: 19 118 | 52 2
-59: 2 74 | 118 83
-87: 118 72 | 2 78
-130: 111 2 | 117 118
-112: 2 43 | 118 118
-116: 118 38 | 2 108
-17: 2 122 | 118 29
-124: 41 118 | 40 2
-11: 42 31 | 42 11 31
-38: 43 43
-44: 118 123 | 2 114
-23: 12 2
-29: 2 113 | 118 129
-121: 2 10 | 118 19
-93: 2 26 | 118 36
-13: 19 118 | 46 2
-107: 118 132 | 2 10
-54: 118 27 | 2 12
-63: 2 105 | 118 82
-84: 2 37 | 118 73
-52: 118 2 | 2 118
-50: 118 111 | 2 9
-111: 118 112 | 2 27
-82: 118 46 | 2 108
-118: "b"
-133: 115 2
-103: 34 2 | 22 118
-36: 66 2 | 65 118
-31: 33 118 | 79 2
-69: 12 2 | 115 118
-122: 54 118 | 66 2
-114: 6 118 | 80 2
-92: 118 14 | 2 44
-0: 8 11
-117: 132 2 | 108 118
-76: 64 2 | 27 118
-126: 2 28 | 118 127
-113: 125 2 | 19 118
-43: 118 | 2
-46: 118 118 | 2 118
-132: 118 118 | 2 2
-49: 118 130 | 2 50
-129: 19 118 | 27 2
-24: 2 27 | 118 52
-119: 118 47 | 2 98
-91: 19 118 | 10 2
-35: 115 118 | 46 2
-57: 2 63 | 118 90
-125: 118 118 | 43 2
-108: 118 118
-4: 115 118 | 19 2
-94: 112 2 | 115 118
-1: 2 55 | 118 75
-9: 38 118 | 112 2
-71: 2 18 | 118 53
-60: 103 2 | 86 118
-51: 116 2 | 24 118
-128: 24 118 | 117 2
-45: 118 2
-16: 104 2 | 62 118
-70: 118 115 | 2 45
-77: 118 13 | 2 94
-131: 61 2 | 107 118
-68: 2 49 | 118 84
-86: 118 97 | 2 30
-78: 118 38 | 2 12
-88: 5 2 | 106 118
-81: 2 45 | 118 52
-64: 2 2
-19: 2 43 | 118 2
-110: 132 2 | 64 118
-96: 2 77 | 118 20
-67: 104 118 | 4 2
-65: 115 118 | 38 2
-73: 118 110 | 2 120
-72: 64 2 | 115 118
-48: 2 46 | 118 10
-97: 7 118 | 133 2
-
-aaaaaababababbbbbababaab
-aaababbabbbbbbabaaaabbaaabababaabababaaa
-abaabababaababbaaaabbaaabaabbbaa
-aabbaaaaabbbaabbaabbbabbbabaabbbaaabaabababaaabb
-bababbbbbaaaaaababbbabbb
-bababbaabbaaaaabbaabbabbbabbabbbbbbbbbababbbabab
-aaabaababbaabbbbaaabaaabaabababb
-babaaababbbaabaaaabababa
-aaababbabbbbbaabaababbaabbababbbabaabbbbabababaaaaabbaab
-baabbbbabaabaababbbbbabaabaabaabbaaaabab
-bbbbaaabbabbbbabaaaabbabbbbbabaaaaaabbaa
-bbababbbaabbaabaababbbab
-bbaabbbabbbaababbbabbabb
-abbaabbaaabbbaaaaabaabababbaabbababaabbbaaaabbaa
-bbaababbbbbbbaabbbabaaab
-baabbbaabbababbbababaaabaabbaabb
-baaabbbababbbabbabbaabaa
-bbaaabaabbbababbbbbbbabb
-aabaabbbabaaaaabbbbaaaaa
-babbbaaababbbbaaaabaaabbbabaabba
-abbabbbbaabbaaaaabbbbbaabbbbbabbbaabaabb
-aabbbbaaaabaaabbaabaaababbbbbabbbbaababa
-abaaaabaabbaaabaabaaaabbabaaabaaaaabaaab
-babaabbbbaaabaabbbababbbaabbababaaaaabababbbbaababbbbbbb
-ababaaababaaaabbbababaab
-bbbbabaabbbabbabbabbabbaaaabbaab
-abababbbaaabababbbbbabbbaabbbabbbabaabaababbbbabaababbbb
-bbaaaababaabbaabaabbababaabbbbba
-abbaabaaabaaabaabababbbbbbaabaaaabbbabababbababbbabaabaabbabaaaa
-bbbbaabaaaabaabbabababab
-abbabbaabbbbbababbaabbbb
-bbbbaabbababbbbbbbbbaabaaabbabaaaabaaaba
-bbbbbaaaabbaabbbaaabbaaaabaabbaabbbbbabb
-bbaaabaabbbbbbbbabbbbbaa
-baabbbbaaababbababbaaabb
-aaaababbbbaababaabbbbbbbaababbbb
-aaaaabababaaaababbbaaaaa
-abbbaabbbababbaaabaaabaa
-bbbbbababbbbaabbaabaaaba
-aabbbabbbbbababbaaaabbba
-aabaaaaabbaaaabababaabab
-bbbbbaaabbbabbabaabaaaab
-bbbabbbaaabbbabbaabaaabbbbabbababbabaabbbbababab
-abaababbabaabbaaaabbbbbababbbbaaababaaaabbbbabba
-abaababbbbbababbabaaaabbababababaaabaaab
-baaabbabaabbbabbaaaabbabbabababbbbbabaabaababbbbbababbba
-bababbabbbbbbbaaaabbbabaabaaababbbbaaaaa
-baabaaabaaabaaaabbaaaabb
-bbbabbbbbabbbbbaababbaab
-bbaaaabaaabaababbaaaaabbbbaaaabb
-abbabbaabaaaaaabbaababaa
-aaaaaaaaabaaaaabaaaabbabaabababa
-bbbbaabaabbabbaabaabaabb
-bbbbabbababaabbbabaaabbb
-aaabaabbaabbaaaabbbaaaaa
-abbabaaababababbbbbbaabaabbbaabbaaabaaaaaabbabaaabaabaaa
-baaaabbbbabaaabaabaababbabaaaaaaabbabaaabbabbaab
-abbbaabababbbaaababbbbaaabaabbbbbaaaaaababbabaaaabbbbbaabbbabababbabbaaa
-aaaaaaaaaabbbaaabbabbaab
-bbabbbaabbabbbbabbaababaaaabbabaaaabaaba
-abbaaaaabbaaaaabbbaababbaabbbababababbbabbabbbbabbbaaaabaabaabab
-bbbabaabaaabbaaabaabaaabbaabbbbb
-aaabbaaabbabababababbaabbabaaaaabbbaabbbbabaabab
-abaabbbbabbbbaaabaaaabab
-abbaababbbbababbababaaaa
-bbbbbaabbbabbabaababaaaa
-bbbaabbaabbbbbabaabbbabbabbbaababaababbbaaaaabbbbaaaaaba
-aabbbabbbaabbaaaaabbaabb
-aaabbaaaabaaaabaabbbabab
-bbbbaababbbbbaabaaaaababbabbbaababbabaab
-baabbbbabaabbaabbabaabaaabaabbabaaabaaaaababbbabaababaaa
-bbbbaaaabbbabbbbabbbbbaa
-abaababbbbbbababbababababaabaaababbbbbaa
-aaabaaaabbaabaaaabbbabaa
-bbbabbabaabbababbaabbbaababbaaaaabbabaab
-aabaaabbabbbbabaabaabaaa
-bbbbaabbabababbbaaaaaababababaaabbbababa
-bbbabbbabbabaabbaaabbbbb
-abaaabbabaaababbaaabbbab
-bbbbabaabaaabbbbaaaabbabbbaaabaababbbaab
-abbaaaabaababbabaabaababbbabbaab
-aabbabbaaaabbbbababaaaab
-abbbabbaabbbbababbbbbaabbababbabaaabaaabababbbab
-bbabaabaabaaaabababbbbbb
-bbbbbbbbaaababbaabbbaaab
-bbaabbababbbbaaabbaaaabb
-babbabbbbaabbabbababaaba
-baaabaabaaabbbbaababbbbaaaabbbaaaaabbbaabbbababaaabbbaab
-aaaaabababbabaaabaaabbbaabababababaabbba
-baaaabbbaaabbaaabaababbabababbababbabbaabaababbaaaabbabaaababaaa
-babbbaaaabbaabbbbabbbbbb
-bbbbbaaabbaabbbabaaaabba
-abbbabaabbbbabbaabaabaaabaaaabbabbbaaaabbbaabbabababbaabbaaaabaa
-babbababaababbababbababa
-abaabbbbabbaabababbaaaaa
-bbbabbaaaaabababbbaabbaabbababaabbbabaaa
-abaaaabaababbbbbaabaaaaabbbabbbabbababab
-aababbababbaabbbbbbbbabb
-bbababbbaabaaaaabbababbabababbabbbabbaaa
-abbbbabbbababbbaaaaabbabbbabbbabaaabbbaabbbaabbaaaaaabba
-ababaaabababbbbaaaaabbababbbbaab
-baabbbbabaaabaaaabaababaaaabbaba
-baababbabbbbbabbbaabaabb
-bbbababbbababbaaaabaabbbbbbbbabaabbaaabb
-baabaabaababbaaaababaaabbbbbbbba
-babbaababbbbababbaabaabb
-aabbbabaaabbaaaaabbaaabababaabba
-bababbbbbaabaaabbbaababa
-bbbababbbaabbabbabbbaabaabababaa
-bababbaaaabaabbbbbbbaaab
-bababbabaabbaaaabbbaaaba
-baabbaabaabaabababaaaaaababaabab
-baabaaabbbaabaaabbbbbbab
-abbbbbbabbaabbbabbaabbbaabbaabbababbaabb
-babbbaaaabaabbbbaabbaabb
-baabbbababbbababbabaaaaabbababab
-babababbaaabababbbbababbaaaababa
-abbbbaaaaabbabbaabbaaaaa
-bbbbabaababbbbaaaaaaaaab
-abbabbaabbbbaabbbabaabbbbaaabaaaaaaabaabbbbbbbaa
-bababbbbbbababaaaabaabba
-bbbbbaabbbabaababaaaabab
-aaabaabbbbaababbaababbbaabbbbbbabababbab
-aaaaaaaaabaababbbbabbaab
-abababbbabbabaaabaaabbaabbaaaabb
-babbbaaabaabaaaaabbbaabaabbbbbbaaaabbabbabbbabab
-babbabbbbbbbaabbaaaabaaa
-baabbbbaabbbabbabbaabaab
-bbbbabbabbababbabbbabbabbabbbaaaaaaabbabaaaaaabb
-abbaabbbababbaaabaaaabaa
-babbbaaababababbbaabbbbb
-bababbaaaaababbaaabbaabb
-bbbbabbbbbaabbaaabbbabbabababbbbbababbabbabbabba
-abbabaaabbaabbaababbbbaaaaababbaabbababb
-baababbabbbbababbbbabbabbbbbbaaaabbaabba
-babbbbbaabbabbbbabbaabba
-baaaabbbabaabbbbbaaaaabbbbbabbabaaaabbbabbaaabab
-abbabbbbbbbaababababaaaa
-baaabaabbbbbababbabaabbbbbbbbbbabbabbaab
-bbbbbaabbabaaabaaababbabbabbbbabaabaabaa
-bbaaaaababbbbabababbabbbaaababbb
-aababbbaabbbaabbabaababababaaaab
-bbbabbbbaaaaababaabbbbba
-bbabaabaabbbabbabbbbbaabbbbbabababaaaababbbaaaabbbbbbabb
-bbbbbabaabbbbababbababab
-bbbaabbaabbbbbbabbbabbbaabbbbaaaabababab
-baaabaaaabaaaabaaababbaabaabbabbababbbbabbaaabab
-baaabaaaaaabaaaaabbbbabb
-abaaaababbabbabaabaaaaaababbaaaaabbbbabb
-baaabbbababababbaaaabbbb
-aaabbbaaabaaabbababaabbbbbaabaabbbaaabbb
-bbbababbaaababababbbbaaaaaabaabbbaabbbbb
-abaabbbbababbbbaabbaabbbaabaababbbbaaaba
-aabbbabbabaabababaabaaabbbbabbaaaaabbbbbbaaaabab
-aaaaabaaabaababababbbbbb
-bbbbababbaabbbbababababaabbbaaab
-baaabbbbaaabbaaababbaabb
-aabbbabbbbbbbaababbabbab
-babaabaaabbbbbbaabaaaabbbbaabaaaaabbaabaaabbabbb
-baaaabbbaabaabbbaaaababb
-aabbababaaabababbabbabbaaabaabaaaababaaa
-abbbbbabbaabaaababbbaabbabbaabababababbbaaaabbabaabbbbbabbabbbaabbbaaaba
-baababbaababbaaaaaaabbba
-bbbbaabbbaaaabbbbaaaaaaa
-bbbbababaaaaaabaaaababbb
-aabaaaaabbaaaaabbbbababbbbbaabbabbbbbabb
-bbbbaababaabbabbabbbaabbbbbbaabaabaabbbbabbababbbbbaaaaa
-abbaaaabbbabbabaababbaaaaababbabababbbabababbabb
-bbababbbbaaaabbbabbbbbaa
-bbaabbaabbbbabaaabbbbaaababababbabbbbbaabbaabaab
-bbaabbbabbbbbaaaaabbabaabaaabbbbababbbbb
-baababbabbbababbbbbbbbab
-abbbbbbaaaabbaaaaaaaabba
-bbaabbbababbabbaaaaabaab
-bbbaabaababbbbbabbabbaaa
-bbababbbabbbaabbbaabbbbb
-bbaaaabaaaabaaaaaabbabbabaaabbaabbbababa
-aaabababaaabbbbaabaaabbb
-bbaababbaabbabbabaababbb
-babbbabbaabbabbaaaabbaaabbbaabaababaaabbaabbbbabbbaaaabb
-babbbbababbbaababaababbb
-bbbbabbabababababbbbaabaaabaabbbabbaabbbbbaabbaabbabaaaabbbaaaba
-aabaaaaaabbaaaabbbbababbbbaaabaabbaabbabbbabbbaa
-bababbaabaaabaaabababbbbbbaaabbbabbababa
-aaabbbbaaaaaaaaabbbaaabb
-bbbbabbabbbbaabbbaaabbaabbbaaaabbaaaabab
-babaabaabaaaabbbbaaaabba
-abbbaabbbabbabbbbaaabaaaabbabbaabbbaaabb
-bbbbaabbaababbabaaabbaaaabaabbaaabbabbab
-abbbbaaaabbbaabaabaaaaaabbaaaabaaabababa
-baaabaaaabaaaaababbabbbbbababbba
-baabaaaabbaaaaabaaababbaababaabbaabaabaa
-baaababbbaabbaababbbabaa
-babbbbaaaaababbababbbbbb
-bbaabaaaaabbabbabaaaabbbaabaaabbbbabaaaaabbababa
-baabbbaaaabbaaaabbaaaabb
-baabbbbabaabaaabaabaabaa
-bbbabbbbbbbabbaaababaaababbabaab
-aaaaaabaaabbbbaaabaaabaa
-ababbbbaabbaababaababbbb
-abaaaaababbbbbabbbbbbbba
-aababbbabbaaaaababbbbbaabbabaaabaaababaa
-aaabaaaaabbbabbaabaaabbb
-bbaababbbbbbaabaabbaaaaa
-bbababbbbababbaabaaabbbbabaaaaababbbbaabaaaabbba
-abbabaaabbaabaaaababaaaa
-aaabaabbabaaaababaaabaaaaabbbabbbabbbbabbbabbababaabbbbbaababababababaab
-abaabababbababbbbbbaaaba
-abbbbababbaabbbaaaababaa
-aaaaabaaaababbbaaaaabbba
-abbaababbbbabaababaababbbbabaabbbbbbbbaa
-abbbaaaabbbbabbabbaaaaaabaaabaababbaaabbababaaaaaabbaaabbbabbaaaaababababababbbbbaaaabab
-ababbaaababaabbbbabaaababbbaabbb
-bbbaabbabbbaabaaaabbbbaaaaaaabaaaababbabbbabbbbaabaabbaabbbababa
-bbbbaabbabbbbabababaaaab
-aaabbaaaaabaaaaababbbbbabbabbbab
-bbbbaaaaabbbbbbabbaababa
-abaaaabbbbababbabaaaabbbbabbbbbabbababaabbabbbabaabaabbabababbba
-baaabbbabbbabbaabbabaaab
-aaababababaabbbbbabaaaab
-bbaaabaaaabaabbbbabbbabababaaaaa
-abababaaaabbbbaabbabbbaababbbbaaaaaaaabbabababbbbaaaabaa
-baabbbbabaababbabbabbbba
-baabbbaaaabaabbbabababab
-abaababbbbbababbaababbabababbbab
-baaabaabbabababaaaaaaaaaabbabbbbbaaaabba
-baaaaabbbaaabbbababaaaaa
-baabbaaabbaabbabbabbbbbb
-babbababaaabababaabbaabb
-bbbabbbbaabbabbabbbaaaaa
-bbbabbabababbaaabbbaaabb
-aaabababababbaaabbabababbaaabbabaaaaabbbbabbbbaaaaabbaab
-aabbbbaabaaaabbbbbabbbaa
-bbaabbaaaaaaaababbaabbaabbaabaaabaaaaaaaababbaab
-bababbaabbaaaaabbabaabbaababababaaaaababaabbaabbbbabaaabbaaaabbabaabbbbaabbabbbb
-baabaababbbbaaaababbbbbb
-baaabbaaabbbaabaaaaaabaabbbabbababbaabbbaaabaaaaaaaabababbbaabbbbbbaaaabababbabbbababaab
-aaababbabbaabaaaaabaaaab
-bbbabbabbbbbababaabbabbababababbaababbbaaababaaa
-babbbabbbbaaaaabbbaaabaabbbaaaaa
-bbaaabbabbaaabaaaaaabaab
-bababbbbbaabbaaabaaabaaabababbabbaabaabaabaaabaa
-bbbbbabababbbbaaaaabababaaaabbabaabbbbab
-bbbbaaaaaababbbaabaaaabbaabbaabb
-babaabaabbaaaaabbaabaabababbbbbaababbaaabaaaabbbbbbbbbabaabaabaa
-babbbabaaaaaaaaaaababaaa
-bababbabbabbbbbaaaababbb
-abbaaababbaaaababaaababa
-bababbaabaaababbbbbbaaaabbbaabababbabbba
-baaabbbbaabbbaaaaaaabbababaaaaaaabbabbababbbaaaaababaabb
-babbbabbbbababbaabbbaaaabaaabbbabbababbabbbbbaabaaaaababaaabaaaa
-ababbbbbbbbbabbaaabaabaa
-bababbaababbbbaaaaababababaaaaabbbaaabbb
-bbbbbaabbbaabbaaaaabababbaababab
-aabaaabbabbabbbbaabaaaaaaaabbbbb
-bbaabbabbbbbabbaababaaba
-aaabbbbaaabbabbababaabbbaabbababbabbaaabaabbbbba
-babbbbabaaaabbabbbbbbabb
-babbbabaaabaaaaaaabbbbaababbaabaaababaababbaaaaa
-aaabaaaaaabbabbaaabbbabaabbaaabaabbaaaaa
-babababbbbbbabaaabbbbbbaababaaaaaabaabaa
-aabbabbababbbaaabbbaabbb
-aabbaaaaabbaaaaaaaabbbaaaaababbbbbbabbabbbbabaabababaaaaababbbaaaabbbaab
-bbbabbaabbbbaaaaabaabbba
-babbbabbaabaabbbaabbabbb
-abaaabbabaaaabbbaaaaabaaababaaabbabbbabaabaaabababababab
-aabbaaaabbbbbaaababbaabababbaababbaaaabaabbabbbaabbaaabbbbabababbaaaaaaa
-bbbbbbbbbbaaaababbbbbabbaaabaaababbbababaaabaaba
-aabbbababaabbaaaabbaabba
-bbbbbaabbbbaabbabbbbbababaabbbbbaaaaabba
-abbabababbbabaababaaaabbbbbaaabbbaabababbbaabbbabbaabababbabbbba
-aabbbabbababbbbbaaabbbab
-bbbbbaaabbbababbbbbabbbaaaabbababbabbbaa
-bbbabaababbaabbbabbbbabb
-bbaabbbaaabbababbababaaa
-abbabbbbbbaaabbaabbbabbb
-abbbbaaaaabbaabaabbaabba
-bbababaabbbabaabaababaabbbaaaaabaababbaababbaabbaaabbbabbabaaaaa
-baaabbaabbbabbabbaabaabb
-bbbabbbbabbbbabaababaaababbabbbabbababab
-bbbbbaaababaaabaaabbbababbababababbaabba
-baabbaababbbabbabaabbabbabbbabaaaaabbabb
-bbbbbaaabbbabbaabbabbaab
-babbbababbaaaaabbabbbbbb
-abaaaabaaaababbaaabababa
-bbbababaaaabbbbabbbbabbaaabbaaaababbaaaababbaaaaabbaaaaa
-abbabbaaaaaabbabbbaaabab
-bbbaabababaabbbbbabaabab
-babbbaaaababbbbbbaaaabba
-bbaababbbbbbababbbaabbbb
-aabbbbaabaaabbbbababbaaabaaabbababbabbbbbbabaaaa
-bbababbabababbaabbaaabbaabaaabbabaaabbaaaaaabaaaababaaaaabbbbbaabbabaaaaaabbabaaaaaabaab
-baaabbbbbabbaababbbaaaaabbbaaabaabbaababbaababbbbbbbbbbaaabbabbaabbaabbaaababbbaaaaabbabbbbbaaba
-aaaaaaaabaaaaabbbaabbaba
-baaaabbbbaabaaaababaaaaa
-baaaabbbbaaaaaabaaabbbbabbabaabaababbabaaaaabaabababbbaa
-bbbbabbbabaaaabaabbabbaaabaabaaa
-baaabbaababbbbbaaabbaabaaabaaabbabaabaaabbabababababaaba
-bbaaaababaabaabaaaabbbaaaabbaaaabbbbbabb
-bbbbabbbbbababbbbbabaaab
-bababababbbbaababaababbaababbbbbaabaabba
-bbaabbbaaaaaaababababbba
-bbbbaabaabaaaababbabbabb
-bbbaabbaabbbbaaaababbabb
-abbaaaabbaabbabbaabbbbaabaabbaba
-abbbbbbabaaaaababbaaabababbbbabbaabbbbba
-babbabbabbbaabaabbbaabaabbaaaaaababbbbbb
-abbaaaabababbaaaaaabbbbb
-bbaaaababbaaabbaabbbbbbaabbaaaabbbabbaabababbbaabaabbbbb
-aababaabababbabbaaabbaababaabbbabaaaabbaabbaaabbbbbbaabbaaababbabababbaaaaabaaba
-bbbbaabbbbaabbaaaaababbaabbbaabbbbbabaaa
-abbbbababbbaababbabbbaaabaabbaabbbbaaabb
-aaaaababbaaabbabaabaabaaaaabaabaabbbabaaabbbabaababaabaa
-aabbbbbbabaabaababaaababbabbbabbababaabaaaabbabb
-bbaabaaabaaababbaaaaabababbaabbbaaababbbbababaaa
-bbabaaabbabbbabaabaaaaaababbbababaaaaaaaaaaabbabbabaabbabbbaaaabaaaababb
-baaaabbbbaaabbabbabbbbbabaaababbaabbbabbaaabbbabbbabbbbbaabaabaa
-babbaabababbbaaabaababbaababbabbbbbabaaabbabaaababbbabbbbbbababaabbaaaaa
-abaabbababaabbabaaaabaaa
-bbababbaabbaaababaabbaba
-baaabbaaaabbababbaabaabb
-aabbbbaabababbabbbabaabaaaaaaabb
-bbbabbaabbbbaabaaabababb
-aaabbbbabababbaabaaaabab
-abababbbbbabaabbbbbaabbabbabbaabbbaaaabb
-aaaaaaaaabbaaabaabbaaabb
-babbabbaabbbaababbabbbba
-aaaaaabaaabaaabbbabababbbbabbabb
-babaaabbbbbabaaababbabaabaaaabab
-aaababbbababbbaaababbaabbbbbababaababbbaaabaabbabaababbbbbaabbbbbabaaabababbbbaaaaaabbabbbababaa
-abaababbaabbaaaaabbbaaaa
-abbaaaababbabaaabbaabbabbaabbbaabaababaa
-aaaaabaaaabbaaaaabababaa
-baaaaaababaaaabaababbaaaaaabbbabbaababababaaabaaabbbbabbaabaaabb
-bbbbabaabbbbbaabbabbaabaabbaaabbbbabaaaababbbaab
-abbabbbbabbabaaaabbabbba
-baaabbbbbabbababaaaabbbb
-abaabababaaabbaaaaabaabbabaaaaabbabbababbbaababa
-abaaaabaaababaabbabbbbaabaabaabaaaabaaaababaaabbaabbbaabbbbaabbb
-bbaaabbabbbababbbaaabbaaaaababbb
-bbaaabbabaabaaaabbabbabaaaaaaaaaabbaaaabbbabaabaababbababbbbbbba
-aababbbabbababbbabaabbba
-aabbbabbbaaabbabbbbbbbbbbbbabaababbaababababbbaaabbaabaa
-aaaaaaaaabaaaaaabbbabbaababbbaaaaaabaaab
-bbaaabaabbabbabaabbabbaaababbaab
-abaaabbaaaabbaaaabaabababbbbbbaaaaabbbbb
-baabbaababaababaaabaaabbabaaabaa
-bbbabbbabbababbbaaababaa
-bbabaabbbbbbaababbabbbbb
-abbbbababbbabbaaabbbabab
-baaabbbababaabbbbbabbaab
-aaaaaaaaaabaaabbababaabb
-bababbaaabbaabbbaabbaaab
-babbaababbaaaabaabaababbaaaabaaa
-bbbabbabaabaaabbaaaabbabababbaaaabaaabbb
-aabaaaaababaabaaaaaababb
-aabbabababbaababaaaababb
-bbbbabbabbbaabbabababbbbbbaaaabababaabbaaaabbbbbaabbbbba
-ababaaabababbbbaabbaaabbabbbbaaaaabbbaabbbabbabaabaabaab
-aabbababbabbabbbaaabbaba
-abaabbabbaabaaaabbbaaabb
-babaaabaaabbaababbbabaaa
-bababbabbaabbabbaabbaaaaaabaaabbabbabbbbaaabbaba
-babbabbaabaabbabaababbbb
-babbbbaaabaaabbabbaabbbabbbbabbbbbabaababbbbaaababaabaaabbabbbaaaaaabaab
-baabbaabbbbbbaaabbabbbbb
-bbbababbbaabbbaabaabbbbabbababbbbaaaaabbaabbbaab
-aabbaaaaabbabbaaababbbbbbaabbbbaaaaabbbbbbababab
-baabbabbaaabbbaabbbbabababbaaabb
-babbabbbbbaaaaabbbaaaaaaaaaabaaabaaaaaaaaabbbbbbbaaaabbbababaabbaabbbaaa
-bbbaabbabbabaabaabaabbaa
-abbaaaabbbbabbabbaabaaaaabaaaaabbbbabbabbaababaaabaabbbaaabbabbb
-bbbabaabbbbaababaaababaa
-aabaabbbbaabaabbbabaaaaaabbbbbbb
-aaabaaaabaaabbaabbaabbbaabababab
-abbaaabaabaaaabaabbbbbab
-aaaaabaabaaabbaaababaabaaaaaabbabbaaabbbaaaaaababbbbaabbbaabaabababbbaababababab
-bbbbaaaabbbaabaaaabaaabbababbaaaaaaabbbababaaaabbbbaaaab
-bbbabaabbbaaaaabbabbaaab
-abbaaaabaaaaaabaaabbbbaaabbbbaababaabbba
-baabbaaaaaabbaaabaababbb
-aaabaabbbabbaabababaabbbaabbaababaabaaababaaabbb
-bbabaababbbabbabaabbaaab
-bbaaaaabbbaabaaaaaabbaaa
-bbbbbaaabbbabaabbaababbabaaaabbaabbababa
-aabbbbaabbaaabaababbbbbababbbbbaabbaabbbbaaaabbbababbaab
-aabbbabbaaabbaaabaababbaabaaaaaaababaaabaaabbbbaaabaaabaaaabbaabababaaaabaaabababbbaaaab
-aaabaaaabbbbabaaababbbbbabbaaaaa
-abaabbbbabbaaabaaaaaabaabbbbbbaa
-bbaaabaaaaaabbabaabbbbab
-baaaaaabaaababbabbbbaaab
-bbabaabbbabbbaaaaabbabbaaabbaababbabaabbaaabaaaaaaabaaba
-abbbbbaabaabbbabbabbaaaabaaaaaba
-aaabbaaabbbbaaaababaabbbbbbabbbaaabaaabbbaabbabaaabbaaab
-babbaababbbbaaaabbbbaabaaabbbbaaabbabbba
-baababbabbaaaaabbbababaabbabbaaa
-aabbababbbaaaabaabbabaaabbbbbaaabaaabbbaabbbabab
-abbbaabaabaabaababababbaabbbbaabbbabbaabbaabbaaa
-baaabaaabaaabaaabaaaaaba
-bbbabaabaabbbabbbbabbaaa
-bbaaabaabbbbaaaabbabbabaabbababb
-abababbbabaaabbabaaaabbbaaaabbabbaababbabbaabbbb
-bbbbbaababbaaaabbaaabaababbbaaab
-baabbabbbbaaaababaabbaaabaababaabaaaabab
-baababbaabbbbbbaaabbabbabbbbababbabbbbbbaabbaabb
-baabaaaabaaabbbaabababbbaaabbaba
-abaabbabbaabbaaaaaabaaababbaabaabbbaaaaa
-baabaaaaabbaabbbabaabbba
-bbbaabbababbaabaaaaaaabb
-bbbbabaababaabbbbbababaabaaabaabaaaabbaa
-aabaababbaabbbbababbaabababaabaabaabbaaaabababab
-abaaaaabbbbaabaabaabbaba
-bbbbaabbbaabaaabaabbaababaabbabbbabaaaaaaaabaaba
-aabbabbaabaaaaaabbabaababbbaabaababaaabb
-abaaaababbbaabaaaabaaaaabaabaaaabaaabaaaaaaabaab
-aaaaaabaaabbbababbbbbababbbbababaabbbaab
-bbbabbababbaabbbabababaa
-baabbbaaaababbbabbbaaaba
-baaaaaabaabbbabbbaaaaaabababaaba
-bbbbaaaaabbbabbabbbbaabaaaaaababbbaabbbb
-aaabababbaabbaaaaabbbbab
-abbbbaaabbaabbababaaabbabaaaabba
-bbaaaababaaabbaaabbbaaaa
-ababbbbbaaaaaabaabbabbbbaaabbbbbabababaa
-bbabaabaabbabaaabbbaabbb
-aababbbaabbbabbabaaabbbbbbabaabaabbbbaaaabaabbaabababaab
-aababbabbabbabbaabaaaaaabbbababbabbabbbbabbaabba
-aabbbbbababaaababbaaabaababababbbabbaaabaaabbbaabbbabbab
-ababbbabbabaaabaabaabaaababaaaaa
-abbbbbbabbbaabbaabbabaaabbbbabaaabbbbbaa
-bbaaaaabaabbaabaaabbabaa
-bbbbaabbabbbaababbaababa
-babababbababbbbabbabbaaa
-aabaabbbaaabbbaabbbbabaaabbababa
-abbbbbabaaabbaaaaabbbabaabbbbaaabbbaaabbbaaababa
-baabbaaaaaabaabbbaabbbaaaaabbbaaaabbaababaaaabbbaaaabbba
-abaaabbaababbaaababbaabaaaaaabababaabaab
-bbbabbabaababbbabaababaa
-bbaabbabbbbaabbabbbbaaab
-abbbbabababbbabbbbbbabbbbbabaaaaabbaaabb
-aabaabbbbbbbaabbabbabbbbaabaabbbbaabbaaaabaabbabaaaababbabbabbab
-aabaaaaabaaabaabbbabbaabaababbabbbaababababbbbab
-baabaabaabbaababababaaba
-aabaaaaaabbbbbabbaabaabb
-aabaaabbaaabbbbaaaaaaaaabaaaaaba
-babbbabbbbbbabbaaaabbaaabababbbbabbbaabbbaababbabbaabbbbabbbbbaabaaaabba
-baabaababaaabbbbabbaabba
-bbababaabbaabbbaabbbaabbababaaabbababbaaabbbaaabbbaabbbb
-abaaabbabbaaabbaaabaabaa
-babababbabbabbbbbababbaaaaabaabbaabaabbbabaaabababababaabaababab
-bbabaabbaababaabbbaabaaaabbbbaabaaaaaabb
-aababbaaabababbbbababbbbbbbbabbaabbaaaaabaababaa
-abaabbabbaaabbaabaaabbba
-bbbbaabaaababbababbbbbaa
-baaabbbbbbbbbaaabaabbaaabbaabaab
-aabbbababbababaaabbbaabbbbabaaab
-bbbaabaaabbbabbaabbbbaaaabbbaabbabababbaabbbababbbaabbbb
-aababbbabbabaababaaababbaabbbbaabbaabababbaaaabbaababaaa
-bbaababbbabaabaaaabbbbbb
-bbbabbbbabbabaaaababbbbabbbabaababaabbbbaababbbbabbbaaababbbabaabbabbbaa
-bababbbbaabbaaaabbabbbab
-bbabbabaaabaabbbaabbabaa
-baabaaaaababbaaabbbbbabb
-bababababbbbabbaabbaaaabaaabbabb
-baaaaaababaaaaabbbaaabbb
-ababbbbababababaabbabbab
-baabbbaaabbabbbbbbaaaabb
-bbbabaabbbaabbbabbabbbbb
-aabaababaaaabbabbabbabaa
-bbbbbabaabbbaaaabbaababaabaaababbbaabbabaababaaabbbaabaa
-abbbaababababbbbabababba
-bababbabbbbbabbabbbaababbaaabbabbabaabbaaabbbaabababbbaa
-baabbbaabbbabbbbbbaaabab
-abbbaabbaabaaabbbbbbababbbbbaabbbabaaabbabbbaaababbabbab
-bbbbaaaaababbbbbaabbabbabbbbbaababbababbbabbaaaabbabaaab
-bbbabbbbbaabaaababbbbaaaabbbabbbabbbabab
-abbbaababbbbbbbbaaaabbabbaaabbbb
-bbbababbaabbbabaabbbabab
-ababbaaabbaaaaabaaaababa
-bbbbabbaabaabbbabbabbbbbbbbbabbbaabbbababaaaabbaaaaaaabbbbaaaaaa
-bbabaabbabababbbaaabbbaabaaabbaaabababbbabbbaaaaaaaabbaa
-aaaaaaaaaaabbbbaaaabbabbaaaaabba
diff --git a/2020/19/solve.c b/2020/19/solve.c
index 7a8bfa6..ab42036 100644
--- a/2020/19/solve.c
+++ b/2020/19/solve.c
@@ -110,7 +110,12 @@ long part_two(FILE *fp)
char rule[64] = { 0 };
int ind = 0;
sscanf(line, "%d: %64[0-9a-z \"|]", &ind, rule);
- strcpy(rules[ind], rule);
+ if (ind == 8)
+ strcpy(rules[8], "42 | 42 8");
+ else if (ind == 11)
+ strcpy(rules[11], "42 31 | 42 11 31");
+ else
+ strcpy(rules[ind], rule);
} else if (paragraph == 1) {
ind = 0;
if (verify(line, rules[0]) == strlen(line) - 1)
@@ -123,20 +128,17 @@ long part_two(FILE *fp)
int main(int argc, char *argv[])
{
- FILE *fp1 = fopen("input1", "r");
- if (!fp1)
- exit(EXIT_FAILURE);
- FILE *fp2 = fopen("input2", "r");
- if (!fp2)
+ FILE *fp = fopen("input", "r");
+ if (!fp)
exit(EXIT_FAILURE);
clock_t tic = clock();
- printf("%lu\n", part_one(fp1));
- printf("%lu\n", part_two(fp2));
+ printf("%lu\n", part_one(fp));
+ rewind(fp);
+ printf("%lu\n", part_two(fp));
clock_t toc = clock();
printf("TIME: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC);
- fclose(fp1);
- fclose(fp2);
+ fclose(fp);
return 0;
}
diff --git a/2020/19/solve.js b/2020/19/solve.js
new file mode 100644
index 0000000..3ed997e
--- /dev/null
+++ b/2020/19/solve.js
@@ -0,0 +1,42 @@
+const { _, performance } = require("perf_hooks");
+const fs = require("fs");
+const data = fs.readFileSync("input", "utf8").split("\n\n");
+const rules = data[0].split("\n");
+const input = data[1].split("\n");
+
+function solve() {
+ const r = [];
+
+ rules.map((rule) => {
+ const tmp = {};
+ const arr = rule.split(": ");
+ tmp.orig = arr[1];
+ if (arr[1].indexOf('"') > -1) tmp.orig = arr[1][1];
+ r[arr[0]] = tmp;
+ });
+
+ let s = r[0].orig;
+ let match = s.match(/\d+/g);
+ while (match && match.length > 0) {
+ s = s.replace(match[0], "(" + r[match[0]].orig + ")");
+ match = s.match(/\d+/g);
+ }
+
+ const regexpStr = "^" + s.split(" ").join("") + "$";
+ let cnt = 0;
+ input.map((word) => {
+ if (word.match(regexpStr)) cnt++;
+ });
+
+ return cnt;
+}
+
+const tic = performance.now();
+console.log(solve());
+// Sorry for hardcoding :P
+rules[54] = "8: 42+";
+rules[64] =
+ "11: 42 31 | 42 (42 31 | 42 (42 31 | 42 (42 31 | 42 (42 31) 31) 31) 31) 31";
+console.log(solve());
+const toc = performance.now();
+console.log("TIME: " + ((toc - tic) / 1000).toFixed(6) + " seconds");
diff --git a/2020/README b/2020/README
index 78e5f27..d0aaae9 100644
--- a/2020/README
+++ b/2020/README
@@ -1,17 +1,19 @@
-Day 01: TIME: 0.007000 seconds
-Day 02: TIME: 0.000952 seconds
-Day 03: TIME: 0.000139 seconds
-Day 04: TIME: 0.003131 seconds
-Day 05: TIME: 0.000278 seconds
-Day 06: TIME: 0.023373 seconds
-Day 07: TIME: 0.068257 seconds
-Day 08: TIME: 0.026559 seconds
-Day 09: TIME: 0.019918 seconds
-Day 10: TIME: 0.000017 seconds
-Day 11: TIME: 0.046929 seconds
-Day 12: TIME: 0.000704 seconds
-Day 13: TIME: 0.000028 seconds
-Day 14: TIME: 0.040175 seconds
-Day 15: TIME: 7.057633 seconds
-Day 16: TIME: 0.000828 seconds
-Day 17: TIME: 0.224944 seconds
+Day 01: TIME: 0.006000 seconds
+Day 02: TIME: 0.000710 seconds
+Day 03: TIME: 0.000174 seconds
+Day 04: TIME: 0.001569 seconds
+Day 05: TIME: 0.000492 seconds
+Day 06: TIME: 0.021799 seconds
+Day 07: TIME: 0.056844 seconds
+Day 08: TIME: 0.021424 seconds
+Day 09: TIME: 0.012570 seconds
+Day 10: TIME: 0.000013 seconds
+Day 11: TIME: 0.036652 seconds
+Day 12: TIME: 0.000616 seconds
+Day 13: TIME: 0.000052 seconds
+Day 14: TIME: 0.023437 seconds
+Day 15: TIME: 4.195079 seconds
+Day 16: TIME: 0.000809 seconds
+Day 17: TIME: 0.196286 seconds
+Day 18: TIME: 0.000249 seconds
+Day 19: TIME: 0.924737 seconds