Compare commits
5 Commits
f8c29be7ef
...
0ea71abec3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ea71abec3 | ||
|
|
622f81a352 | ||
|
|
436e4376a2 | ||
|
|
c9b972148b | ||
|
|
9b0516c587 |
90
2024/gareth/day07/day07.go
Normal file
90
2024/gareth/day07/day07.go
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
package day07
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
total := 0
|
||||||
|
lines := strings.Split(strings.TrimSpace(input), "\n")
|
||||||
|
|
||||||
|
for i := 0; i < len(lines); i++ {
|
||||||
|
target, numbers := parseLine(lines[i])
|
||||||
|
if validLinePart1(numbers, 1, numbers[0], target) {
|
||||||
|
total += target
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
total := 0
|
||||||
|
lines := strings.Split(strings.TrimSpace(input), "\n")
|
||||||
|
|
||||||
|
for i := 0; i < len(lines); i++ {
|
||||||
|
target, numbers := parseLine(lines[i])
|
||||||
|
if validLinePart2(numbers, 1, numbers[0], target) {
|
||||||
|
total += target
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseLine(line string) (int, []int) {
|
||||||
|
parts := strings.Split(line, ":")
|
||||||
|
target, _ := strconv.Atoi(strings.TrimSpace(parts[0]))
|
||||||
|
numberStrings := strings.Fields(parts[1])
|
||||||
|
|
||||||
|
numbers := make([]int, len(numberStrings))
|
||||||
|
for i := 0; i < len(numberStrings); i++ {
|
||||||
|
numbers[i], _ = strconv.Atoi(strings.TrimSpace(numberStrings[i]))
|
||||||
|
}
|
||||||
|
|
||||||
|
return target, numbers
|
||||||
|
}
|
||||||
|
|
||||||
|
func validLinePart1(numbers []int, index int, currentValue int, target int) bool {
|
||||||
|
if index == len(numbers) {
|
||||||
|
return currentValue == target
|
||||||
|
}
|
||||||
|
|
||||||
|
sum := currentValue + numbers[index]
|
||||||
|
if validLinePart1(numbers, index+1, sum, target) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
product := currentValue * numbers[index]
|
||||||
|
if validLinePart1(numbers, index+1, product, target) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func validLinePart2(numbers []int, index int, currentValue int, target int) bool {
|
||||||
|
if index == len(numbers) {
|
||||||
|
return currentValue == target
|
||||||
|
}
|
||||||
|
|
||||||
|
sum := currentValue + numbers[index]
|
||||||
|
if validLinePart2(numbers, index+1, sum, target) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
product := currentValue * numbers[index]
|
||||||
|
if validLinePart2(numbers, index+1, product, target) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Turns 12 || 34 into 1234
|
||||||
|
concatenated, _ := strconv.Atoi(strings.TrimSpace(fmt.Sprintf("%d%d", currentValue, numbers[index])))
|
||||||
|
if validLinePart2(numbers, index+1, concatenated, target) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
33
2024/gareth/day07/day07_test.go
Normal file
33
2024/gareth/day07/day07_test.go
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package day07
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPart1(t *testing.T) {
|
||||||
|
r := Part1(`190: 10 19
|
||||||
|
3267: 81 40 27
|
||||||
|
83: 17 5
|
||||||
|
156: 15 6
|
||||||
|
7290: 6 8 6 15
|
||||||
|
161011: 16 10 13
|
||||||
|
192: 17 8 14
|
||||||
|
21037: 9 7 18 13
|
||||||
|
292: 11 6 16 20`)
|
||||||
|
assert.Equal(t, 3749, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPart2(t *testing.T) {
|
||||||
|
r := Part2(`190: 10 19
|
||||||
|
3267: 81 40 27
|
||||||
|
83: 17 5
|
||||||
|
156: 15 6
|
||||||
|
7290: 6 8 6 15
|
||||||
|
161011: 16 10 13
|
||||||
|
192: 17 8 14
|
||||||
|
21037: 9 7 18 13
|
||||||
|
292: 11 6 16 20`)
|
||||||
|
assert.Equal(t, 11387, r)
|
||||||
|
}
|
||||||
850
2024/gareth/day07/input.txt
Normal file
850
2024/gareth/day07/input.txt
Normal file
@@ -0,0 +1,850 @@
|
|||||||
|
31084: 8 67 8 735 38
|
||||||
|
40541461584: 5 81 9 4 32 43 283 228
|
||||||
|
6208: 915 6 2 539 148 29
|
||||||
|
306501986: 6 3 630 45 536 64 6
|
||||||
|
21276000: 8 5 5 91 6 5 8 6 8 985 2 8
|
||||||
|
1432991: 3 403 4 821 591 2 236
|
||||||
|
17115994: 69 321 254 764 3 99
|
||||||
|
19961295: 5 311 84 6 63
|
||||||
|
22953531: 22 95 35 2 8
|
||||||
|
18894343830: 90 5 3 2 65 7 159 2 91 1
|
||||||
|
4312695565: 158 8 716 615 95 59
|
||||||
|
391: 1 326 64
|
||||||
|
25202: 8 5 62 1 401
|
||||||
|
5324514: 6 8 466 59 169
|
||||||
|
658234: 3 83 592 97 57 4
|
||||||
|
26804472776473: 7 61 1 447 29 496 71 9
|
||||||
|
1503368: 653 23 18 824 625
|
||||||
|
24803314445: 5 2 4 4 417 1 987 4 447
|
||||||
|
1021069871: 7 3 2 7 9 37 2 2 8 5 58
|
||||||
|
1614: 63 645 4 3 31 868
|
||||||
|
4258805: 68 532 78 91 5
|
||||||
|
4495130022: 583 78 275 37 77
|
||||||
|
45111648: 47 98 45 855 998 46 6
|
||||||
|
2964501691711: 9 672 76 9 754 7 4 65
|
||||||
|
90685578359: 906 855 782 33 126
|
||||||
|
13608006: 3 5 7 7 3 602 7 4 7 720 6
|
||||||
|
4645623: 66 863 5 615 8
|
||||||
|
2569495: 443 74 7 71 5
|
||||||
|
134484: 68 55 4 77 9 2 327 4
|
||||||
|
1143450000: 24 750 35 264 5 1
|
||||||
|
5449: 4 2 907 7
|
||||||
|
23061783: 854 9 5 6 1 1 7 3 2 76 5
|
||||||
|
2930: 18 6 7 555 5
|
||||||
|
2115475: 9 194 8 54 42 5 31
|
||||||
|
19449: 6 1 9 4 4 769 8 1 79 905
|
||||||
|
4595553: 298 3 4 257 5 3 345 45
|
||||||
|
208314087: 7 3 877 815 9 9 3 2 6 51
|
||||||
|
2905504: 46 58 514 626 763
|
||||||
|
963368: 48 425 484 6 370
|
||||||
|
9980664: 1 98 80 5 98 68
|
||||||
|
652568: 7 197 871 290 68
|
||||||
|
45827: 15 3 665 9 154
|
||||||
|
722: 2 21 337 5 357
|
||||||
|
27652464029930: 7 829 9 700 7 9 3 7 4 1 8
|
||||||
|
6868809: 45 2 9 848 9
|
||||||
|
1175: 7 5 98
|
||||||
|
2133: 17 2 5 36 5
|
||||||
|
528: 55 1 5 8 9 31
|
||||||
|
8206806: 1 4 9 4 99 6 24 97 2 5 6 5
|
||||||
|
37530658373: 1 2 8 5 8 4 5 7 3 946 373
|
||||||
|
65484738025: 47 5 4 43 8 6 43 7 7 26 5
|
||||||
|
2157: 8 2 1 93 8 568
|
||||||
|
23082508: 7 5 3 3 2 5 8 477 2 3 1 1
|
||||||
|
29090880: 45 28 37 8 78
|
||||||
|
1262763: 1 1 27 729 93 16 2 75
|
||||||
|
1409848204234: 7 87 622 84 820 42 34
|
||||||
|
3304: 6 55 4
|
||||||
|
1196013120: 8 340 179 35 192
|
||||||
|
124278235: 4 4 69 225 78 235
|
||||||
|
2735190615: 273 2 3 1 906 1 5
|
||||||
|
52192: 104 89 6 45 10 72
|
||||||
|
573777850: 680 31 807 8 50
|
||||||
|
35694425: 82 38 921 61 871 84 2
|
||||||
|
658877085778: 7 86 55 156 10 977 8
|
||||||
|
20860682976: 546 3 7 930 7 954 42 6
|
||||||
|
224616: 441 46 8 36 73 8 3 45 7
|
||||||
|
358087: 7 236 9 45 2 9 3 9 6 4 2 5
|
||||||
|
6354432: 55 792 7 153 639 7
|
||||||
|
1923524: 177 175 9 3 3 528 21
|
||||||
|
117340: 9 82 159
|
||||||
|
1234059: 64 357 9 45 6
|
||||||
|
2651349895: 8 526 4 7 9 1 6 42 9 89 5
|
||||||
|
3884759: 737 251 3 5 7
|
||||||
|
633925731: 346 4 3 5 472 9 7 9 4 8 9
|
||||||
|
43555: 37 4 60 25 53 77
|
||||||
|
4230519: 2 2 12 8 9 9 91 41 2 5 2 3
|
||||||
|
5489: 69 8 9 515 6
|
||||||
|
82630872: 33 1 2 19 81 9 4 5 6 6 33
|
||||||
|
203340489: 181 55 1 4 112 9
|
||||||
|
72068: 7 197 4 5 9
|
||||||
|
168389664: 1 683 84 5 667
|
||||||
|
30367442: 2 657 6 4 384 5 673 49
|
||||||
|
2846739576: 4 8 743 9 3 9 829 719 6
|
||||||
|
78401: 77 4 9 93 5
|
||||||
|
627886555182: 1 61 78 8 65 4 57 94 82
|
||||||
|
53361: 85 3 592 1 63
|
||||||
|
154268: 48 43 3 892 4 8 3 8 1
|
||||||
|
525075263: 656 34 4 8 6 6
|
||||||
|
248294606: 6 896 24 1 83 9 4 1 7 75
|
||||||
|
9082152: 182 66 9 8 6 7 7 2 195 2
|
||||||
|
1657909631: 8 5 76 7 5 95 2 9 22 544
|
||||||
|
484430: 2 5 64 7 49 961 83 3
|
||||||
|
11192683920: 6 26 7 8 5 8 6 3 8 372 1 1
|
||||||
|
52887178: 4 863 61 118 60
|
||||||
|
896861: 88 9 7 671 4 187
|
||||||
|
721710054179: 135 891 60 541 81
|
||||||
|
12403134: 92 6 34 58 6 5 7 9 6 6
|
||||||
|
33615296: 312 44 55 9 3 1 572
|
||||||
|
183192: 35 8 5 5 612 28 71 3 4 8
|
||||||
|
1244794661146: 6 4 9 6 1 6 4 57 7 685 8 6
|
||||||
|
362827266: 86 643 395 8 738 813
|
||||||
|
1477891785: 86 6 2 8 13 2 91 7 1 8 8
|
||||||
|
5983: 3 888 5 291 2 57 6
|
||||||
|
73739569: 668 6 687 89 6 69
|
||||||
|
902757501: 855 24 627 1 63 26 9
|
||||||
|
177442819: 6 9 401 2 4 52 256 4 3
|
||||||
|
87403263: 95 920 3 191 7 65
|
||||||
|
223398085: 57 3 1 8 11 50 45 8 9 85
|
||||||
|
76471: 81 472 2 1 6
|
||||||
|
102739: 1 284 1 8 9 1
|
||||||
|
98723250300: 79 119 1 1 2 143 5 7 21
|
||||||
|
37813543: 28 4 5 813 540
|
||||||
|
21449386021: 185 4 9 9 3 6 4 46 7 1 3 8
|
||||||
|
355140846: 39 4 6 90 845
|
||||||
|
25511824797: 3 7 4 746 48 55 3 15
|
||||||
|
11681963: 5 76 9 67 1 35 3 8 50 3 2
|
||||||
|
10812636790: 3 778 3 954 790
|
||||||
|
144: 90 14 40
|
||||||
|
2954988: 6 3 3 16 4 95 2 1 7 3 9 3
|
||||||
|
1666626: 282 573 74 39 1 46
|
||||||
|
380854191760: 2 7 24 5 54 177 5 5 664
|
||||||
|
20485976: 47 155 643 323 3 8
|
||||||
|
562264400: 8 1 3 1 5 74 3 67 309 88
|
||||||
|
5054: 67 3 55 599 604
|
||||||
|
5790: 8 6 4 3 7 43 1 9 8 4 17 6
|
||||||
|
1423: 232 6 23 2 6
|
||||||
|
2214885600: 1 5 2 1 3 50 183 41 82 3
|
||||||
|
586061: 507 69 31 975 3
|
||||||
|
68594249: 2 9 373 9 50 340 3 32 6
|
||||||
|
380980: 95 4 980
|
||||||
|
7510: 5 4 825 4 71 9
|
||||||
|
451918: 90 50 18 11 106
|
||||||
|
16294: 29 134 8 65 4 1 455 3
|
||||||
|
10536237: 6 6 3 9 1 1 4 724 4 5 1 97
|
||||||
|
24566372: 1 34 8 3 90 592 85 87
|
||||||
|
284990: 5 5 5 91 7 5 88 5
|
||||||
|
1108832032: 80 93 29 3 727 88
|
||||||
|
215422984: 63 82 417 8 70 1
|
||||||
|
37636247: 3 875 3 39 615 6 73 5 2
|
||||||
|
511718662: 3 505 3 718 23 42 9
|
||||||
|
172674894: 6 76 9 6 7 5 6 6 7 7 22 2
|
||||||
|
2494298: 21 8 468 606 6
|
||||||
|
1164891: 12 97 891
|
||||||
|
1303421387: 8 604 17 5 6 48 95 87
|
||||||
|
113169: 242 889 55 7 6
|
||||||
|
28083319654: 7 1 6 2 780 4 8 9 9 3 8 7
|
||||||
|
689769: 2 479 72 6
|
||||||
|
664006: 603 60 997 9
|
||||||
|
383810: 312 123 4 7
|
||||||
|
278838736: 254 851 15 86 76
|
||||||
|
35266920: 4 8 65 481 94
|
||||||
|
2342060: 5 55 2 43 99 710
|
||||||
|
61499384: 760 4 83 423 2 4
|
||||||
|
1337677: 769 562 5 67 3 9 13
|
||||||
|
20708670: 1 7 8 1 9 9 6 70 6 1 3 57
|
||||||
|
22607703347: 23 6 7 6 7 67 80 39 44
|
||||||
|
422584: 1 6 185 2 95 23 1 878
|
||||||
|
16961283369: 7 614 720 9 609 1 9
|
||||||
|
7743900: 12 80 8 38 33 75 525
|
||||||
|
5198: 5 14 5 5 3
|
||||||
|
7706: 5 765 6
|
||||||
|
60799047884: 9 6 5 331 7 2 2 6 3 3 5 87
|
||||||
|
373279812855: 74 65 5 946 16 571 5
|
||||||
|
273426612: 519 24 87 2 656 3 958
|
||||||
|
449: 250 94 8 9 88
|
||||||
|
69949442: 8 92 4 1 15 33 8 3 1 2 2
|
||||||
|
2540247614: 578 3 346 73 29 5 5 9 2
|
||||||
|
72710790952: 99 4 87 255 85 7 4
|
||||||
|
43727113667: 3 1 333 66 106 71 2 4 7
|
||||||
|
74125836117: 4 5 52 6 25 35 9 3 521
|
||||||
|
527906: 54 9 9 931 29
|
||||||
|
139782: 11 33 6 526 918
|
||||||
|
19218: 704 402 9 522 284 8
|
||||||
|
8668810: 40 8 6 3 6 2 84 2 2 75 7 3
|
||||||
|
1487663526: 9 9 517 70 2 6 2 5 94 8 4
|
||||||
|
20610: 1 152 3 2 45
|
||||||
|
359112: 323 5 47 54 7 6 3 8 4 2 4
|
||||||
|
3198: 1 7 8 8 24 7 1 4 41 7 27
|
||||||
|
41189: 13 9 3 624 5
|
||||||
|
4720776758223: 47 20 776 758 222
|
||||||
|
195264: 4 2 339 36 2
|
||||||
|
16012371600: 6 9 6 3 6 3 95 3 76 4 185
|
||||||
|
3864074: 3 4 426 84 73
|
||||||
|
45674415: 42 4 9 7 82 410 5
|
||||||
|
1175718380: 6 340 5 911 746
|
||||||
|
51156: 3 4 4 540 87
|
||||||
|
4831584: 2 43 8 2 55 5 7 5 69 96
|
||||||
|
874516400: 874 5 16 368 32
|
||||||
|
220190: 7 974 32 38 1 7 4 172 4
|
||||||
|
429894584: 1 9 5 7 5 98 94 9 6 9 58 4
|
||||||
|
114640: 3 7 31 52 7 6 1 772 299
|
||||||
|
10759: 23 1 6 12 7 2 1 4 81 28 7
|
||||||
|
360390945715: 2 431 696 27 213 20 5
|
||||||
|
3140056: 783 9 5 1 43 9 8 864
|
||||||
|
15606936: 96 6 40 639 172
|
||||||
|
1134226: 9 824 46 152 2
|
||||||
|
640: 5 32 2 2
|
||||||
|
46339061240: 7 20 9 987 5 715 618
|
||||||
|
35646030: 42 1 885 137 7
|
||||||
|
271367519: 7 45 964 127 96 893
|
||||||
|
495104: 1 960 8 56 64
|
||||||
|
3480: 7 1 12 3 1 40
|
||||||
|
2608290: 91 95 46 3 3 30
|
||||||
|
55890251: 1 65 7 9 4 81 454 3 582
|
||||||
|
541872: 774 7 46 2 27
|
||||||
|
309960637: 8 43 4 90 640
|
||||||
|
14270: 44 8 875 1 9 6 1 8 3 5 5
|
||||||
|
2461824: 1 4 1 9 7 12 61 71 1 4 1 8
|
||||||
|
53575: 6 73 9 7 118 3
|
||||||
|
3128658: 93 9 2 2 20 8 94 331 7
|
||||||
|
223592: 5 43 381 5 9 4 5 884 8
|
||||||
|
12112807054: 870 119 7 61 15 274 4
|
||||||
|
27775914: 6 1 781 1 9 18 4 3 5 889
|
||||||
|
279477744: 33 3 9 411 87 763
|
||||||
|
9896932013: 647 3 331 353 343 46
|
||||||
|
8127207475: 8 1 2 720 3 4 29 9 4 91 3
|
||||||
|
3683665: 981 751 5 5 8
|
||||||
|
7203976: 3 51 7 5 629 3 5 9 9 8 5 4
|
||||||
|
12182439609: 5 57 9 9 9 7 9 8 4 320 3 3
|
||||||
|
6547981: 9 727 2 47 84
|
||||||
|
269451007: 9 262 62 4 992
|
||||||
|
1760418: 99 34 1 5 99 96 4 27 6
|
||||||
|
4881246: 5 3 46 2 4 67 57 8
|
||||||
|
104401: 68 69 8 72 1
|
||||||
|
57612060: 6 270 53 61 11
|
||||||
|
65336211: 92 71 912 169 540 1
|
||||||
|
1056886344323: 8 990 3 9 1 6 18 695 64
|
||||||
|
431112: 3 19 108 92 69
|
||||||
|
1497953467: 1 640 5 8 6 9 38 65
|
||||||
|
20122455: 24 76 903 9
|
||||||
|
112719469: 32 80 7 13 6 456 4 6
|
||||||
|
1178483161: 18 8 6 29 75 754 4 3 4
|
||||||
|
119908723232: 48 39 7 5 3 73 8 64 30
|
||||||
|
21106565: 350 1 37 4 966 2 1 7 2 2
|
||||||
|
70193: 4 53 9 2 7 701 59 746 4
|
||||||
|
3034: 21 45 68 816 3
|
||||||
|
3005: 2 89 24 92 7 58
|
||||||
|
81430304: 124 4 989 2 83
|
||||||
|
22260548: 7 15 212 54 7
|
||||||
|
494808: 87 6 665 6 8
|
||||||
|
6723: 4 81 13 457 13
|
||||||
|
463069864051: 995 8 4 91 7 465 10
|
||||||
|
913887: 3 6 7 2 752 9 5 1 36 5 2 1
|
||||||
|
824408862: 82 43 9 86 8 94 6 5
|
||||||
|
3431928092169: 5 3 67 76 755 15 362 6
|
||||||
|
502132176: 9 109 624 964 702
|
||||||
|
83412526: 1 4 7 2 27 405 3 1 721 8
|
||||||
|
407094: 27 7 60 433 7 5
|
||||||
|
701412: 2 5 84 648 97 836 8
|
||||||
|
25707842242: 311 3 2 3 711 8 8 2 2 42
|
||||||
|
505119: 1 44 41 7 40
|
||||||
|
295936440: 9 27 963 89 272 4 38
|
||||||
|
59813: 595 97 657 457 984
|
||||||
|
297534: 348 61 1 1 2 7 296 46
|
||||||
|
143500: 618 32 8 31 19 1 82 7
|
||||||
|
138312966147: 5 29 5 3 2 2 7 50 4 8 96 2
|
||||||
|
311740: 5 76 5 37 1 1 597 3 20
|
||||||
|
4908292: 9 785 31 59 5
|
||||||
|
6141663: 204 7 25 3 5 1 7 2 9 6 2 2
|
||||||
|
746258: 1 3 61 6 48 21 4 11 81 5
|
||||||
|
310680: 6 7 59 782 9 45 8
|
||||||
|
170615594: 447 3 7 74 35 7 7 6 6 6 2
|
||||||
|
160656040: 75 78 105 603 7
|
||||||
|
5577322182: 47 49 942 2 24 5 7 1 2 7
|
||||||
|
48328: 3 7 4 7 9 149 9 456 7 3 7
|
||||||
|
155259452737: 56 746 874 2 8 342
|
||||||
|
35341: 5 76 93 1
|
||||||
|
22236341: 3 381 88 641 5 1
|
||||||
|
44989863673: 96 6 5 6 71 2 3 381 7 3 3
|
||||||
|
606: 4 80 50 4 70
|
||||||
|
12733: 65 9 2 86 5
|
||||||
|
22463298: 24 88 3 5 80 1 4 89 8
|
||||||
|
377019478: 6 748 5 1 3 4 1 9 7 2 3 8
|
||||||
|
19642752: 696 5 7 544 51
|
||||||
|
702511961: 887 792 1 7 961
|
||||||
|
6024648: 8 86 75 47 168
|
||||||
|
104509650: 5 1 482 62 72 597 7 70
|
||||||
|
1135227: 2 218 25 27 45 5 5
|
||||||
|
224: 2 4 6 2 86 100
|
||||||
|
173902: 99 277 462 89 4 99
|
||||||
|
823929: 9 9 8 5 929
|
||||||
|
25781529: 60 9 8 4 7 65 9 2 4 213 9
|
||||||
|
15984006: 38 6 5 9 727 7 6 4 96 1 5
|
||||||
|
911: 7 6 1 868 1
|
||||||
|
1319338035: 7 6 1 7 6 438 1 448 5 87
|
||||||
|
281978: 561 4 9 5 5 56 1 4 1 9 5 3
|
||||||
|
26739745316256: 3 772 8 21 75 45 5 75 5
|
||||||
|
804636: 50 6 26 542 927
|
||||||
|
4368: 9 87 1 8 42
|
||||||
|
1339970241787: 2 6 8 17 4 82 9 29 4 95 2
|
||||||
|
27896197888: 8 8 849 619 66 521
|
||||||
|
1624907806241: 9 270 3 9 649 18 9 44 1
|
||||||
|
804053256: 531 30 7 9 25 91 6
|
||||||
|
19887: 394 48 682 27 264
|
||||||
|
576579196: 34 7 5 75 6 8 1 5 5 5 91 9
|
||||||
|
4075638918: 886 5 23 97 1 5 4 7 48
|
||||||
|
1242184922: 7 4 5 7 88 9 393 4 925
|
||||||
|
816: 5 2 5 6 45 6
|
||||||
|
16640: 34 60 177
|
||||||
|
55047199922: 5 674 9 97 58 8 985 7 1
|
||||||
|
202: 1 57 3 8 1 4 28 2
|
||||||
|
128584480: 34 6 835 650 94 8
|
||||||
|
14447: 166 3 28 420 83
|
||||||
|
302594: 5 6 2 511 83
|
||||||
|
100153: 4 389 35 70 60 43 450
|
||||||
|
2185551: 38 3 43 19 3
|
||||||
|
6746: 4 6 583 93 784 39
|
||||||
|
3486469538: 8 47 3 40 786 7 9 1 19
|
||||||
|
2105210: 7 4 8 2 6 9 8 31 7 56 3 2
|
||||||
|
47524069: 6 4 610 811 106 4 85 8
|
||||||
|
24206: 25 599 13 2 19
|
||||||
|
83444222: 309 3 9 96 1 8 38 21
|
||||||
|
1157600: 383 930 42 92 800
|
||||||
|
135424: 274 494 29 6 33
|
||||||
|
41759168088: 63 4 91 3 77 2 33 9 94
|
||||||
|
912: 6 1 9 58 1 838
|
||||||
|
1483426560: 4 6 1 69 801 406 692 6
|
||||||
|
1291767304: 41 475 889 4 88 65 8
|
||||||
|
4740630: 941 32 56 2 87
|
||||||
|
145255683: 6 928 2 270 96 3 3
|
||||||
|
2804256: 2 563 36 41 6 91 8
|
||||||
|
3662: 592 6 91 11 8
|
||||||
|
2070609492: 9 460 7 1 66 352 9 8 5
|
||||||
|
58896: 73 2 5 17 5 15 8
|
||||||
|
161664199: 5 9 8 9 746 32 2 1 9 8
|
||||||
|
28767133: 6 69 10 43 37 96
|
||||||
|
321150750: 6 3 33 7 6 191 1 74 355
|
||||||
|
32221373185: 931 4 3 78 56 33 8
|
||||||
|
125188150: 1 84 8 299 7 6 3 623 38
|
||||||
|
529: 1 2 63 54 350
|
||||||
|
371329981: 53 730 8 78 760 4 57 1
|
||||||
|
8636010413: 34 6 1 516 8 4 4 82 1 1 1
|
||||||
|
16436: 8 8 36 7 70
|
||||||
|
2610384: 6 74 93 329 8 42
|
||||||
|
2511598: 21 497 80 7 10 12 5
|
||||||
|
2051303: 68 6 53 523 6 91
|
||||||
|
3583491: 58 3 3 8 852 79 4 5 5 46
|
||||||
|
2567: 5 3 32 4 3
|
||||||
|
37412197: 63 94 238 46 197
|
||||||
|
660996: 61 61 7 43 18
|
||||||
|
772595115: 1 7 2 25 4 2 314 72 5 8 6
|
||||||
|
1125072: 6 82 64 2 3 7 444 2 3 48
|
||||||
|
40030036: 9 68 7 66 646
|
||||||
|
26483808: 5 6 9 862 16 33 96
|
||||||
|
89503594: 2 91 80 112 72 61
|
||||||
|
34849136: 7 14 6 1 9 857 68 88
|
||||||
|
1052469452651: 5 94 9 5 5 5 9 870 8 8 3 8
|
||||||
|
2333026: 2 9 1 8 36 9 5 5 75 1 7 9
|
||||||
|
2142047: 55 2 6 1 60 3 9 40 6 5
|
||||||
|
18329059: 1 7 398 2 523 11 1
|
||||||
|
1515: 1 5 216 3 1 214
|
||||||
|
636751072: 65 7 58 3 967 7 759 9 4
|
||||||
|
65121: 3 648 21
|
||||||
|
1203384: 855 2 9 12 7
|
||||||
|
1231: 567 1 29 21 1 612
|
||||||
|
5830477499: 416 2 925 357 7
|
||||||
|
39904736: 2 2 987 58 51 2 1 8
|
||||||
|
7192: 4 881 3 11 8
|
||||||
|
984797352: 86 84 99 3 1 459
|
||||||
|
4330380: 444 3 8 3 797 7 6 9 1 5 6
|
||||||
|
174675: 8 41 206 75 824 530
|
||||||
|
644000: 2 4 89 4 17 7 92 14 1 4
|
||||||
|
275310: 6 11 31 58 888 4 2 9 2
|
||||||
|
2980025: 29 72 7 96 4 61
|
||||||
|
1100140: 3 8 9 91 3 9 466 5 6 8 3 9
|
||||||
|
26416153: 5 3 64 9 4 764 7 7 5 4 6 7
|
||||||
|
392307: 644 22 589 2 30
|
||||||
|
1703108: 23 789 9 532 7 8
|
||||||
|
84496967641: 9 8 7 71 696 158 605 9
|
||||||
|
4926: 5 47 3 5 2 6 60
|
||||||
|
1238: 7 20 5 8 75
|
||||||
|
4166368: 4 8 393 74 22 7
|
||||||
|
264286: 5 5 2 6 11 26 80 115 8 6
|
||||||
|
5390070: 38 5 77 813 35 3 54 8 6
|
||||||
|
7109213251: 798 2 5 88 89 50
|
||||||
|
11479038526: 245 1 5 7 333 456 3 7 9
|
||||||
|
35577532: 71 155 500 25 5
|
||||||
|
516: 7 4 6 4 1 70 9 66 1 5 39 2
|
||||||
|
12159: 9 6 1 225 9
|
||||||
|
593081: 1 92 6 4 343 2 6 8 3 41
|
||||||
|
52698: 89 592 7
|
||||||
|
36739952992513: 9 4 779 4 627 92 4 8 3 7
|
||||||
|
2006: 22 8 90 75 5 8
|
||||||
|
83601: 68 30 8 5 1 56 3 1 3 7
|
||||||
|
478266: 1 4 8 6 3 724 612 8 286
|
||||||
|
297000: 49 50 820 9 90 6 88
|
||||||
|
1229910807: 262 102 46 6 600 807
|
||||||
|
185356128: 44 5 401 7 82 115 48
|
||||||
|
246521: 787 6 4 6 307
|
||||||
|
86285202: 25 96 42 856 402
|
||||||
|
23586: 70 1 3 52 9 5
|
||||||
|
18086584: 46 6 144 8 27 534 7
|
||||||
|
33690: 4 69 4 56 89
|
||||||
|
46311716: 12 3 41 18 619 6
|
||||||
|
214023: 5 793 66 7 53 9
|
||||||
|
6755: 270 2 799 12 5
|
||||||
|
14223284: 9 9 7 5 7 8 2 111 1 45 4 8
|
||||||
|
2291081: 3 2 632 725 81
|
||||||
|
284789717303: 605 3 9 3 960 30 47 49
|
||||||
|
17262: 105 4 3 1 3 9 3 240 2 7 1
|
||||||
|
157051: 9 7 6 181 6 9 3 3 451 81
|
||||||
|
1349805670: 59 4 874 26 71
|
||||||
|
2361910101: 5 623 7 3 38 6 8 1 3 1 8 2
|
||||||
|
45459840: 8 42 71 1 3 8 4 9 8 9 384
|
||||||
|
644841302: 7 658 2 70 62 68 2
|
||||||
|
196349: 69 6 192 81 2 4
|
||||||
|
25233495: 14 6 1 3 34 83 14
|
||||||
|
2502364627: 9 73 7 1 76 4 7 95 8 5 27
|
||||||
|
891841251: 79 62 560 2 63 6 51
|
||||||
|
526: 95 9 4 1 417
|
||||||
|
46610701: 46 605 5 697 4
|
||||||
|
101160: 5 5 6 5 9 4 873 8 4 3 3 63
|
||||||
|
74700: 86 2 765 47 83
|
||||||
|
487499: 9 52 6 6 85 502
|
||||||
|
12930315: 4 77 3 9 48 9 1 5
|
||||||
|
818480: 3 4 8 966 10 3 7 1 4 5 4 1
|
||||||
|
8956575: 6 8 827 5 676 864 35
|
||||||
|
6467920693: 5 8 5 48 652 1 8 8 1 3 8 5
|
||||||
|
877: 71 10 689 32 75
|
||||||
|
53325209060: 554 965 941 2 53
|
||||||
|
23291024284082: 9 42 193 47 6 9 515 48
|
||||||
|
929424926: 3 6 29 42 492 5
|
||||||
|
17829266: 6 56 4 53 63
|
||||||
|
12276: 2 5 55 3 66
|
||||||
|
181712606: 595 74 75 412 6
|
||||||
|
8831966: 2 56 30 2 2 39 65 2 9 8 7
|
||||||
|
661454663997: 231 3 453 350 8 10 78
|
||||||
|
237094: 3 3 311 50 646 12
|
||||||
|
5707220457: 71 82 86 966 4 920 55
|
||||||
|
152255376595: 76 17 40 820 65 163
|
||||||
|
1347305: 9 4 8 65 664 3 4 3 701 9
|
||||||
|
70155: 91 2 88 257 706 58 1
|
||||||
|
60468016: 640 1 23 5 27 726 812
|
||||||
|
408075824: 40 74 6 758 22
|
||||||
|
149767280436: 1 221 860 788 436
|
||||||
|
1581985302: 83 9 258 3 8 38 72 3 6
|
||||||
|
157694208: 94 8 52 3 5 15 56 1 3 8
|
||||||
|
3814512: 5 6 4 8 8 5 6 5 5 37 9
|
||||||
|
4548610: 66 9 3 3 7 57 50 1 9
|
||||||
|
21119484: 38 822 28 29 876
|
||||||
|
5946398: 661 589 67 71 91 57
|
||||||
|
151648362: 894 75 5 9 93 54 317
|
||||||
|
10321152: 99 807 712 2 8
|
||||||
|
114489: 6 5 4 8 31 84 37 9
|
||||||
|
145909: 75 70 909
|
||||||
|
106820010: 722 269 10 2 55
|
||||||
|
1480075: 44 2 198 9 3 71 691 6 7
|
||||||
|
28827: 19 1 5 7 6 9 78 1 8 849 3
|
||||||
|
7566: 7 244 8 141 62 23 5 83
|
||||||
|
5508361: 495 4 214 13 1
|
||||||
|
4988516: 5 33 55 12 568 66 2 97
|
||||||
|
184373: 1 9 7 9 5 1 1 33 9 11 20
|
||||||
|
199283931852: 3 5 8 4 158 6 3 539 855
|
||||||
|
1666857472580: 77 654 23 180 331
|
||||||
|
14487733: 557 891 68 9 9 5 828
|
||||||
|
1198391800: 231 965 8 84 2 93 1 4 2
|
||||||
|
126143604: 86 2 6 463 88 55 5 3
|
||||||
|
153392452209: 6 482 7 3 939 11 5 4 9 7
|
||||||
|
12681: 5 7 2 9 4 7 44 2 5 65 4 9
|
||||||
|
989: 1 9 99
|
||||||
|
93840: 98 38 46 15
|
||||||
|
217780: 419 3 516 23 5
|
||||||
|
33264: 447 87 973 5 22
|
||||||
|
7178025: 995 9 5 2 87 7 527 20 5
|
||||||
|
9028: 3 83 7 5 3
|
||||||
|
12935: 711 5 6 3 47
|
||||||
|
3659499181: 365 925 6 229 9 5 181
|
||||||
|
701521: 9 4 3 64 7 61 8 26 67 53
|
||||||
|
340704429: 52 78 84 319 7 7 99
|
||||||
|
62241150: 7 176 842 8 77 6
|
||||||
|
112424: 5 1 8 936 82 8 183 92
|
||||||
|
723672: 347 67 1 2 874
|
||||||
|
3066: 51 5 8 8 8 898
|
||||||
|
1274880: 23 52 542 9 87
|
||||||
|
2517506958: 37 68 780 726 9 59
|
||||||
|
110283391: 3 52 3 53 8 3 8 6 3 903 1
|
||||||
|
4536: 83 5 81 9 747 2
|
||||||
|
87466: 19 46 6 3
|
||||||
|
605783111392: 404 91 601 37 741 4
|
||||||
|
58853775: 4 485 79 4 384 399
|
||||||
|
47889063: 516 64 89 984 999 29
|
||||||
|
23241016: 7 3 5 5 6 1 3 819 27 9 9 1
|
||||||
|
27260572330: 9 9 7 9 28 57 2 3 8 2 5 5
|
||||||
|
233756964: 61 958 6 5 1 5 26 8 314
|
||||||
|
781268: 376 6 743 4 692 1
|
||||||
|
69945120: 7 4 539 5 113 5 6 4 7 73
|
||||||
|
267715242: 92 8 663 9 4 3 632 3 1 2
|
||||||
|
1896465174: 976 920 1 4 651 72
|
||||||
|
2800123: 203 8 17 9 384 23
|
||||||
|
206464: 3 7 3 186 1
|
||||||
|
127766017: 74 12 9 35 714 1 24 1
|
||||||
|
24: 7 5 1 9 3
|
||||||
|
10510918116: 59 46 109 181 15
|
||||||
|
3621981: 2 248 954 2 1 3 9 78
|
||||||
|
7258534: 70 96 523 840 898
|
||||||
|
12932425: 928 6 43 57 8 54 1 3 9 7
|
||||||
|
40426441: 6 8 7 7 3 8 1 2 1 18 509 9
|
||||||
|
258400: 70 120 34 40
|
||||||
|
895: 81 303 38 2 51
|
||||||
|
80809920: 932 69 727 47 995
|
||||||
|
21779938: 9 411 92 64 226
|
||||||
|
1613: 4 401 4 7
|
||||||
|
43158803498: 36 222 9 7 26 39 6 9 9 1
|
||||||
|
4366703135: 57 7 93 7 2 70 982 8 6
|
||||||
|
167694750: 9 89 350 76 598
|
||||||
|
1913663802: 64 299 63 6 2 10 2
|
||||||
|
1444191: 556 9 11 4 6 5 1 41 83 7
|
||||||
|
1003880435: 19 82 746 977 863
|
||||||
|
4155: 72 810 13 4 575
|
||||||
|
96614034: 15 6 361 72 6 2 3 6 59
|
||||||
|
1688: 5 9 1 5 3 8 8
|
||||||
|
41338714328: 41 338 639 75 328
|
||||||
|
9197318140: 2 59 6 1 690 8 1 5 227 4
|
||||||
|
46479360: 61 7 4 2 9 7 39 272 6 5 8
|
||||||
|
404048233: 951 7 8 576 2 4 235
|
||||||
|
11494468882: 3 187 5 9 1 3 24 2 6 7 5 7
|
||||||
|
1922: 6 233 457 6 61
|
||||||
|
6955: 9 7 8 4 5 7 4 2 4 5 202 5
|
||||||
|
31285182: 23 136 506 7 63 52
|
||||||
|
8117862: 437 1 6 921 2 381 46 6
|
||||||
|
47589: 9 94 374 39 7
|
||||||
|
2256037: 60 376 39
|
||||||
|
2527024499: 4 3 1 7 8 10 3 1 6 51 91
|
||||||
|
37690: 3 720 52 6 1 88 1
|
||||||
|
4175256007: 4 8 5 39 20 2 34 2 23
|
||||||
|
380247474471: 2 4 2 45 497 88 5 7 2 7 1
|
||||||
|
21474: 9 9 9 1 17 4 784 8 4 39 9
|
||||||
|
3277745: 18 2 5 4 414 89 271
|
||||||
|
20611117618: 3 3 2 4 8 1 4 9 39 76 19
|
||||||
|
6706090709: 799 2 3 1 8 9 8 4 7 872
|
||||||
|
5792: 618 29 68 8 3 69
|
||||||
|
410827821: 4 927 73 453 16 409
|
||||||
|
233173828: 3 74 634 6 896 3 4 7 5 6
|
||||||
|
187959: 119 32 2 556 23
|
||||||
|
486043544: 3 230 57 52 54 74 62 7
|
||||||
|
2347696: 4 1 35 40 19 769 8
|
||||||
|
4278588041013: 44 7 29 4 7 456 7 4 684
|
||||||
|
5637600: 58 9 54 25 8
|
||||||
|
4977330: 9 7 6 79 3 9 8 838 3 4 7 6
|
||||||
|
22497: 82 79 983 1 1 3 9 102
|
||||||
|
35382699154: 77 617 2 14 2 46 554
|
||||||
|
16502056: 8 6 58 319 488 5 819
|
||||||
|
756793: 88 3 3 944 192 3 1 72
|
||||||
|
4214: 6 697 1 5 27
|
||||||
|
12450094: 2 2 2 6 3 629 9 857 5 9 4
|
||||||
|
1618088: 76 4 6 1 7 7 62 90 5 1 8
|
||||||
|
1060491: 3 361 14 906 66 1
|
||||||
|
266689086: 3 2 17 83 5 6 8 42 6 5 3 3
|
||||||
|
68560832: 3 1 82 6 8 5 3 308 2 1 2
|
||||||
|
1326: 423 846 4 1 8 44
|
||||||
|
68085: 674 6 78 7
|
||||||
|
1840707: 85 9 62 6 804 4 3
|
||||||
|
13403416: 2 1 3 5 4 65 7 8 7 3 933
|
||||||
|
2093: 56 6 868 26 614 9 8
|
||||||
|
12213922: 73 703 14 1 17
|
||||||
|
224283: 640 7 4 5 8 4
|
||||||
|
97770: 1 214 7 27 1 8 378
|
||||||
|
25990: 6 5 5 87 2 7 767 6 92 4
|
||||||
|
299184551: 325 2 92 544 7
|
||||||
|
63062194: 70 9 605 7 46 123 825
|
||||||
|
68322843482: 28 244 28 434 82
|
||||||
|
37380255: 80 1 935 87 493 4 5
|
||||||
|
305472677: 509 6 7 267 7
|
||||||
|
46: 1 45 2
|
||||||
|
2250: 29 1 75 6 69
|
||||||
|
191773: 19 176 5 8
|
||||||
|
91083792: 4 7 236 878 7 5 6 4 3 1 1
|
||||||
|
335524376: 8 53 51 68 668 158
|
||||||
|
29640281671: 7 8 4 6 3 5 7 44 7 8 8 90
|
||||||
|
497340: 9 3 762 7 3 6 3 5 6
|
||||||
|
279527: 402 67 149 4 1 3
|
||||||
|
279694: 1 935 96 765 97
|
||||||
|
224785469: 2 1 9 5 68 10 2 3 9 3 7 23
|
||||||
|
10732502: 15 5 477 5 60
|
||||||
|
7497250: 8 936 1 9 249
|
||||||
|
56971: 4 76 9 79 91
|
||||||
|
41393070: 2 53 5 781 70
|
||||||
|
12168228431496: 64 3 8 2 161 9 7 831 3
|
||||||
|
117142318737: 3 6 6 9 2 60 436 3 9 6 9 3
|
||||||
|
158260: 9 45 5 4 78
|
||||||
|
2363212870: 2 363 212 4 52 420
|
||||||
|
447325: 463 2 795 355 25
|
||||||
|
4751: 11 48 9
|
||||||
|
841: 81 9 97 2 13
|
||||||
|
3346211520: 3 9 858 11 522
|
||||||
|
697352492: 67 1 4 4 18 3 455 69 9 5
|
||||||
|
7319280640: 61 45 7 709 7 656 80
|
||||||
|
27260: 7 9 344 79 5
|
||||||
|
10737320581: 7 8 5 5 55 7 8 6 294 70
|
||||||
|
17943: 9 839 921 18 6 9 4
|
||||||
|
35412: 6 724 1 9 8 580
|
||||||
|
6453: 161 1 475 81 9
|
||||||
|
840798: 975 287 52 3 647 517
|
||||||
|
17854: 3 32 69 42 7 655
|
||||||
|
1735468803: 3 86 8 5 9 91 68 3 26 80
|
||||||
|
1955340326: 54 8 292 2 54 5 327
|
||||||
|
7614444: 86 7 718 824 7 88 7 19
|
||||||
|
108369902185: 3 9 115 814 7 9 5 7 1 8 6
|
||||||
|
139223: 8 3 53 2 77 38 6 3 2 7 4
|
||||||
|
2142640: 49 43 35 566 72
|
||||||
|
266228026: 3 80 51 8 597 5 62 24
|
||||||
|
68870224: 6 62 870 22 4
|
||||||
|
393281: 5 4 109 9 32 77 2 22 9
|
||||||
|
22257035: 29 25 685 5 6 3 597 3 5
|
||||||
|
1480: 679 67 130 537 9 58
|
||||||
|
11720991: 1 8 23 7 364 5 5 5 59 7
|
||||||
|
156699: 663 9 301 5 5
|
||||||
|
1292069: 17 760 21 42 6
|
||||||
|
83229203: 100 1 4 7 1 808 321 9 2
|
||||||
|
15899250: 986 375 43
|
||||||
|
80808: 40 4 521 212 104
|
||||||
|
10465625002: 9 77 71 47 50 1 425 2
|
||||||
|
819408192: 31 68 991 7 3 87
|
||||||
|
667: 8 8 2 7
|
||||||
|
26860: 200 45 23 56 4
|
||||||
|
49480468: 43 29 90 127
|
||||||
|
5186813940000: 504 967 5 825 5 86 2 3
|
||||||
|
19174057: 6 7 652 7 51 7
|
||||||
|
72691616664: 991 7 733 662 6 38
|
||||||
|
18573243: 343 360 489 9 900 6
|
||||||
|
3883810560: 6 88 2 8 4 438 8 980 6
|
||||||
|
19738: 5 2 508 38 54
|
||||||
|
703764: 13 8 48 495 20 77 23 6
|
||||||
|
273920: 7 629 987 89 8 20
|
||||||
|
911: 7 5 9 4 592
|
||||||
|
33029: 50 644 822 7
|
||||||
|
524702: 7 153 24 79 7 3 95 17
|
||||||
|
109342: 84 130 3 3 2 2 80
|
||||||
|
35742400: 8 1 706 7 51 174 6 6 9 7
|
||||||
|
1483641: 2 64 70 737 153
|
||||||
|
7397: 364 5 8 4 85
|
||||||
|
10622451329: 5 80 3 7 1 4 7 879 3 1 2
|
||||||
|
1513454743: 69 31 8 732 963 91
|
||||||
|
87816030: 47 1 7 80 3 8 1 6 417 1
|
||||||
|
2957777379: 30 265 7 777 379
|
||||||
|
279602: 759 1 23 4 4 274 9 7
|
||||||
|
2793723: 2 10 66 1 6 24 2 723
|
||||||
|
13426560: 36 37 180 8 7
|
||||||
|
72281484: 8 25 758 6 17 9 36
|
||||||
|
15157818475: 26 124 1 5 7 818 475
|
||||||
|
1726473: 857 5 41 9 819 2
|
||||||
|
69102877793: 9 997 2 91 7 17 711 7 5
|
||||||
|
1182849: 2 249 31 38 4 129 8
|
||||||
|
81125766: 7 2 670 17 308 3 789
|
||||||
|
20198: 8 6 3 396 2
|
||||||
|
130416799: 10 27 483 6 7 9 6 4
|
||||||
|
29969: 7 62 38 7 91 5 4 907
|
||||||
|
4071: 3 10 4 7 23
|
||||||
|
3447616557: 858 111 362 9 54
|
||||||
|
31720: 38 59 43 63 4 2
|
||||||
|
10386966: 1 3 8 612 2 96 5 7 8 4 6 3
|
||||||
|
2515969: 2 768 9 906 8
|
||||||
|
2085272: 18 65 114 297 25
|
||||||
|
245966149: 96 3 146 5 6 4 2 2 3 731
|
||||||
|
936628: 57 38 19 887 90 88
|
||||||
|
434515299: 905 64 9 8 56 99
|
||||||
|
7751781085279: 8 7 900 819 9 389 11
|
||||||
|
6523: 4 61 26 151 28
|
||||||
|
507242778: 6 822 69 44 4 459 1 6 7
|
||||||
|
4557: 2 48 3 9 169 3
|
||||||
|
6172533: 37 9 207 43 7 9 7 7 12 9
|
||||||
|
4528512: 7 27 871 689 5 6 63
|
||||||
|
35178: 1 682 81 46 80
|
||||||
|
40198: 67 4 25 6
|
||||||
|
12418780: 54 7 6 8 351 6 164 11
|
||||||
|
37440: 24 9 8 12 870 247 32
|
||||||
|
7303307255: 35 695 324 6 64 8 52
|
||||||
|
42929: 9 124 38 5 516
|
||||||
|
101311: 2 99 31 1 3
|
||||||
|
3786723: 1 685 92 6 3 3
|
||||||
|
757762: 76 997 1 3 38
|
||||||
|
728: 567 6 23 42 90
|
||||||
|
19126995: 593 1 70 65 59 58 458
|
||||||
|
83647: 8 828 47
|
||||||
|
1250549: 24 939 1 71 50
|
||||||
|
9778: 9 173 39 15 5 3 39 262
|
||||||
|
18714: 89 265 5 13 4 43 1 3
|
||||||
|
10446534727248: 61 465 74 62 990 8 6
|
||||||
|
4136: 12 289 668
|
||||||
|
986: 919 65 2
|
||||||
|
382284584: 655 1 7 1 144 578 7 1
|
||||||
|
2087668: 521 7 75 94 48 4
|
||||||
|
13551: 62 69 8 36 9
|
||||||
|
54736659: 504 52 8 38 17 261
|
||||||
|
46609728: 5 9 6 5 78 8 818 9 3 1 5 6
|
||||||
|
8001: 55 7 6 9 7 3
|
||||||
|
2164: 20 62 3 7 8 8 76
|
||||||
|
34288954: 174 227 512 141 854
|
||||||
|
149143039: 568 157 839 4 4 8 745
|
||||||
|
858002: 715 600 1 2 2
|
||||||
|
355275: 3 550 5 22 6
|
||||||
|
1161901609: 9 3 7 1 9 5 8 2 99 9 492 4
|
||||||
|
14265505: 7 4 77 237 684
|
||||||
|
93906: 1 23 457 4 78
|
||||||
|
280258704: 396 16 217 528 81
|
||||||
|
2447: 237 9 217 9 88
|
||||||
|
21103892: 688 2 139 4 3 64 55 7
|
||||||
|
572320: 571 889 7 8 7
|
||||||
|
22940: 74 1 31 10
|
||||||
|
453933144: 884 1 7 2 8 75 164 94 9
|
||||||
|
9387402762: 447 7 134 3 70 3 57 2
|
||||||
|
628: 2 96 5 6 10
|
||||||
|
58729373: 53 4 53 29 373
|
||||||
|
16162243: 2 3 90 75 92 139 927
|
||||||
|
1806271: 4 319 283 5 13 718
|
||||||
|
1908: 72 26 16 8 9
|
||||||
|
87108518916: 8 349 61 129 729 4
|
||||||
|
1120226562: 81 8 1 54 7 89 8 5 2 32
|
||||||
|
5619463232: 7 860 2 3 9 3 24 29
|
||||||
|
28275666: 4 35 65 440 227
|
||||||
|
57418552: 8 96 4 18 9 6 4 142
|
||||||
|
337848089754: 893 778 54 82 7 9 5
|
||||||
|
101244761: 2 8 4 1 222 8 1 631 6 4 5
|
||||||
|
31091: 2 94 6 323 9 4 4 53 8 3
|
||||||
|
9551142: 2 7 4 4 92 9 87 2 54
|
||||||
|
431798: 2 827 32 904 554 96
|
||||||
|
368064: 62 5 31 10 568 6
|
||||||
|
641856: 80 23 1 2 8
|
||||||
|
356332: 848 13 8 38 853 4
|
||||||
|
1530148: 107 13 11 13 33
|
||||||
|
10595: 4 93 3 71 524
|
||||||
|
13825: 37 88 128 73 4
|
||||||
|
485809: 9 597 19 6 996 5
|
||||||
|
6598799: 541 2 674 617 6 5 3 1 1
|
||||||
|
15595884486: 6 36 560 69 8 961
|
||||||
|
655845: 5 5 2 512 8 298 7 115
|
||||||
|
167578404: 716 3 162 9 916 19
|
||||||
|
539849: 3 7 1 594 25
|
||||||
|
3430232: 9 15 29 9 2 700 7 56 4 8
|
||||||
|
4196: 951 77 9 8 4 4
|
||||||
|
24625387: 9 6 8 6 9 37 846 38 3 8 8
|
||||||
|
4318272002: 10 7 2 3 80 6 5 2 7 306 2
|
||||||
|
49392736: 80 63 4 72 34 2 944 2
|
||||||
|
97244751876: 3 45 6 3 7 293 8 5 9 2 3 1
|
||||||
|
2827209446: 384 6 35 4 9 6 7 3 441 5
|
||||||
|
773376516: 7 73 37 651 5
|
||||||
|
466781: 21 76 5 364 782
|
||||||
|
314242938: 77 30 223 22 610 218
|
||||||
|
654638167: 14 95 6 631 7 169
|
||||||
|
11952: 76 23 69 7 50 439 18
|
||||||
|
7579925: 860 37 435 47 5
|
||||||
|
1618: 80 4 7 711 59
|
||||||
|
33287: 1 822 40 354 48 2 3
|
||||||
|
126232779: 6 3 841 9 5 4 77 8 34 9 3
|
||||||
|
155627: 1 6 99 989 54 95 13 99
|
||||||
|
713339897: 9 7 5 8 9 30 430
|
||||||
|
131670050047: 231 19 75 12 5 1 4 8
|
||||||
|
7727322: 2 795 9 753 513
|
||||||
|
349733: 615 8 637 271 4 6 28
|
||||||
|
2481710424: 1 58 9 49 1 3 96 5 9 3 8 3
|
||||||
|
261963659: 9 7 4 7 2 308 655 650 9
|
||||||
|
51571974: 7 5 579 7 848 1 1 3
|
||||||
|
20290: 3 85 3 467 36 1 1 6 196
|
||||||
|
2626: 2 6 96 545 2
|
||||||
|
22878: 2 2 80 275 4 21 3 9
|
||||||
|
575535: 54 4 14 18 10 8 73 6 3
|
||||||
|
477517: 43 3 4 5 8 46 7 50
|
||||||
|
1384703: 4 401 6 7 738 51
|
||||||
|
891003337: 86 6 12 4 825 3 3 39
|
||||||
|
90028742465: 608 3 1 37 4 3 4 2 4 6 2 1
|
||||||
|
231588050: 35 3 1 586 1 2 8 1 3 65 5
|
||||||
|
1072: 7 9 995 9 5
|
||||||
|
11381395: 73 4 974 2 36 2 435 7
|
||||||
|
3841: 847 4 87 358 8
|
||||||
|
88734868: 3 6 9 8 9 2 7 5 4 838 725
|
||||||
|
280240227: 2 981 23 1 48 94
|
||||||
|
343965: 6 35 67 885 23
|
||||||
|
14417393: 9 4 7 2 63 6 38 35 90
|
||||||
|
227912: 8 183 31 19 3 72 9 8 1
|
||||||
|
2511501082: 1 946 88 2 430 3 7 6 2 4
|
||||||
|
9770975: 2 207 7 58 9 4 36 33 5
|
||||||
|
181098129983: 36 3 6 1 3 399 7 9 8 1 8 6
|
||||||
|
5511886: 749 92 63 2 9 4 104 94
|
||||||
|
11912: 3 167 581 43 15
|
||||||
|
54194003: 24 5 7 50 632
|
||||||
|
40135618285: 5 5 5 4 8 7 7 38 182 8 3 5
|
||||||
|
8817032: 460 2 2 6 4 4 7 2 57 728
|
||||||
|
236071: 566 414 610 196 941
|
||||||
|
1699: 874 26 799
|
||||||
|
9082: 59 85 7 9 10
|
||||||
|
14399715: 7 6 5 84 32 1 9 9 8 756 7
|
||||||
|
957922: 5 76 282 265 853
|
||||||
|
519850: 854 1 1 608 8
|
||||||
|
494598: 8 8 8 9 1 2 4 1 3 4 17 78
|
||||||
|
717301: 769 92 138 844 1
|
||||||
|
79732051: 8 1 7 80 45 5 221 629 8
|
||||||
|
193315: 5 329 577 536 60
|
||||||
|
443120: 71 7 62 5 764 4
|
||||||
|
799531202: 320 693 332 72 50 2
|
||||||
|
25055194: 241 48 900 7 194
|
||||||
|
148742749564: 341 93 73 435 240 65
|
||||||
|
2975722: 802 811 6 919 2
|
||||||
|
69614316: 3 9 65 34 9 9 6 3 1 96 59
|
||||||
|
9211672: 92 116 51 20
|
||||||
|
1384: 5 687 2
|
||||||
|
2227754259: 312 1 75 78 952
|
||||||
|
1980: 6 46 5 70 6
|
||||||
|
1051: 74 41 921 7 8
|
||||||
|
7224: 69 9 6 405 7
|
||||||
|
100058717: 58 44 628 7 145 31 9 8
|
||||||
|
13325842: 86 4 981 7 534 49 5 9
|
||||||
|
135606016: 86 1 1 7 2 4 8 877 96 8
|
||||||
|
188416: 4 8 735 32 8
|
||||||
|
13081748: 306 58 2 737
|
||||||
|
3408461: 654 396 4 34 348 94 9
|
||||||
|
19518: 2 1 8 9 1 54 9 25 9 616 2
|
||||||
|
31719: 65 6 9 78 597
|
||||||
|
246572: 26 98 9 4 393 9 81 2 8
|
||||||
|
127805458: 40 71 9 1 5 457
|
||||||
|
7811: 198 16 5 7 31 1 4 794 6
|
||||||
|
1168319105: 5 2 1 2 4 44 8 93 9 12 8 8
|
||||||
|
7211685: 411 5 7 562 8 554 93 5
|
||||||
|
4028985022: 77 86 48 505 604
|
||||||
|
127755655140: 73 70 5 3 8 31 5 140
|
||||||
|
208269903: 3 75 267 990 3
|
||||||
|
956027222: 455 20 5 10 4 3 5 7
|
||||||
|
332644: 63 1 8 660 4
|
||||||
|
739903: 8 744 1 67 3 630 9 1 5
|
||||||
|
449841: 8 6 3 1 9 9 4 9 608 73 88
|
||||||
|
3162: 88 4 6 9 7 3 53 7 9 17
|
||||||
|
123780: 961 528 514 51 9 60
|
||||||
|
397: 88 299 1 1 9
|
||||||
|
20327221321: 10 40 83 98 1 460 7 6
|
||||||
|
22759444: 366 7 6 3 241 6
|
||||||
|
1397068088398: 419 2 5 161 5 6 4 414 1
|
||||||
|
5172: 6 431 2
|
||||||
|
7637: 251 9 85 746 7
|
||||||
|
1812: 908 35 789 3 77
|
||||||
|
1120: 7 9 1 68 9 2 4
|
||||||
|
770138283: 11 6 57 1 3 8 947 9 1 3 3
|
||||||
|
163644: 610 32 344 63 156
|
||||||
|
6168: 137 5 9
|
||||||
|
507: 41 9 2 76 60
|
||||||
|
593693: 77 77 16 765 9
|
||||||
|
1214074355: 9 4 5 3 9 73 5 7 8 4 855 8
|
||||||
|
607244471: 6 3 7 3 1 83 2 510 2 4 6 8
|
||||||
|
275: 26 2 9 2 2
|
||||||
|
250040507: 24 9 455 585 504
|
||||||
|
5137920095731: 44 7 438 78 3 23 573 2
|
||||||
|
282926819: 6 4 827 26 812 42 3 32
|
||||||
|
80952: 37 2 6 948 2
|
||||||
|
8890436: 635 2 7 43 8
|
||||||
|
10600: 2 1 8 8 6 6 8 3 91 541 6 5
|
||||||
|
23840: 5 86 1 9 4 1 7 511 57 5
|
||||||
|
283368: 3 8 8 322 8
|
||||||
|
1123947090: 49 3 877 8 1 323 9 342
|
||||||
|
25775616: 8 8 6 97 692
|
||||||
|
243687944: 650 5 815 32 92
|
||||||
|
2855764: 2 1 912 730 1
|
||||||
|
2736185924: 835 66 2 53 8 3 31 3 2 2
|
||||||
89
2024/gareth/day11/day11.go
Normal file
89
2024/gareth/day11/day11.go
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
package day11
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
stones := ParseInput(input)
|
||||||
|
return len(blinkTimes(stones, 25))
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
stones := ParseInput(input)
|
||||||
|
return getNumStones(stones, 75)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseInput(input string) []int {
|
||||||
|
strStones := strings.Split(strings.TrimSpace(input), " ")
|
||||||
|
stones := make([]int, 0, len(strStones))
|
||||||
|
for _, s := range strStones {
|
||||||
|
num, _ := strconv.Atoi(s)
|
||||||
|
stones = append(stones, num)
|
||||||
|
}
|
||||||
|
return stones
|
||||||
|
}
|
||||||
|
|
||||||
|
// Part 1 initial thought of recursion
|
||||||
|
func blinkTimes(stones []int, times int) []int {
|
||||||
|
if times <= 0 {
|
||||||
|
return stones
|
||||||
|
}
|
||||||
|
result := blink(stones)
|
||||||
|
return blinkTimes(result, times-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func blink(stones []int) []int {
|
||||||
|
result := make([]int, 0)
|
||||||
|
for _, stone := range stones {
|
||||||
|
strStone := strconv.Itoa(stone)
|
||||||
|
if stone == 0 {
|
||||||
|
result = append(result, 1)
|
||||||
|
} else if len(strStone)%2 == 0 {
|
||||||
|
mid := len(strStone) / 2
|
||||||
|
firstHalf, _ := strconv.Atoi(strStone[:mid])
|
||||||
|
secondHalf, _ := strconv.Atoi(strStone[mid:])
|
||||||
|
result = append(result, firstHalf, secondHalf)
|
||||||
|
} else {
|
||||||
|
result = append(result, stone*2024)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// Part 2 with maps since blinkTimes(75) would set my computer on fire
|
||||||
|
func getNumStones(s []int, times int) int {
|
||||||
|
stoneMap := make(map[int]int)
|
||||||
|
for _, stone := range s {
|
||||||
|
stoneMap[stone] = stoneMap[stone] + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < times; i++ {
|
||||||
|
stoneMap2 := make(map[int]int)
|
||||||
|
for stone, count := range stoneMap {
|
||||||
|
stones := make([]int, 0)
|
||||||
|
strStone := strconv.Itoa(stone)
|
||||||
|
if stone == 0 {
|
||||||
|
stones = append(stones, 1)
|
||||||
|
} else if len(strStone)%2 == 0 {
|
||||||
|
mid := len(strStone) / 2
|
||||||
|
firstHalf, _ := strconv.Atoi(strStone[:mid])
|
||||||
|
secondHalf, _ := strconv.Atoi(strStone[mid:])
|
||||||
|
stones = append(stones, firstHalf, secondHalf)
|
||||||
|
} else {
|
||||||
|
stones = append(stones, stone*2024)
|
||||||
|
}
|
||||||
|
for _, newStone := range stones {
|
||||||
|
stoneMap2[newStone] = stoneMap2[newStone] + count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stoneMap = stoneMap2
|
||||||
|
}
|
||||||
|
|
||||||
|
result := 0
|
||||||
|
for _, count := range stoneMap {
|
||||||
|
result += count
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
12
2024/gareth/day11/day11_test.go
Normal file
12
2024/gareth/day11/day11_test.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package day11
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPart1(t *testing.T) {
|
||||||
|
r := Part1(`125 17`)
|
||||||
|
assert.Equal(t, 55312, r)
|
||||||
|
}
|
||||||
1
2024/gareth/day11/input.txt
Normal file
1
2024/gareth/day11/input.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
965842 9159 3372473 311 0 6 86213 48
|
||||||
76
2024/gareth/day13/day13.go
Normal file
76
2024/gareth/day13/day13.go
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package day13
|
||||||
|
|
||||||
|
import (
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ClawMachine struct {
|
||||||
|
Ax, Ay int
|
||||||
|
Bx, By int
|
||||||
|
Px, Py int
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
clawMachines := parseInput(input)
|
||||||
|
total := 0
|
||||||
|
for _, c := range clawMachines {
|
||||||
|
x, y := solveSimEquations(c.Ax, c.Bx, c.Px, c.Ay, c.By, c.Py)
|
||||||
|
total += x*3 + y
|
||||||
|
}
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
clawMachines := parseInput(input)
|
||||||
|
total := 0
|
||||||
|
for _, c := range clawMachines {
|
||||||
|
prizeX, prizeY := c.Px+10000000000000, c.Py+10000000000000
|
||||||
|
det, x, y := c.Ax*c.By-c.Bx*c.Ay, prizeX*c.By-c.Bx*prizeY, c.Ax*prizeY-prizeX*c.Ay
|
||||||
|
if det != 0 && x == (x/det)*det && y == (y/det)*det {
|
||||||
|
total += (x/det)*3 + (y / det)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseInput(input string) []ClawMachine {
|
||||||
|
clawMachines := strings.Split(strings.TrimSpace(input), "\n\n")
|
||||||
|
output := make([]ClawMachine, 0, len(clawMachines))
|
||||||
|
for _, c := range clawMachines {
|
||||||
|
var clawMachine ClawMachine
|
||||||
|
line := strings.Split(strings.TrimSpace(c), "\n")
|
||||||
|
|
||||||
|
re := regexp.MustCompile(`X\+(\d+), Y\+(\d+)`)
|
||||||
|
matches := re.FindStringSubmatch(line[0])
|
||||||
|
clawMachine.Ax, _ = strconv.Atoi(matches[1])
|
||||||
|
clawMachine.Ay, _ = strconv.Atoi(matches[2])
|
||||||
|
|
||||||
|
matches = re.FindStringSubmatch(line[1])
|
||||||
|
clawMachine.Bx, _ = strconv.Atoi(matches[1])
|
||||||
|
clawMachine.By, _ = strconv.Atoi(matches[2])
|
||||||
|
|
||||||
|
re = regexp.MustCompile(`X=(\d+), Y=(\d+)`)
|
||||||
|
matches = re.FindStringSubmatch(line[2])
|
||||||
|
clawMachine.Px, _ = strconv.Atoi(matches[1])
|
||||||
|
clawMachine.Py, _ = strconv.Atoi(matches[2])
|
||||||
|
|
||||||
|
output = append(output, clawMachine)
|
||||||
|
}
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
|
||||||
|
func solveSimEquations(a1, b1, c1, a2, b2, c2 int) (int, int) {
|
||||||
|
det := a1*b2 - a2*b1
|
||||||
|
if det == 0 || (c1*b2-c2*b1)%det != 0 || (a1*c2-a2*c1)%det != 0 {
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
x := (c1*b2 - c2*b1) / det
|
||||||
|
y := (a1*c2 - a2*c1) / det
|
||||||
|
if x < 0 || x > 100 || y < 0 || y > 100 {
|
||||||
|
return 0, 0
|
||||||
|
}
|
||||||
|
return x, y
|
||||||
|
}
|
||||||
45
2024/gareth/day13/day13_test.go
Normal file
45
2024/gareth/day13/day13_test.go
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
package day13
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPart1(t *testing.T) {
|
||||||
|
r := Part1(`Button A: X+94, Y+34
|
||||||
|
Button B: X+22, Y+67
|
||||||
|
Prize: X=8400, Y=5400
|
||||||
|
|
||||||
|
Button A: X+26, Y+66
|
||||||
|
Button B: X+67, Y+21
|
||||||
|
Prize: X=12748, Y=12176
|
||||||
|
|
||||||
|
Button A: X+17, Y+86
|
||||||
|
Button B: X+84, Y+37
|
||||||
|
Prize: X=7870, Y=6450
|
||||||
|
|
||||||
|
Button A: X+69, Y+23
|
||||||
|
Button B: X+27, Y+71
|
||||||
|
Prize: X=18641, Y=10279`)
|
||||||
|
assert.Equal(t, 480, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPart2(t *testing.T) {
|
||||||
|
r := Part2(`Button A: X+94, Y+34
|
||||||
|
Button B: X+22, Y+67
|
||||||
|
Prize: X=8400, Y=5400
|
||||||
|
|
||||||
|
Button A: X+26, Y+66
|
||||||
|
Button B: X+67, Y+21
|
||||||
|
Prize: X=12748, Y=12176
|
||||||
|
|
||||||
|
Button A: X+17, Y+86
|
||||||
|
Button B: X+84, Y+37
|
||||||
|
Prize: X=7870, Y=6450
|
||||||
|
|
||||||
|
Button A: X+69, Y+23
|
||||||
|
Button B: X+27, Y+71
|
||||||
|
Prize: X=18641, Y=10279`)
|
||||||
|
assert.Equal(t, 0, r)
|
||||||
|
}
|
||||||
1279
2024/gareth/day13/input.txt
Normal file
1279
2024/gareth/day13/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
156
2024/gareth/day18/day18.go
Normal file
156
2024/gareth/day18/day18.go
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
package day18
|
||||||
|
|
||||||
|
import (
|
||||||
|
"container/heap"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Point struct {
|
||||||
|
x, y int
|
||||||
|
}
|
||||||
|
|
||||||
|
// Item represents a node in the priority queue.
|
||||||
|
type Item struct {
|
||||||
|
point Point
|
||||||
|
distance int
|
||||||
|
index int
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
grid := parseInput(input, 1024)
|
||||||
|
_, distance := dijkstra(grid)
|
||||||
|
return distance
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
lines := strings.Split(strings.TrimSpace(input), "\n")
|
||||||
|
numLines := len(lines)
|
||||||
|
for i := 1; i <= numLines; i++ {
|
||||||
|
grid := parseInput(input, i)
|
||||||
|
_, distance := dijkstra(grid)
|
||||||
|
if distance == -1 {
|
||||||
|
println(lines[i-1])
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseInput(input string, upToLine int) [][]rune {
|
||||||
|
grid := make([][]rune, 71)
|
||||||
|
for i := range grid {
|
||||||
|
grid[i] = make([]rune, 71)
|
||||||
|
for j := range grid[i] {
|
||||||
|
grid[i][j] = '.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lines := strings.Split(strings.TrimSpace(input), "\n")
|
||||||
|
|
||||||
|
for index, line := range lines {
|
||||||
|
if index == upToLine {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
cords := strings.Split(strings.TrimSpace(line), ",")
|
||||||
|
x, _ := strconv.Atoi(cords[0])
|
||||||
|
y, _ := strconv.Atoi(cords[1])
|
||||||
|
grid[x][y] = '#'
|
||||||
|
}
|
||||||
|
return grid
|
||||||
|
}
|
||||||
|
|
||||||
|
// PriorityQueue implements a priority queue for Dijkstra's algorithm.
|
||||||
|
type PriorityQueue []*Item
|
||||||
|
|
||||||
|
func (pq PriorityQueue) Len() int { return len(pq) }
|
||||||
|
func (pq PriorityQueue) Less(i, j int) bool {
|
||||||
|
return pq[i].distance < pq[j].distance
|
||||||
|
}
|
||||||
|
func (pq PriorityQueue) Swap(i, j int) {
|
||||||
|
pq[i], pq[j] = pq[j], pq[i]
|
||||||
|
pq[i].index = i
|
||||||
|
pq[j].index = j
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pq *PriorityQueue) Push(x interface{}) {
|
||||||
|
n := len(*pq)
|
||||||
|
item := x.(*Item)
|
||||||
|
item.index = n
|
||||||
|
*pq = append(*pq, item)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pq *PriorityQueue) Pop() interface{} {
|
||||||
|
old := *pq
|
||||||
|
n := len(old)
|
||||||
|
item := old[n-1]
|
||||||
|
item.index = -1
|
||||||
|
*pq = old[0 : n-1]
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
func isValid(grid [][]rune, x, y int) bool {
|
||||||
|
return x >= 0 && x < len(grid) && y >= 0 && y < len(grid[0]) && grid[x][y] == '.'
|
||||||
|
}
|
||||||
|
|
||||||
|
func dijkstra(grid [][]rune) ([][]rune, int) {
|
||||||
|
directions := []Point{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
|
||||||
|
rows, cols := len(grid), len(grid[0])
|
||||||
|
|
||||||
|
// Validate start and end points
|
||||||
|
if grid[0][0] != '.' || grid[rows-1][cols-1] != '.' {
|
||||||
|
return grid, -1 // No path if start or end is not valid
|
||||||
|
}
|
||||||
|
|
||||||
|
dist := make([][]int, rows)
|
||||||
|
for i := range dist {
|
||||||
|
dist[i] = make([]int, cols)
|
||||||
|
for j := range dist[i] {
|
||||||
|
dist[i][j] = 1 << 30
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pq := &PriorityQueue{}
|
||||||
|
heap.Init(pq)
|
||||||
|
heap.Push(pq, &Item{point: Point{0, 0}, distance: 0})
|
||||||
|
dist[0][0] = 0
|
||||||
|
|
||||||
|
path := make([][]Point, rows)
|
||||||
|
for i := range path {
|
||||||
|
path[i] = make([]Point, cols)
|
||||||
|
}
|
||||||
|
|
||||||
|
for pq.Len() > 0 {
|
||||||
|
item := heap.Pop(pq).(*Item)
|
||||||
|
x, y := item.point.x, item.point.y
|
||||||
|
if x == rows-1 && y == cols-1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for _, dir := range directions {
|
||||||
|
nx, ny := x+dir.x, y+dir.y
|
||||||
|
if isValid(grid, nx, ny) {
|
||||||
|
newDist := dist[x][y] + 1
|
||||||
|
if newDist < dist[nx][ny] {
|
||||||
|
dist[nx][ny] = newDist
|
||||||
|
heap.Push(pq, &Item{point: Point{nx, ny}, distance: newDist})
|
||||||
|
path[nx][ny] = Point{x, y}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if no path exists
|
||||||
|
if dist[rows-1][cols-1] == 1<<30 {
|
||||||
|
return grid, -1 // No path found
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconstruct the path
|
||||||
|
x, y := rows-1, cols-1
|
||||||
|
for x != 0 || y != 0 {
|
||||||
|
grid[x][y] = 'O'
|
||||||
|
x, y = path[x][y].x, path[x][y].y
|
||||||
|
}
|
||||||
|
grid[0][0] = 'O'
|
||||||
|
|
||||||
|
return grid, dist[rows-1][cols-1]
|
||||||
|
}
|
||||||
65
2024/gareth/day18/day18_test.go
Normal file
65
2024/gareth/day18/day18_test.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package day18
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPart1(t *testing.T) {
|
||||||
|
r := Part1(`5,4
|
||||||
|
4,2
|
||||||
|
4,5
|
||||||
|
3,0
|
||||||
|
2,1
|
||||||
|
6,3
|
||||||
|
2,4
|
||||||
|
1,5
|
||||||
|
0,6
|
||||||
|
3,3
|
||||||
|
2,6
|
||||||
|
5,1
|
||||||
|
1,2
|
||||||
|
5,5
|
||||||
|
2,5
|
||||||
|
6,5
|
||||||
|
1,4
|
||||||
|
0,4
|
||||||
|
6,4
|
||||||
|
1,1
|
||||||
|
6,1
|
||||||
|
1,0
|
||||||
|
0,5
|
||||||
|
1,6
|
||||||
|
2,0`)
|
||||||
|
assert.Equal(t, 22, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPart2(t *testing.T) {
|
||||||
|
r := Part2(`5,4
|
||||||
|
4,2
|
||||||
|
4,5
|
||||||
|
3,0
|
||||||
|
2,1
|
||||||
|
6,3
|
||||||
|
2,4
|
||||||
|
1,5
|
||||||
|
0,6
|
||||||
|
3,3
|
||||||
|
2,6
|
||||||
|
5,1
|
||||||
|
1,2
|
||||||
|
5,5
|
||||||
|
2,5
|
||||||
|
6,5
|
||||||
|
1,4
|
||||||
|
0,4
|
||||||
|
6,4
|
||||||
|
1,1
|
||||||
|
6,1
|
||||||
|
1,0
|
||||||
|
0,5
|
||||||
|
1,6
|
||||||
|
2,0`)
|
||||||
|
assert.Equal(t, 0, r)
|
||||||
|
}
|
||||||
3450
2024/gareth/day18/input.txt
Normal file
3450
2024/gareth/day18/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
90
2024/gareth/day19/day19.go
Normal file
90
2024/gareth/day19/day19.go
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
package day19
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Part1(input string) int {
|
||||||
|
towelPatterns, designs := parseInput(input)
|
||||||
|
result := countPossibleDesigns(towelPatterns, designs)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func Part2(input string) int {
|
||||||
|
towelPatterns, designs := parseInput(input)
|
||||||
|
result := totalArrangements(towelPatterns, designs)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseInput(input string) ([]string, []string) {
|
||||||
|
parts := strings.SplitN(input, "\n\n", 2)
|
||||||
|
towels := strings.Split(strings.ReplaceAll(parts[0], " ", ""), ",")
|
||||||
|
patterns := strings.Split(strings.TrimSpace(parts[1]), "\n")
|
||||||
|
return towels, patterns
|
||||||
|
}
|
||||||
|
|
||||||
|
func countPossibleDesigns(towelPatterns []string, designs []string) int {
|
||||||
|
memo := make(map[string]bool)
|
||||||
|
count := 0
|
||||||
|
|
||||||
|
for _, design := range designs {
|
||||||
|
if canConstruct(design, towelPatterns, memo) {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
func canConstruct(design string, patterns []string, memo map[string]bool) bool {
|
||||||
|
if design == "" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if val, found := memo[design]; found {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pattern := range patterns {
|
||||||
|
if strings.HasPrefix(design, pattern) {
|
||||||
|
remaining := design[len(pattern):]
|
||||||
|
if canConstruct(remaining, patterns, memo) {
|
||||||
|
memo[design] = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memo[design] = false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func totalArrangements(towelPatterns []string, designs []string) int {
|
||||||
|
memo := make(map[string]int)
|
||||||
|
total := 0
|
||||||
|
|
||||||
|
for _, design := range designs {
|
||||||
|
total += countWays(design, towelPatterns, memo)
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func countWays(design string, patterns []string, memo map[string]int) int {
|
||||||
|
if design == "" {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if val, found := memo[design]; found {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
|
totalWays := 0
|
||||||
|
for _, pattern := range patterns {
|
||||||
|
if strings.HasPrefix(design, pattern) {
|
||||||
|
remaining := design[len(pattern):]
|
||||||
|
totalWays += countWays(remaining, patterns, memo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memo[design] = totalWays
|
||||||
|
return totalWays
|
||||||
|
}
|
||||||
35
2024/gareth/day19/day19_test.go
Normal file
35
2024/gareth/day19/day19_test.go
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package day19
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPart1(t *testing.T) {
|
||||||
|
r := Part1(`r, wr, b, g, bwu, rb, gb, br
|
||||||
|
|
||||||
|
brwrr
|
||||||
|
bggr
|
||||||
|
gbbr
|
||||||
|
rrbgbr
|
||||||
|
ubwu
|
||||||
|
bwurrg
|
||||||
|
brgr
|
||||||
|
bbrgwb`)
|
||||||
|
assert.Equal(t, 6, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPart2(t *testing.T) {
|
||||||
|
r := Part2(`r, wr, b, g, bwu, rb, gb, br
|
||||||
|
|
||||||
|
brwrr
|
||||||
|
bggr
|
||||||
|
gbbr
|
||||||
|
rrbgbr
|
||||||
|
ubwu
|
||||||
|
bwurrg
|
||||||
|
brgr
|
||||||
|
bbrgwb`)
|
||||||
|
assert.Equal(t, 16, r)
|
||||||
|
}
|
||||||
402
2024/gareth/day19/input.txt
Normal file
402
2024/gareth/day19/input.txt
Normal file
@@ -0,0 +1,402 @@
|
|||||||
|
rrgbg, rgguubg, rbru, rb, rrrw, wbu, gbgb, uururg, ubru, rugb, bbru, b, rggurg, wgru, bgrwb, rrgubg, ubrrbg, wgurru, rrrrw, rbrwu, wubwb, wrbbr, bgbu, brrww, brg, gbwu, wrubuur, gur, grbr, gruwrrbg, bgwr, wgugbgb, rwbru, wuwr, rrg, ruwg, rgwgr, ubu, wbr, bwg, gbu, bgrwrb, wwrw, bb, gr, rug, grr, ubwb, rbruwbu, guggug, ugu, rwbuu, bbur, wbrww, wubw, br, gruu, gwr, wrrwwu, wug, bgu, bgb, wugb, grb, rbbg, grgbwgb, rwu, bwrbb, uwrbbru, bbu, wrg, rwg, ggbgbg, wbwru, wrgrw, bburr, bgr, rgbg, bwwwugrb, uwu, rwuwrg, gguburu, uwubwu, wb, wgguug, ugrbw, rbgu, rwwu, ggbbgb, gw, wgg, rrw, uurg, uubg, bgurgb, uwgbr, wbrwu, rrbb, rww, bwgb, uugru, ggrbub, wubgw, rwwugr, uuwur, burbrg, bbr, ggb, wgr, gwbgw, rrbu, wuwwrwb, rbbr, uubw, buuu, ubbwggu, brr, urguww, uggwwgw, ugw, ug, rub, grrrwu, wurburgg, wwww, ruu, wrb, rrur, urggr, bwbwwwrg, wwbu, bbg, uwb, ggugu, gbbr, rbrgw, bg, bbuu, uwrgrg, ggbwrgw, wwgwugr, wgbwuwb, gbrwg, bbw, wwrgu, rgrwrbwb, wwwg, gugbgbg, bwrwub, rw, gbb, ggw, rrb, urrbbwb, urbu, grg, rbugggb, bruwg, uubgwgw, bw, uubgu, rru, rwww, gu, wrbrg, guu, wgu, ruuru, wubrrg, brugrg, uuggb, wrurg, rgb, rbu, urg, buw, grwbg, gwuw, grbbg, wuwu, gbgbbw, uugrwrww, wbguub, grrgbug, u, uug, uwr, wrwb, gbg, bru, wwg, bbwur, bbbbbbbw, bugbb, rwurrgr, wwb, ugbbw, bug, grgg, bgwgrrb, uggu, rurguru, wwr, rbw, ubwwgw, wrrw, rrbg, g, rgrbub, gruggw, bur, ubgb, bgg, uwur, ur, bbbwb, gwbu, wuww, uruuuubb, wbru, ugggg, gbuu, rgg, wwwug, gbrwgg, guwgr, urw, wbur, bu, rur, rrubr, ugb, ubrgrb, rbbgg, rbwrg, rggw, rguug, wwu, uur, wrrguggu, brbb, bwwwbr, guw, gugw, wgubwu, rrr, ub, ru, brrbbruw, bwwgrrbb, rubgu, uggwwg, wbb, rwr, r, ruuu, wbggg, wwwu, grbrb, rrrrr, ruwb, wuuw, rbbb, ugg, wbg, rguwr, wbw, wbuwg, ubbgrbb, urugu, rbubw, wrgwuuwu, grw, ubbbu, bwurb, rwuu, rgbbwur, urbuu, uww, wuw, bwurgu, wur, wuwwrbur, wwuu, wbgw, grbbbw, wuub, urb, wuuguuwg, wg, gwrgr, gbug, gbrbw, rwgg, brbbu, bwww, wrbbbu, wwgbggb, burug, gww, ubgrrb, bgw, rgbb, brb, wbuu, brw, ggrbrbwg, uwruw, wrgurrbb, guwrgu, rr, ugggrbr, bgrgg, urgbrbrb, wrw, wwubggu, ugurwg, grrg, bwrb, rrgwuuw, rrru, wurg, bgurwu, rgurbb, uuub, uuwb, rrrg, wrgrrrww, uwg, bgbguu, wrgwb, wwwru, rg, rrurwur, urrbb, bww, rrwwbbb, ubr, wgrbu, gru, ubg, gb, ggr, gbwbwru, uuw, rbb, gugwrg, gwb, bbb, rgrggw, uw, wggbbg, rwgubgb, gwbw, brrr, gugbwu, rwrr, uuuwbb, ugrrr, rgu, wubrwr, wrr, bwb, bwbgurb, rrrub, wub, rwgrug, rurb, gwrgrbr, rbrwbb, wwrgbg, urr, bwu, bwgu, rbuuw, bbub, wbbwubu, ggg, wbwwgwb, buwbg, wwwuru, rbg, gubugg, gbwb, www, rbr, ubur, grbbw, wgw, gbw, wgrw, rguuuu, rwb, gbrw, bbbb, gururbb, rbggwu, bub, bgbr, gurb, rrbgrb, rurwb, ugr, wgwrg, ruw, bgrr, gwu, gbr, uwugwru, wru, wr, ugbruw, grbubb, gwg, gwggurg, gugbr, ugubbgb, uwrw, uru, bwr, rgr, rbgrwg, buuw, ugbur, urgub, wurrrgww, rgguuwru, burr, rgw, rbruw, rwbwbbr, bwguw, uub, wgb, rgur, ubb, urwg, rwgww, wgub, rwwrgu, gg, rgug, gub, bggr, uuu, uu, rbug
|
||||||
|
|
||||||
|
bubrbbwggggbuuwbbrwwbbgbwrruugwbwgbwugbugrgu
|
||||||
|
wugwgwggbgubuuwugugrugwbrrwrbwwguburbbbggw
|
||||||
|
wbbrrwwbgwbgrrbwuuwrbbrwuwburgbwgwwuruwgbggubwug
|
||||||
|
ubrwbrbrggrwgbwbwwuwwguurbubwrbgwwrubbrwuwururwrr
|
||||||
|
gggrwbgwbwuwrubrguwggruubrggwgbrbguwrbrgwuurbwggrggrwwwrb
|
||||||
|
wuurugububruuwuggwuuwgbwwbrbwgrrrubwbuuwu
|
||||||
|
grrrwrwgwuwrburruuwwubgubwwwrrrwbwwbggrbrgr
|
||||||
|
gugrrubugrgrwgggggrbrbrwgguurrwurgrbuggrrbbwgwwwbuu
|
||||||
|
wubuwgwuwrrubbwuwwrburrwbrrubgurbggbbubrwrguwururgww
|
||||||
|
ubbrgurrbgbrbwguggugwrrrurwwwugbgrwwbuwrbggrgwwrgwbrwwuugb
|
||||||
|
bgwbwwwrrgugwwwugruwrbgrbrwbwbrwurbgruwgrggwruururb
|
||||||
|
guwurburwrguurwbggrrwwugurguwbubbrggrggrubrbbbrwwbgw
|
||||||
|
wgwuurwrgubguugbbgrrwbwgrwbwrwgbwrwburggrgbbuuw
|
||||||
|
grbgrruuwrgwwuburwggbubbbgwwrgrbubggwrwbuurwwbuubuwrgwb
|
||||||
|
bbwuubwuuwwubrwrwgbbrgwwurwbbwwburwuwwwubwrubguubggruwbbg
|
||||||
|
rrugrwurbugrrbggburwurbbgbuugwwrgbwrbrwbgbgrbwbuuww
|
||||||
|
gubwuubuwrrwgbuwbwguubuwwbwwrrwgbwbuwgguguwuwbwu
|
||||||
|
rrbbubrrrwubrrwwbrrbwrbwugbrbrggwbgrwgugwuugg
|
||||||
|
uurwrgruuwbwuubbrwubrwuuwwgubwgrwbbwgbwwwrbgugrbwururgurb
|
||||||
|
rbwbbrguggubguurrrrburuwrrubgbgrwrbugrrrgruburwb
|
||||||
|
grggbggwrubwwwwgrurwgbwuubguwrrrbgubruguub
|
||||||
|
rrbgbggwbwbrbrrwwgbbggrruwgggurgbrbrwubwuurrbbbwgrbrgrurr
|
||||||
|
gububbuuguwgbgrwgwgruburwrgwgbbrbrruururrrubrgggwwrbgb
|
||||||
|
ruurrgggbwbrggwggrurgrwgwbgburwwuwgubggubru
|
||||||
|
rbrrwgrgrrwrbwbrbggbwrwwuwrbwuwuuwbgbrwrgrwwgbuugbugg
|
||||||
|
wwbwrrbrrruuwrrwgggruwbubrrwrwuwwurwurbrbrrrw
|
||||||
|
wbguwwwwwguuuwuubrwgrgwguugrbrruwwrwgugbbb
|
||||||
|
rrggwbububgbgbguggwwgurbgbwuwwrwrgwuuwruggu
|
||||||
|
rbguubrrbrgwwgwbgrwrbrggwuwguuuwbwbwwbuwgr
|
||||||
|
wgbrrguuurgggrwgwgbrbguugrururubruugrrrrgbrgugbg
|
||||||
|
bgurwgugurwwbuugwurrgurwwrgwgubgrrgururubguuuwugbg
|
||||||
|
rwbbuwuwbgwbbwurbubwwugbgrbugrbuurbwwbrrwruwrrrwww
|
||||||
|
rbrburwwbwugrggwrrrruwwgbrgurbwwrrburbbggugbwbu
|
||||||
|
burgwubggburuuguuwrwbbgbuguguwwburububwrrgw
|
||||||
|
gggubgbgbwgrggrbrbrgguruurwbrrwubbrbruwgwbu
|
||||||
|
wggruwwgbwgguwgbgbggrbggbbbwbwwwrgrwwggwrgguuwwgwubgru
|
||||||
|
bbrwwruugwwbbbwububuuwruburbwbbgrwbburrgbbrub
|
||||||
|
gwggggwgguuburrgrgugrwgwrbbggggurgugugrgrgwwbr
|
||||||
|
gggbbugwgbwgwugrrgbwrrwurrgugburrggrruugurbrugrbbbg
|
||||||
|
gbwrwggbuggurrgubuguubrbgwbrubgwgrbrwubbgrr
|
||||||
|
bwuwgurrrgwwgguubggwwuurbbrbbwgwggwuwgbbwrwrburgr
|
||||||
|
wgrwwubbbwbbrggrgugwggbubwwburubwwuwgbbubbrrrrguubguwbuuu
|
||||||
|
rguuurgbrbrbuubgbuuggrwrwgrwugwrwgbwbbwbbgg
|
||||||
|
uugbgwguuggwgwrrggggwrbrgbguuguwrbrgwgbwwuubgugwwug
|
||||||
|
rbuuwwwrrrurgrgbrbbbrrbbwwwgwgwuwgbwggrbbwbruwwwwbg
|
||||||
|
wwgwuurrurrbbgwuwwbgrbbrbruugwwgugbrbrgguuwrugwuguurbgwrru
|
||||||
|
wrgwrrbrgugrrwguuguwburwuguuggguwwgbguwrbrbgubrg
|
||||||
|
wbrugwbubuggrruggbruwrgrwgugwgbwugugbwguwwuubbrwwubggw
|
||||||
|
grbgrrbrwggurbbrwugrwbbrurwrwbruuggwrggrrgrgwwbuwbgurb
|
||||||
|
gwwurrbwrgrgurwuugwbwrgrrrwwwrwguwbrbrrurwbwbuggrwb
|
||||||
|
wubguubgbbwuwbwgwwrrrgbuggwbwwwugrbbgrwubbrgurbuwwrgbur
|
||||||
|
uurgwruubgrbgubbwrubbggrububgrwwrubwwbrgbbu
|
||||||
|
uruuwrrbwbbugbbbrwguwbwuguurbwrurugwuwwguwbgb
|
||||||
|
wurbgrggbggbwwgwwbbgbbrurrrwggrwwrbrbrwrbg
|
||||||
|
ggwwrrbbwgubrgrgrgwuububrbrggbwwbubgbbgwubrgwrbururu
|
||||||
|
grrgubuwgwuwuururwwrbgwrgrurrbbrwbgruggrbggbwubrb
|
||||||
|
grbbrwbrgwgrgubuwbuwbrwuwugrbwuwwguwrbwbwwbuurgbwgw
|
||||||
|
uuguwrwggruurrggurrbgurbwgggugbgrrguugggwurgrrgubugbugugg
|
||||||
|
wrwugwwuwwbrubwwuruuwuwrugugbwwgugrrbuuguwggbrguuugwgwbw
|
||||||
|
uuggwbgurgurbgruruwwrrgubbuwwruruwrurbwugguwbwbgrgg
|
||||||
|
urwbggurwbwguurugbrbwbrbgwrgrbbrubrubburuwrburww
|
||||||
|
wbbrbwwwwrbruubggwrurgugbgbbuwgrrrrwugbwwwr
|
||||||
|
ubugrwubbgbrrrrgguugurgbubwgruuwrrgrbguuuw
|
||||||
|
rrruwrgwrggwburgugwbwwwbggubuwbwuuurrggwwbwrgwgwggbguubw
|
||||||
|
rgrgbrguruguwrggbrgruwrrbgbbbwugbrbgrbrrrggrubwuubwwbguw
|
||||||
|
rbggwgugrbwbrbwurbrugrwbbbwuuuwrwgbbbrwbuwgbwrgggurbwug
|
||||||
|
rgbuuwurbrwwuwbrugbggwbgbrrwguguwbubrubwguubbubgrgrwu
|
||||||
|
gwwwgbrguruuwggwugguuwwrbwgbgwuwuuwrgruguwrbugurrwruw
|
||||||
|
ubbgwurbrwrwggwubggugrgugwurwwbbbrbwbwgubw
|
||||||
|
wurggrrwbwgbwuguurgwgurgugwbguuurrubuwwggwgggwg
|
||||||
|
ugbrrwbgurbugwwwbggggggrugububwbguurruggrgrubuuwgurrwbbu
|
||||||
|
rbrurrwuuugbwwgubugbuugruwwurwrbrrbrbgwurwuuu
|
||||||
|
rrurrrwrwrrrbbbwguuwrruwguwuggbgguurrbbgggbwruurugurgb
|
||||||
|
rurwwgugrrrrwbwurugwrugbgwwbuwrbwuwuguggub
|
||||||
|
ubbgbrgggbuwggwgrgbgrgwbwggrrwbrggwgubuwgrwrbwrg
|
||||||
|
wggruuggrwbwrwrugwgbuwggwbgrbuggrgguggubbrbruuu
|
||||||
|
ggurbuwwbbubrguuubgwugugrgrguwrwbrubrgbwwrg
|
||||||
|
rgrgbbbbwwruubwuwguwgububwgruwgruggbgggbuggwwgwuwwgu
|
||||||
|
guwugugbrrbrruggwrbwbbgbburubwuuurbugubwrrug
|
||||||
|
grurwuuwrbguuwgruubwwbuubwbuurgugrgrwbggggwugbgruuurww
|
||||||
|
wuugguggwrrgruwgbbrrgbwbruubgrbbrburgugurgwggwgggrrur
|
||||||
|
grgbbrwuwwrrgggwwwuubuggwrbgrgbwrwwrrwrwguwggw
|
||||||
|
bwuuguwwrbbgrwubbbrwwwrrururbwgbrrrrwbrbgrbgbbu
|
||||||
|
urggrwbggwubgggrwwgwgbwbggwggrwrrrbgwrruwbbrbguuwrw
|
||||||
|
bubruuwrrbbruwbbugwuuwbwwbwbbuwubgrububwwrgwubgrggrruwggg
|
||||||
|
rurgwubgbwrrwuwuuggrrrwwgwrgburbggwwrubuwwuwgwruwurugw
|
||||||
|
wgbgururuggrbrugbwrguruugguubrgwrgguwgwruwbgrrr
|
||||||
|
uubwrbrgggrugurgbrwuugrwrwwwrgbrgwwugbwubwgrr
|
||||||
|
bggugwwurguwbgbwbwbuwwbrruubbgbbrbwbburugrr
|
||||||
|
wrwbrbgbbrwugrwbbwgbgggbrwurgrwubuggwurrrugu
|
||||||
|
grrwbgubrrwruubuugguurrrbrbubbrwgrbbguguub
|
||||||
|
uburuugrwbrurguwgrgwbrrrgrbbgbrbuwrrbugrgbrbbug
|
||||||
|
wgbuwuuwuruwuwuuwuwgggrbugburubggbgubwgbuuggbur
|
||||||
|
wuugrbbwuguwuwwuuruwrwbgurrbbwbwwrwuugbwgbuugbgwwrwwwgw
|
||||||
|
uruburbbbrwbuwrrbrbguuggbguruwwrruburwgwggr
|
||||||
|
rurbbururbwuwuwrrrbbbwbuuwwwuwrrggurgrrurgruggwuubwrww
|
||||||
|
wrbrwwggubwbugrrrgbugubgruggurwwrwuwwwrgbrrugbbbubwgwb
|
||||||
|
gwruggbrbbrwubgbuwwwrugwbubgugwuuugggurwuuwrururugg
|
||||||
|
bwgububwrrgruwubrrubwwubrwrbgrurwgrrrwbrwbubggw
|
||||||
|
urwrbwwrubbuwrbbwgugrbrburrgbbuugbbubbbugb
|
||||||
|
buggwggugwuwwwugggbrrrbbggwwuguguubugbrugu
|
||||||
|
wbrwwbwuwbwgrubbuurbuurgwubrwwwuruwuurbrubbugwuw
|
||||||
|
bbrbggbgwuguburwrgrbgrbrbugrgwbwubgwwuwbwbwrbwrwbgb
|
||||||
|
wuugrubwgggbugrbwgwgurgwuubuubrbrrbbruwbwrwgguwrrrwbwgbbw
|
||||||
|
wuugwgbwrrgugguwwgbwgbbwgbbgbgwuugbbuuwgrburuuurwbggwgrugu
|
||||||
|
wgrrwwugbugbbrrrrburgwbgrgubbguuwbbwwrbbbwuurrwbruruugrg
|
||||||
|
uwwgbwbuuwgwbbbggbwrrbwugwbruruwbbwrrwurwgbgw
|
||||||
|
gruwuruuuuuurwurwgbbggrubrubbgbrwubrbuwbruwgb
|
||||||
|
wuugrbubwrbrgwubrggugwbrgbggbbgwurrwgwrwu
|
||||||
|
grurbbbgbbubgurrrbrrrwwgggguuubuwgbwgwrguwu
|
||||||
|
ggwgbrwwwgrwgrgubrbugwuwwrbgwwgwwgurrbgburuwrgg
|
||||||
|
urwbwbbbuurubwgwrwbgrgruugwuuubgbbwwrurwwrbgugwgwbwggrbgub
|
||||||
|
wwwguggbrbrubgwggbrbbrgbuuuwubbwrbugbbbgruwbwwurggg
|
||||||
|
wuuurrguggwugbggggwbwbrrwurrbgwgwgbuwubgwubuuwbugwbwbwwwrguw
|
||||||
|
uwrgubwbrbbbgrwruwgrggbgbrwgubguuuuugwuwgwuubbgrgbgub
|
||||||
|
uuggugwuwrwgbrwwgrwgwggrbuuwruuwgbrbwrbugururuww
|
||||||
|
rwwrwurbrgwubbgwgggugbwwrubuggrgggurbrgwrwrwrrbwrwuu
|
||||||
|
rwbubuwrrgwggrrgrbwwgrgbgurrbrbrggrbuwwbrggwwrwgubrwgub
|
||||||
|
gurbbwuubbrrgbrurbwrggwuwwbrbuurwbubwwwrubggbwwgbwbrg
|
||||||
|
uwbuurrwbrgrgrurggwbwgrrwgwrbuwwwuburugugbugwuwwbrrubwu
|
||||||
|
rbbrwgwrrbbgwbgrwbrrrwwuuugrwbggrugrbburgbugburggbw
|
||||||
|
uggbgrgruubgggwbrugrgrbbbbwbwbgrbrrgrwbwrgguuwruwrwr
|
||||||
|
uwbbbuurggrbrurwgubrrrbuwgrgrrrrbwubrwrbbg
|
||||||
|
wuuurrbwrgwrguuwgrrgbuwggrbbwbuwbgugrwubwugwbrbg
|
||||||
|
gbrggbbwgurgrrbrugwrbuwgbrwbbbubgwggrurgurrw
|
||||||
|
rruwuwuuuuugwwbwbrrbbggrruwbgwuuuwgugwurwrg
|
||||||
|
gugrrbwrbrubuubgggbwbwwugugwrgwguurugbwbwwggrggbgrgrrbrw
|
||||||
|
ubbubwbuwrugrguggwwrwbbwbrbwrgwwbguwuwgwwwbwwbggbrwb
|
||||||
|
bbruguwgwbggbuubbgwugubrwbuwuwbgrgwwguwwwggruwgbb
|
||||||
|
grbugrrgwgbrgbuwrwbbgwbrrbrubrgwurbwwrwruugg
|
||||||
|
ruuruwbubugrgrbggrgubggbgrwrgwgrgbbubuwwwurbgguwr
|
||||||
|
rrwbbugbrurwgwbwwbgurgurwwwguugguwrwguwuggwgwb
|
||||||
|
wwuwgwgburubbbwggrrbbbbwbgbubguwrgbrrwubguurwwgrbgurg
|
||||||
|
urwbbbruggrwwgbuguuwubgubrbgwubwgwwrwwgubggwwrgbww
|
||||||
|
gbuurrwrgggwurrwuggbruwurrugrwrrbuwrggbwgugrwrwurwruwu
|
||||||
|
buuwrwuuuwgwwggbrbgbguuuruuuubbguwgbbbwgwgbuuwrrgbr
|
||||||
|
ggrrburrbbwrrwbwwubuugrgbugubwubrugbgwugrgu
|
||||||
|
uuubbwrbrwgrwugugbbgbgwwrrbuguuuburgrruugbwbbrwrbrbbwbrb
|
||||||
|
uuuuwrubrruguuwbwwugrrruwwburgbbggrgrgwbggubuuwu
|
||||||
|
wwgrubrrubrwrbgwrwgbguwgbbrgrrubbwbubbburbwgrrrub
|
||||||
|
bgwrgbrbbbuguugguguuubuugwbrwwurwuubrguwrruuuw
|
||||||
|
wuugbbbwuuguuwgrrwrwgwwwwwrbwgwrbwguwbrbgugubr
|
||||||
|
rgruurbggrbubwwbuwwuwuwwrbbgbgbguwrbbrwubgwrbr
|
||||||
|
uuurrubugrwwuuguwrwwwggubbbrbbbuwbbrggwuggru
|
||||||
|
wuuuurwgrwggwrruuuwubwubggrbrbwgbrwbgbwwurgbrwu
|
||||||
|
wuurggrwwbgwuwwrburuwrwrruruubgggbrugwwrwgbuwrbwgbur
|
||||||
|
ggrubgbbwruggbuuuwgrbwruwgurbwbubwuurubugbwg
|
||||||
|
rwwggbubrwurgwrbrwuwugbrrwwubuwrwbgguuuuwuwgwurgbwguw
|
||||||
|
wwbubuubgwwrrgbruubgggrrbuuwrugwbubrwgwbggbgwu
|
||||||
|
bwwgrrbbubbwrwwwguwbuuwgbbwgbbubrguwbbbgrugubrwg
|
||||||
|
wgubbgguwgbrbrgrggubrrwwgrrrwugruggrurrbubuugwbgwuuwwwwgr
|
||||||
|
wwbgwuwggugubgbggwuwgwggrrurrbbrrrrbbbgurwrrbuggg
|
||||||
|
rubguwgwuwwbuguguggurgwrwgbrbwubgugrurbwwwwbbuwu
|
||||||
|
rrwrgrwggubrwgwrwwuugrgbbrgrubgwrwuugrgbbgugbgrburrrrrugwu
|
||||||
|
bbgwugrgwbggrwwwrgbwburrwrwurbwgugwgwgrbuugwwuuwgburggggg
|
||||||
|
uuwbwguuwrbbuggbwggbgrbuwbgugwuurrurrgbrbuurwbwurrr
|
||||||
|
wurbwrgrgrrbgbwbwwuuggwuwuwbbwwuwgwgrwggubbgrwggbrrggur
|
||||||
|
wugrrubbggwurburggurrgggwuwwuguugrggurrgburrbrbrwgwbuwbg
|
||||||
|
wrugrbrwuwrugrbwurgwruggwrgwuwrgwuuwbwwggwubbgrwggwguwww
|
||||||
|
grbwguwbbbrwuwggbgurgbgbbwbgwwbwrrwbubrgubbgubgwwurggwbrbg
|
||||||
|
uubrubgurbgrgruwbwwugbuwgugburuubwuubbbrbbgbuggbbu
|
||||||
|
bbgbrwbwrwgbwrwwbbbrrugrwgbwbbruugurgggbbrgrguwurubgwbw
|
||||||
|
wwugrubrwrwburubwwuubbuubgburbbrrrruugbbwwgwbrrbubgbgbuwu
|
||||||
|
bwugrruubwwrbwbrrrbrrrbbgwrruwwbrgubugrgbwgbbrbgrwgwwwggr
|
||||||
|
wgugrrbbubgbgrrbbrwguwgbbgbwggwuuurrwgwbwrgwwuuw
|
||||||
|
wururbruwwwwurwgurwbwbuburrgruuwrbuguggwgubrgrruwwgwbbg
|
||||||
|
ugrwrrrwguwgrgwruwurbrrgruwubbubrwbwuwwrbbwbbggggr
|
||||||
|
rwuuguburgwruwrgbbuwggugbwrwuubrugrrruuwgggubbuwbrugrwuu
|
||||||
|
bgwubwuurwurbgugbuugbgrrugwrbwgrwrrwbgwwwgrguwwububuwbg
|
||||||
|
urbgbbgrrbuwrrguwrwuwrbbwgubwurugguwugururwruuubbgurrbg
|
||||||
|
grruugrurgwwbbrgugbburrwrrgwwrggwwrbwwbbwururwrbgguu
|
||||||
|
uubrwgwuubgbbgwgwuggbuggwguggwgrguwbugwwuubwwb
|
||||||
|
bbgubwurgurgguwrwrbbubbggwubwgbbwggwuuwugbg
|
||||||
|
guwbbwguurgwurbrgugwbwwbgugbgwwugubbggwugwrwgrb
|
||||||
|
wrruwbubwgwgbrwrbbbwuuuuurbwrbgwubrrugubwwrugb
|
||||||
|
gbuwwbubrrbggrrbugrgruwbrruurrburrgbggwbgwgbbggwggggbgrg
|
||||||
|
rwrbbbwbggrubuwgrugggbrbgbuwgrbrrbrrbwgwgrbuubgw
|
||||||
|
burbgruuwbbwuburbgrbuuuuurbuwbububgwwgwbrguubrguugwbbwbw
|
||||||
|
ubrrrgubrgrgbuuwgrrrwwbruuugbrrwbgbrwgrgww
|
||||||
|
uuuubwwwuwwbguwwbwgbwrwuwrwgrggrbgrbugbwgbrggwgruwrw
|
||||||
|
grwgruggbrrwuwrwbggwwgbrrwrwruuggbrurrbubur
|
||||||
|
uggbrrggwbwbrbwgurbbbrbbgwbrgbgwrbwubrurgw
|
||||||
|
ururbbrwrrwwbgubrbbuurguuwwgruwgruuurwbbwruurggru
|
||||||
|
grbwbrubbrgrwgbwubgbuwwuuwwrubruugwwwugguwrgurgrgu
|
||||||
|
wbwwugggwwurwrbugbbbrrgbgbuwggrggbbgrburbguurb
|
||||||
|
brwbbgwbgbrbbgwbrruwugwbguurubgwwgurubgrwuwrbguwuwrrgbwubu
|
||||||
|
rwugwrbgguwuggwgwgrbwbwwgwbwrrgrbbbwubgwggwrwurgwrwb
|
||||||
|
urrbwwgrruwwwrbrbwrgbrggwbggwrbbwwrggrgbbg
|
||||||
|
wurwwgwuurbwwgrrbbubbbbgugwwurrggrurbwrbuurbbbb
|
||||||
|
wggwrgurburuurwgrrurgrbubgrrgbbbwwrgwrurwrwwrgubuugwur
|
||||||
|
wrgubgbbwbbwruwrrgwgbrruubwgrurgwgrbugbgbggguwbrwuu
|
||||||
|
bgrwuwbggwwgrwbbugwuuwwwbrgugbbrubgugwbgugrbuwgrrbbubbwrrr
|
||||||
|
bwuwgwgugggrbwgruugbwruruwwbguggrbgggrggggwwuuuwugbuwuwgu
|
||||||
|
ruuugrurrrbrrbwuwbubrugwrrbgugbrwuurruwuwrbrbrwubwbwgur
|
||||||
|
rwugrbuwgwrwrbubggwugbrrgwwubbguuwbgbwuggrrrrggwrbrr
|
||||||
|
wbbrrruwuwubrgbrgbggrbgbburbugbwrrrubbbbggrurrrwb
|
||||||
|
ggruwrgubbururbrggurburuwrrwubwbuwwruruwbwuubwbrwwwrwr
|
||||||
|
wwuurwuwrwbwguuwwrbwgbuurgbbrgrbgwgwggwrgwgwwuuwgrwbuwrgbu
|
||||||
|
wuburbrwbgwrruurbrrrgwgbgrwgbwwwbbgrugubbrwuwububbrgbw
|
||||||
|
gwbwwwgrubwrguugbrbrbggguguuuugggwrbgwguwbrwwuuwggw
|
||||||
|
ubrbruwbururrrgwurrrbrrubbgbwrrggubbuburgwruwggurbrwb
|
||||||
|
rbrbrwwgwwurburubwgugwwbwuubuwbrwrrgugguwrbrrgbrrbrbw
|
||||||
|
grgubrrwbbwwwbrbbwbwwbgbbwrwrggbrrrbwwbwgbrgugguwuwubub
|
||||||
|
rurbrbrggruurgwguugugrrwrbuuwbwrubbbuburrwgruubu
|
||||||
|
ubrwguwgruuwwbbuwbrubugrgrurwrbwbwgbwrbubrgg
|
||||||
|
uuwgubuugwrbggbrrwurbbuwrurbubbbruwgrrrbrbwwwg
|
||||||
|
ububuuwuwwrugrrwrrbgurbrrrggwuwrubbgwwwurbb
|
||||||
|
bwugrrrgwurwgrbrwurbbbwbrurrwwgwwugbgbwgwuu
|
||||||
|
bbwgugurwurwbugugrgwburggurwrbbbbgwwbuubububurwuurggwubg
|
||||||
|
wuugbgbbwuubbbrrgbgubbgrrrbrgugrbwguuwgburrwrguuwgrbg
|
||||||
|
urbguwwwuugbgwwubwurubrrwbruwwugrgwwburrugugwbwbbu
|
||||||
|
uguugwgrgwburrrugbwuwgwrbwurgbbbbbwurbbgubwr
|
||||||
|
wuwrrrwwwwbwburbuburrrbgwuuubbwggrbwuwwgbrbrbwrw
|
||||||
|
wwbwbuwggbrgbrbwrwgguggwbugggrbwgwrgrgbgrrgbuurwubbr
|
||||||
|
rugbgwgugrgrugwwgwruurwbrwuwggbbrbrrggwwgwbubbug
|
||||||
|
wwrgubrgbwbbbrbuubuurbwbgbuugbwgguwrwbugbwrbwuwwrgb
|
||||||
|
bbrrwurbggbguwgwggrwbbgguubuuurbruwwrwuburbrrg
|
||||||
|
wuurugrubwrrbbrbbwbubbgburrrbugwuwwrgrrrwwbwg
|
||||||
|
uwgbugbuugrrwrwwuuuwwwrrgbubwugruubrwburgbbbbruwwgubrugb
|
||||||
|
wrwwuuwguruwrgrwgurwgrurwggubugrrugwggrbgbuu
|
||||||
|
guguugwrruwurugwgrbbwrbwwurwgggubugrugruuwrubbbgggwuubgrrr
|
||||||
|
gwuggrwbrgwuuurrbgbwbwrbrggguuwbubbrbrurwwuwugrubrwrwubwgw
|
||||||
|
ggrrwwrrggwuguuwgbgbgrbbbbgbwrrgguwgwggurubbugbgw
|
||||||
|
rbggurrgrrgrrbrbrgrbuggwubwwburrrrgbbwuuuuuwrbwbbgbrbwbwwb
|
||||||
|
bwugwbwububgbgwrbuuuwrruwgubbgruggburwburbrrwg
|
||||||
|
urrrbrwbguugwgbwrubguwwrruuguuwrbgwgwrbugwbrggbgrbuguubb
|
||||||
|
ururrgbbruuuwuubugubugbgwgwbruwgwwgwbrbgbubgwwgurgwb
|
||||||
|
wbwbrbgwurbgwbuwwbbbrrbbbuwrrgbwgurwugwburrrruwrgb
|
||||||
|
bbrrbgrrwbwuuuwwruwurwwuwgrwbgwugbgwrrwwwuubggrgrgrgrbwbrb
|
||||||
|
guguguwguwbggubbgurbugrwruguururuuuuggbrgrwguwubbwww
|
||||||
|
gwgurbrwguubuuuggwgwrurruwbuwrgwuuwugrrgrgrwrwurubuuuwgwg
|
||||||
|
rbuguuubrgwwugurgugbuugrrgwbbgubuuurguurruwrurbrrgwgrurrw
|
||||||
|
bgbbgrbgggwggbwwuggbrrbbgguurgrwuwurwrgwgugwbwwgrgubbb
|
||||||
|
rrrurgbggwgrrugurbrubbgwwrwuugwuurgrwurwrwbuugwuurgggwbrww
|
||||||
|
bburbwwrrwuuwuwuwubbwurwbwwrbwrubwugruruguwbu
|
||||||
|
rwbrwugruuruuwgugbbrrgwurrrburwrbugrubbbrg
|
||||||
|
rurugubuggrugbwrwwuwrggbrwruuggurrrgwgbgbwugrgbrurr
|
||||||
|
rrbuuruwrgubbubbgbruubgrrgwrrwwwgubwbuuburwurgurruwwrbbrw
|
||||||
|
gbggubwgrwwgwbgugbwrwgbwgubbbugggwwwrrbbggbwbwr
|
||||||
|
uruuugbubwuwrubwgbbrggrwwbguurgwgugbuwrgwbbwru
|
||||||
|
wuurrrwburwbbugubwwrgruwrrbgrwrrwwbwbbrruggbwuug
|
||||||
|
bggrwbgbwbbbbwwrurgwbrwuuuubwwbbububrbrgwgrwbrrrbrugrrrgrw
|
||||||
|
bguguurrgbugrrrwugrgggrbguwgruuwbuwubrurrrgb
|
||||||
|
ggwgrgbwrrrwuugbwbgbwgbbbburbrwbrwbrrrwggurbwrrrbbbgrbwuu
|
||||||
|
uugggwruuuururgrggbrwuggruwbgbuguuwwubrbbgwbrgubrgubrgbbww
|
||||||
|
uubwuuwrgbbrbwrbrbbugbbrbgwwrwwgwggbubwwgwuguwububgbu
|
||||||
|
gugbwwrwuuwrwrgrubwrwgbrgrguburwbrwwrbbgwuuggwggu
|
||||||
|
wwwwubbgrbubbwuwgbrgbgwubwubwgrrurwgrrggbgubburwgurgwb
|
||||||
|
grrrrwugwurbgrgwubbgrwrwbbuwguwgbbggbwuuguuwggrubwwuwggg
|
||||||
|
rrugggwburrwgbrbwbgwgwuwbubugwwrrwugwrrrwwbub
|
||||||
|
rbrbgwuwbggggwrbgwgwbgburwgurguguurbguguguwguuwggwgwr
|
||||||
|
wbbgrwbrrrrrbrurgrbugbuwrubwuwrgrwgurbgruuggurrrw
|
||||||
|
wrgrgbggrwgugbggrrgwuurrwbgrwgbubrbwrrubrggbrbgrrwuu
|
||||||
|
wuurbbrgubwrgurrugbwubbrbubruwbugrrbrwuwbbbbbbbwuwuw
|
||||||
|
wwrggrbbrgbuwgrrgwbugrubguuggugurgwbuuwgbguurgrr
|
||||||
|
wbwrgugurrwuuwbrrguwbgwurwwbbbgbgrgrwgbbuuwurburrbub
|
||||||
|
ggrbgwuubgrbgwbbbubugwruubuwwwrbgbwrggggggbubgrbwrw
|
||||||
|
bugrwrrgbwgugrgbrwburgrgbwbbrrwbgguwrbgwug
|
||||||
|
wwbrbbrruuwbgwrurgwrrguugwgrbbgbgguugubuwbgwubuwgbruuburw
|
||||||
|
gbugbuggrggbuwruuwbwbbrggrbubwbbwrrrbwgrguburrbwguwugu
|
||||||
|
ubgwggubbgguugguruubbugwuuwrbwgugbuuruwgwgwubugr
|
||||||
|
rguwbrgwbubwggbuubrrwgggggruwuuggwbbrwbgwg
|
||||||
|
ggbugubrbbrbwbruwwrguwbgruruuuwruugwbuwgwrgwurgwugwwbggub
|
||||||
|
gwuwburguwwgbrgbguguwwrbwgwurbbgruuuubwuubbwubgbu
|
||||||
|
bguwwrugrgbbuguwbwrbubbrwbbubuggwbgbbwwwrugbrgwrbwggu
|
||||||
|
wwwrbuuwuwgwrbwruwuggubrgbgwbuwwrrgguugbruuubrwg
|
||||||
|
wuuuugrgugugguwwrgurwurbbbrwbwwrgwuuwubgwru
|
||||||
|
uruuwrwrugrwwwwwrgbbwgbgbrwrwgrwrbbbrggurrrw
|
||||||
|
bggbbggbrbbrrgrgwurggrwbggrgggwbrbwwuguugb
|
||||||
|
bbrugbgrurwugwbgbbgrwggbrgbuwubgbrrwbbubwbrb
|
||||||
|
uruwbbugbwrrrgggbwbrrwgrrbwrgwgbgurrbbgwrrgwbuwgw
|
||||||
|
wrrrrugwbrgrgwbguwrbbubrwubwbwwwwwwbburbuwgwwbubrugbwguug
|
||||||
|
wuugrwrwwrwbbgwgugugurrwbbwwwwugwwbuuurbwgwrbbggugwwwwbgur
|
||||||
|
uuubbrbrrubwgbwbugguwrwbgwrubwbgbbubgrwugbgrwurubgrgbwrr
|
||||||
|
rbuguwurbrgwbubwwuwggrwuwgrbgburgubrggrgrbwwwbwbu
|
||||||
|
grrbgwgrbwbrwwbbwgbgbbgrbguurbrwwwgugrgubububbwwbuwugrbbr
|
||||||
|
wggguwwbwrrburbuwbwgbwbugbwgrurrrbrgubwbwug
|
||||||
|
uuwugrrwwbguuugrbrrrbuwuubrguwwgrggwrgubbb
|
||||||
|
ugrbwwgruwbrwbbbrwrruwbwgggugbrrbwwurbggwururgrgurwuw
|
||||||
|
rwgurbrbgwgugwuuuuwbggwwbbgrwrgrbgwuruuubgu
|
||||||
|
bgbrwuuuwrrgbbuuwuwwrgrgbrbrubbbbbrwubbwrbgbuuurbrubuwuurb
|
||||||
|
bwgrbrugwggubgrrgbbrugwbbubwwbwwgwrbgwgrurrrbugwguruwu
|
||||||
|
ugbggrbwrrwwbbrwuurbgwwbuggwggbugbgrrgwbrurrguwwubgwrgw
|
||||||
|
uruuwuwwugubwgrugurbggwgrwuuugrgwrrwuwgrrbwrg
|
||||||
|
wbgwuwbgbwuburguwbugwgggrrurgbgugggrrbwugugrrbbbwuguuuurbg
|
||||||
|
wgurrbuwuruguurgwgwbgugbruruwwggubwrwuuubgwrwwww
|
||||||
|
wguwuwugurbrwwuwrgurrbbrwggrrrbruuwbgrwbgwgubuwuwg
|
||||||
|
gbgugrbgruuwgbgwbgwwbwruwgbrgbggrrgrwrbubrgrbgbr
|
||||||
|
wuurbbwggrbbgwrgurbwwbuwggrurgrwrbwbrrbwbugubw
|
||||||
|
wburgrurggrugrbuuggrrbgwrgwbgububgrwbrbugggwrwrgr
|
||||||
|
ubwwgrubrrrbbwwrgrrubggubrrbgggwwrrrguggbugubrubburubw
|
||||||
|
uwwururrbubugbwugwrbuwruwwwrwurbrbwrrgguubgguubww
|
||||||
|
urbrrruwwrrrwgbwwuwubuuwuuwgubbguubwubgurwwgg
|
||||||
|
gbrbgbbrrrbgbgbgwbbgwgggbwbrwbbuugrgrbuuuwubrgbggrrgwuubw
|
||||||
|
gububrggbugrrrwrbguggwwwbwuurwggrrbgbgwwru
|
||||||
|
bbgbbgbuwrwrrubrrurgguwurbwurrbugbwbrrugrwgwbrwrggbbrwww
|
||||||
|
wuugrbgguuuuubruurgbrbrbubuuwwguwguwurrbbgruubburwwbbrb
|
||||||
|
grgrgrruwbuuubrurwwwugrrggbbrugwrwgruugburu
|
||||||
|
rrbbbbrguwrwgrwgwgrbwurgwrrwwbbgbgburbgwgggwb
|
||||||
|
rwgwbrwwgwbguguwurgwurbwwbrbgrbgbruuwbuwwrgug
|
||||||
|
wuugwwuubrwrubrbgbrwururuuburwggrurrgbwubwuggubbwbruuuwrwg
|
||||||
|
ubbgwbugrwwbuwrggrgwgrrwrwwgggurrrgbrwgrwubrwrur
|
||||||
|
bwububgwwbuugrwrggggrruguwrugwrgbguwrrbgbbbwburruwrgwrurg
|
||||||
|
rruwguuwwgrgburwrbrbubwgbugwggrurgrwbubrguwuwbbwgrbuww
|
||||||
|
rrbbrwwbrgwwuwrbwggbubbuwwwwwrbrwbrggrubwg
|
||||||
|
wrwbwwrbuubwwuubwrwrrbruuwwbwubbbgbgwguwburwuubbg
|
||||||
|
ururgrwggrgugugbwrbggwgugbrbugrwwgubugbrgburrurbrggg
|
||||||
|
gwwuwuurwrbbwuubrururruggrgrgwurrrgbrbrbguwrr
|
||||||
|
rgwwwrwbwrggruuburuugbruuugbgbgwgugwbugubuwwgrrrru
|
||||||
|
wwrgrbwugurbgrgwgruwrbwuubbwgwggrrggubbwugbwwrrrgbbwuu
|
||||||
|
gbwurggwgrrguurgwwgrggggbbbwgburwbgrgwwwwbr
|
||||||
|
ggbbgrbbwbbgwburgggwgwububrbwbguuurggbubuuuwbwggugu
|
||||||
|
bwbrwuwuuggbubggrwgguwugbgbubuurubwrugubwrurrugguuwrbr
|
||||||
|
ubrrgrbbrrugubuuubbwuwrwbggrbrbwgrrubbuubwg
|
||||||
|
uurbbubwuugwguwrbrgwrbbrrruwwgbwwubrgrwubguugrgwuwrg
|
||||||
|
wugbrwbrgbwugubwrrgurrrgurgwguubwgrwrbggurrbgg
|
||||||
|
wubwgrugruuuwuugwwrugwgbbgwwruuwuggurwwbrruw
|
||||||
|
bwrgruurugbwwwwbwrbrrrbrggwbburrwwugrruurbbwwggurbbbr
|
||||||
|
burrrgurrwrggbuwruwgrwwbwbgugwwwggwwurrbuwbuubbrrrwr
|
||||||
|
wrrrgrwgwwwrwgrbgrrwuuuwgwrguwwurrrubguwurgbrb
|
||||||
|
uwgwurwrwgwgbuwbgrrbubwwbrbuurubbrbbrrurubwb
|
||||||
|
wbrggubgbwbbwgrrurwwburbwruuruwugrbguwrwbuwuwbwwbuwbu
|
||||||
|
rgurgrwrurbwbwbrruuwgbwrwwbgwuubgwrugwbrwwbwbguwwbgrgrugw
|
||||||
|
rbggubugwbbggguugrwwbrwgwbgburggrgrbruubwbrbrbrbugguwwrgb
|
||||||
|
wruuggrbwgwwrgrwggugburwwgwgbrurwwgbgwuubrwbrgugubrwgbwgu
|
||||||
|
bggwurruuwwrggwbgwuburrwbrwrbwwrrggwuggrburgwguu
|
||||||
|
uwrrguugbwburwubwbuwbwrwgbgbwurguubbwbubbwbgrrrruub
|
||||||
|
rugguugbgrgbwrruurrbwbrbrgururrrwguurgrbrwgwu
|
||||||
|
bggbgrwgruwbugwrugwbwbubbwgubgubwbwwwwbgwrwrgwrwruwgwbuw
|
||||||
|
gurururrwguwuwbggbggbbrbbwbwgububrrubbrggrwgu
|
||||||
|
uugwubgugburrgrwurrrgwwgwwwrwubgbgurwrwuwuggbbguwrgugbgu
|
||||||
|
urbwgbbugrbrruwwwrwgbbbwggrwbbuugurwgwguug
|
||||||
|
rbrwwwrbrgwrbwbbugwugbguuggbbgbrgbuwwrgbugr
|
||||||
|
rbrubgwbwbubbgbubwwwrbgrwggbbguugwuguwwgwbbbbu
|
||||||
|
bwbgurbrbgugwrrbgbuggbrrbwwbrrgbwggrrwubbwbrgwg
|
||||||
|
grwuggugggurrbwbuuwrrwbgggwbruwwrbwugrrwrgguwwwrbgbu
|
||||||
|
rguwbbbrgbgrgbbuwurwuwbbgwburuwbugubrwgubrrbbruwbrr
|
||||||
|
uruwrbruruwbubbrgwwrruwrurbgwrurwwgwrruggrbguwurggggg
|
||||||
|
bbgbwwbwgbrggrgbgggrgrrwgwgggwgggwuuugrbwrrwbwb
|
||||||
|
grbrbbgubgbgwuwwgwrbgguuwugbrurwbbugrrbwrru
|
||||||
|
wgwwgbwgrurgwgruwugrbbbbrgbgbbugwgubwubgwwwur
|
||||||
|
wgurubbgbbguuwggwgrwbrgwbruwggrbrrwwuugbgwgwbbgggwg
|
||||||
|
uubbwggugwrwurbwwwuubgrwbbbbwbguwbgbbuwgrrburrwguguuwuuu
|
||||||
|
urwrgbrgubwwubwurwwrrbwwwgbwwrbuguuguuugrubwbbwwwubr
|
||||||
|
wwgwuurbburbwbwwwugrbwggugrrwgwugbugubububuurur
|
||||||
|
rugbwwgwwuwbbwbrguguggugrruubbwrwbrurwwwgwubbrrwwb
|
||||||
|
wuuuwrgbwruwwurrrgwwrgugwwbubgbbgbggrbrgg
|
||||||
|
wugbuwgbugwrrrgbbbgrbuuwwuugrbgbgwrgubugggrgrbugbggggwrr
|
||||||
|
wurwwwgwgbuwggbggwrwbwuwuwuguwwbgggwgrbgwbbbbg
|
||||||
|
gugrrrrrbrgwubwruwrgbruwwwbbguruggbubrwugwbwwbugbuwww
|
||||||
|
bbwgrbrggbuburgrwrbwbbbgbwurrruguggurbwbgrwwrr
|
||||||
|
uguwbbgwugbguggrruggbbrrubuugurgugwuubwbwwr
|
||||||
|
rwgbuwwbwuwwwbguwgugwgrbbuggubgwrurgrbwgbuugbrwr
|
||||||
|
wurbubbrgburwguwrrwuggwbrrrugbwbuuruubrrgrguuwwuururwrbww
|
||||||
|
rbubgwuubrrruubrbwbwuugugurrwugurwgwbwrurb
|
||||||
|
bbgrwuwwubruuwbwwgrwrbrgruruuwubuguwugbgrbgrwugrwrgbugburu
|
||||||
|
wuuuwwgrgurbgbwbwbgrrugbrwggrbrrubgwurwurgrbbrbu
|
||||||
|
rwbbuugrbbwubwubwrurggwwuurbbwggbwuurubrburuguwrrrrw
|
||||||
|
bgbgugwwubguuuwbuugrbbgwwwgbuwurbrgrgbuwug
|
||||||
|
wuugwbwgwwubwuuuwuwgwurburggbwwbrwwrwguuruwubwbguuwgw
|
||||||
|
grrbgrbbugwguwbrburrbrrwgbbrgrruwwurubbuwbgubbwgruwbgbb
|
||||||
|
bwuuwwururgugbrruugrrrugrgugugbggbbgbbguurrg
|
||||||
|
rgurgugrwurgbwwbuuwubruwgrwbububuuwruwggwrbbbbbbbwwbb
|
||||||
|
wuugrbgwwwgburbwrwgugrrgbbbgrgbrwwrgurrbbwbwuugugrgbubbrrrrg
|
||||||
|
ubrbgrwbuugrgwuurgrwbbbbrurubgurrgwubruubggwwgg
|
||||||
|
rwwubuuwrrrrwwwbruruuwbuwurwbubrbgrruuuwrwrwg
|
||||||
|
rggbgubbrgbgrrbgwwwrgwubrubwruugbwrwbbgguugubrubuwg
|
||||||
|
gbwbwwgubuubgurruwwwuwrrbuurgggurbbbbubbrbgw
|
||||||
|
gubggbgrbgwbbuwguggwuwgbwrrwwgbrwrrrgwwbgug
|
||||||
|
wuuruwgubbwuugbbburrugbggwwuruuuubbgruwbrr
|
||||||
|
gwgwruugwuurubburrrwrbgrurrwrwbbbbbwuuwbugrw
|
||||||
|
bgbwuwururguwuwbuubwbubugbwbuurwurbwbwgrgbwwwgwbuwubru
|
||||||
|
bruuwbugbbgrgubrggbggbgwuwbwwwrbwuwwwuuwgwgugrgwbbuwubbguu
|
||||||
|
wurrbbwuguuugrgurwwbwbgwbbbwbbuuwbbgurwrrbubwbbbbwubb
|
||||||
|
bwuubrguububbgrubbrgbgwwbgbbbgwbrrgwggwgggurgbwwwwuur
|
||||||
|
wgwuwbgrrurbwgwugwruwbubwgrrrwbbgrbuwubgbgw
|
||||||
|
rrbbrrbbwbbubbwrwgwrbrwwbbbbgwbguwgburwgbggr
|
||||||
|
wuugbbuguruwugwrgwbbuggbwbwwbbuwwuuugwbguwugbwggrbrr
|
||||||
|
gwgbburbguwuurrrgwbuwrurrbuwugwrgbgwrgwwwwurubbgbwr
|
||||||
|
wubugurgrbrbbbwrrwurwuuugwuwrbbbwwbrgbbrurrg
|
||||||
|
wrwugbwwbbbrguwuwugbwwuwgwubbbgrrbrwguuububbggbwwbwwrwbg
|
||||||
|
bugwuwrwuwwggwwuwrwrbruggrurgwwurrguwugwrwg
|
||||||
|
rbrgrwbwrurwbubrugwwgguwrrgwgwuwwbrrgrbrgwruwgbgbrbbru
|
||||||
|
rwwwrwruruuubwgwbgubrbgbgrwwuugruurugbrwbwuuwgbwubggugg
|
||||||
|
uuwugbbwrwbgrgwubgwwgrubbwrbbwwwbbwbbrbwrrugrgggw
|
||||||
|
wggubrrbgrggrwgguwggubwwrbrbgbgrrgugbggbgg
|
||||||
|
uwbuwrrgwguwurbwbbgbrbbrgguuggrrugrwrwbgrrurru
|
||||||
|
grrrgurgwububbuguwrguuuwrwwurbbwrwwguwwwrggbrbr
|
||||||
|
wubbgwbwbrbrgbggurgbrwgrubrurbrrrwrurgbbrwurgrrgugbwurrbg
|
||||||
|
wruwwrwgwrbwubrbwubbbrbuurwwwugwugubuubwgbbbubgrrgbrgbw
|
||||||
|
rwrrbgwurrgrbgrrrguugwwbgwwugbbgwwwuuuwgugwuwuwuubuw
|
||||||
|
rgwwugwwurgubwgrbwbwwgbbbubbrggbgrugguuubuuuugbgbgug
|
||||||
|
gruuruwbwbuururbwrwrgrwuububgwgruggwbwrgwbub
|
||||||
|
gbbwrurugbbwrurwwbgrruwgbrbrbrrgrwrbbgbgwbgwgwuwrwgrgu
|
||||||
|
wugwwgrwbgugurwurbggbrwruwuuwurwrbrwgruuubuurur
|
||||||
|
wgbuwbrbwrgrbwuwggugggguuwgbrbwgrgwrurrurbrgugrgwrb
|
||||||
|
ggwubgbwwwgrwwbbggwwrrggwguubuggubggguuwbwuwgwuuugrgbuubbb
|
||||||
|
rguuugwbrbrbwbgrggbubwrwwrrrubwwuugugwgrbuu
|
||||||
|
ggugbrggwbuwrwgrgwugurrbgruurruwwgrbwwubbuubr
|
||||||
|
ubgwwggbwbuwbbbbbbggbwrgrbgrgugurwggrubburrubrwrrggrgg
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"aoc2024/day04"
|
"aoc2024/day19"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
@@ -9,9 +9,9 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
data, _ := os.ReadFile("day04/input.txt")
|
data, _ := os.ReadFile("day19/input.txt")
|
||||||
fmt.Printf("part 1: %d\n", day04.Part1(string(data)))
|
fmt.Printf("part 1: %d\n", day19.Part1(string(data)))
|
||||||
fmt.Printf("part 2: %d\n", day04.Part2(string(data)))
|
fmt.Printf("part 2: %d\n", day19.Part2(string(data)))
|
||||||
elapsed := time.Since(start)
|
elapsed := time.Since(start)
|
||||||
fmt.Printf("Execution time: %s\n", elapsed)
|
fmt.Printf("Execution time: %s\n", elapsed)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,291 +0,0 @@
|
|||||||
package day06
|
|
||||||
|
|
||||||
import (
|
|
||||||
"adventofcode2024/utils/grid2d"
|
|
||||||
"adventofcode2024/utils/inputs"
|
|
||||||
"fmt"
|
|
||||||
_ "strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Direction int
|
|
||||||
|
|
||||||
const (
|
|
||||||
_ Direction = iota
|
|
||||||
Up
|
|
||||||
Down
|
|
||||||
Left
|
|
||||||
Right
|
|
||||||
)
|
|
||||||
|
|
||||||
type Pos struct {
|
|
||||||
x int
|
|
||||||
y int
|
|
||||||
}
|
|
||||||
type Loc struct {
|
|
||||||
dir Direction
|
|
||||||
pos Pos
|
|
||||||
count int
|
|
||||||
}
|
|
||||||
|
|
||||||
type Point struct {
|
|
||||||
dirs []Direction
|
|
||||||
display string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d Direction) String() string {
|
|
||||||
return [...]string{"-", "Up", "Down", "Left", "Right"}[d]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l Loc) String() string {
|
|
||||||
return fmt.Sprintf("Direction: %s, Position: %d %d", l.dir, l.pos.x, l.pos.y)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part1(input string) int {
|
|
||||||
var loc Loc
|
|
||||||
grid := inputs.ToGrid2D(input, "\n", "", "", func(c string) string { return c })
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
if grid.Get(x, y) == "^" {
|
|
||||||
loc = Loc{dir: Up, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y) == "v" {
|
|
||||||
loc = Loc{dir: Down, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y) == ">" {
|
|
||||||
loc = Loc{dir: Right, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y) == "<" {
|
|
||||||
loc = Loc{dir: Left, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println(grid.Matrix())
|
|
||||||
fmt.Printf("%v\n", loc)
|
|
||||||
grid.Set(loc.pos.x, loc.pos.y, "X")
|
|
||||||
loc.count = 1
|
|
||||||
move1(&loc, grid)
|
|
||||||
return loc.count
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part2(input string) int {
|
|
||||||
var loc Loc
|
|
||||||
grid := inputs.ToGrid2D(input, "\n", "", Point{}, func(c string) Point { return Point{dirs: make([]Direction, 1), display: c} })
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
if grid.Get(x, y).display == "^" {
|
|
||||||
loc = Loc{dir: Up, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == "v" {
|
|
||||||
loc = Loc{dir: Down, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == ">" {
|
|
||||||
loc = Loc{dir: Right, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == "<" {
|
|
||||||
loc = Loc{dir: Left, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println(grid.Matrix())
|
|
||||||
fmt.Printf("%v\n", loc)
|
|
||||||
point := grid.Get(loc.pos.x, loc.pos.y)
|
|
||||||
grid.Set(loc.pos.x, loc.pos.y, Point{dirs: append(point.dirs, Up), display: "X"})
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
grid = inputs.ToGrid2D(input, "\n", "", Point{}, func(c string) Point { return Point{dirs: make([]Direction, 1), display: c} })
|
|
||||||
p := grid.Get(x, y)
|
|
||||||
if p.display == "." {
|
|
||||||
grid.Set(x, y, Point{dirs: p.dirs, display: "#"})
|
|
||||||
l := loc
|
|
||||||
if isLoop(&l, grid) {
|
|
||||||
loc.count++
|
|
||||||
}
|
|
||||||
grid.Set(x, y, Point{dirs: p.dirs, display: "."})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return loc.count
|
|
||||||
}
|
|
||||||
|
|
||||||
func isLoop(loc *Loc, grid *grid2d.Grid[Point]) bool {
|
|
||||||
for {
|
|
||||||
_, _, err := move2(loc, grid)
|
|
||||||
if err != nil { return false }
|
|
||||||
if contains(loc.dir, grid.Get(loc.pos.x, loc.pos.y)) {
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
p := grid.Get(loc.pos.x, loc.pos.y)
|
|
||||||
grid.Set(loc.pos.x, loc.pos.y, Point{dirs: append(p.dirs, loc.dir), display: "X"})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part2b(input string) int {
|
|
||||||
var loc Loc
|
|
||||||
grid := inputs.ToGrid2D(input, "\n", "", Point{}, func(c string) Point { return Point{dirs: make([]Direction, 1), display: c} })
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
if grid.Get(x, y).display == "^" {
|
|
||||||
loc = Loc{dir: Up, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == "v" {
|
|
||||||
loc = Loc{dir: Down, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == ">" {
|
|
||||||
loc = Loc{dir: Right, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
if grid.Get(x, y).display == "<" {
|
|
||||||
loc = Loc{dir: Left, pos: Pos{x: x, y: y}}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println(grid.Matrix())
|
|
||||||
fmt.Printf("%v\n", loc)
|
|
||||||
point := grid.Get(loc.pos.x, loc.pos.y)
|
|
||||||
grid.Set(loc.pos.x, loc.pos.y, Point{dirs: append(point.dirs, Up), display: "X"})
|
|
||||||
loc.count = 0
|
|
||||||
for {
|
|
||||||
_, _, err := move2(&loc, grid)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if contains(loc.dir, grid.Get(loc.pos.x, loc.pos.y)) {
|
|
||||||
loc.count++
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return loc.count
|
|
||||||
}
|
|
||||||
|
|
||||||
func move1(loc *Loc, grid *grid2d.Grid[string]) int {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
func move2(loc *Loc, grid *grid2d.Grid[Point]) (int, int, error) {
|
|
||||||
x, y, err := doMove(loc, grid)
|
|
||||||
if err != nil {
|
|
||||||
return x, y, err
|
|
||||||
}
|
|
||||||
if x == loc.pos.x && y == loc.pos.y {
|
|
||||||
move2(loc, grid)
|
|
||||||
}
|
|
||||||
return x, y, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func canBlock(loc *Loc, point Point) bool {
|
|
||||||
val := false
|
|
||||||
switch loc.dir {
|
|
||||||
case Up:
|
|
||||||
if contains(Right, point) {
|
|
||||||
val = true
|
|
||||||
}
|
|
||||||
case Down:
|
|
||||||
if contains(Left, point) {
|
|
||||||
val = true
|
|
||||||
}
|
|
||||||
case Left:
|
|
||||||
if contains(Up, point) {
|
|
||||||
val = true
|
|
||||||
}
|
|
||||||
case Right:
|
|
||||||
if contains(Down, point) {
|
|
||||||
val = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
func contains(v Direction, point Point) bool {
|
|
||||||
for _, d := range point.dirs {
|
|
||||||
if d == v {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkMove(loc *Loc, grid *grid2d.Grid[string]) bool {
|
|
||||||
switch loc.dir {
|
|
||||||
case Down:
|
|
||||||
if loc.pos.y+1 >= grid.SizeY() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x, loc.pos.y+1) == "#" {
|
|
||||||
loc.dir = Left
|
|
||||||
} else {
|
|
||||||
loc.pos.y++
|
|
||||||
}
|
|
||||||
case Up:
|
|
||||||
if loc.pos.y-1 < 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x, loc.pos.y-1) == "#" {
|
|
||||||
loc.dir = Right
|
|
||||||
} else {
|
|
||||||
loc.pos.y--
|
|
||||||
}
|
|
||||||
case Left:
|
|
||||||
if loc.pos.x-1 < 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x-1, loc.pos.y) == "#" {
|
|
||||||
loc.dir = Up
|
|
||||||
} else {
|
|
||||||
loc.pos.x--
|
|
||||||
}
|
|
||||||
case Right:
|
|
||||||
if loc.pos.x+1 >= grid.SizeX() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x+1, loc.pos.y) == "#" {
|
|
||||||
loc.dir = Down
|
|
||||||
} else {
|
|
||||||
loc.pos.x++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func doMove(loc *Loc, grid *grid2d.Grid[Point]) (int, int, error) {
|
|
||||||
x := loc.pos.x
|
|
||||||
y := loc.pos.y
|
|
||||||
switch loc.dir {
|
|
||||||
case Down:
|
|
||||||
if loc.pos.y+1 >= grid.SizeY() {
|
|
||||||
return x, y, fmt.Errorf("outside")
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x, loc.pos.y+1).display == "#" {
|
|
||||||
loc.dir = Left
|
|
||||||
} else {
|
|
||||||
loc.pos.y++
|
|
||||||
}
|
|
||||||
case Up:
|
|
||||||
if loc.pos.y-1 < 0 {
|
|
||||||
return x, y, fmt.Errorf("outside")
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x, loc.pos.y-1).display == "#" {
|
|
||||||
loc.dir = Right
|
|
||||||
} else {
|
|
||||||
loc.pos.y--
|
|
||||||
}
|
|
||||||
case Left:
|
|
||||||
if loc.pos.x-1 < 0 {
|
|
||||||
return x, y, fmt.Errorf("outside")
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x-1, loc.pos.y).display == "#" {
|
|
||||||
loc.dir = Up
|
|
||||||
} else {
|
|
||||||
loc.pos.x--
|
|
||||||
}
|
|
||||||
case Right:
|
|
||||||
if loc.pos.x+1 >= grid.SizeX() {
|
|
||||||
return x, y, fmt.Errorf("outside")
|
|
||||||
}
|
|
||||||
if grid.Get(loc.pos.x+1, loc.pos.y).display == "#" {
|
|
||||||
loc.dir = Down
|
|
||||||
} else {
|
|
||||||
loc.pos.x++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return x, y, nil
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
package day06
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPart1(t *testing.T) {
|
|
||||||
r := Part1(`....#.....
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#..^.....
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...`)
|
|
||||||
require.Equal(t, 41, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPart2(t *testing.T) {
|
|
||||||
r := Part2(`....#.....
|
|
||||||
.........#
|
|
||||||
..........
|
|
||||||
..#.......
|
|
||||||
.......#..
|
|
||||||
..........
|
|
||||||
.#..^.....
|
|
||||||
........#.
|
|
||||||
#.........
|
|
||||||
......#...`)
|
|
||||||
require.Equal(t, 6, r)
|
|
||||||
}
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
...#..................#...................#......................#..............................#.............................#...
|
|
||||||
....#.......................#........#.#..............##...........#.....#..........#..........................#..................
|
|
||||||
.............#........................................................................#.........#.#..#..#..........#..............
|
|
||||||
..........#.......#..........#..................#........##...................#..............#....................................
|
|
||||||
....................#..........................................................#..#.....................................#.........
|
|
||||||
....#............................#..............................................#.....................#..........##....#..........
|
|
||||||
.......#.............#......................................................................#.............#.........#.............
|
|
||||||
....###......................#....#...........#.....#................................#..........................#.................
|
|
||||||
..........#..#...........#..#........................................................#.....#...........#................#.........
|
|
||||||
..#....#......#....#....#...................................................................#.....................................
|
|
||||||
....................#............#............................................#......#....#...............................#.......
|
|
||||||
..........#.......#.........#.......#.............................................................................................
|
|
||||||
.......#...#.......................................#...................#..........................................................
|
|
||||||
.......#........#............................#.....#.......#..............................................#..................#...#
|
|
||||||
.....................#.................................#................#...#...............#.....#.#..........................#..
|
|
||||||
.....#..........................................#......................#.............##..............................#........#...
|
|
||||||
.....#......#.........................#..........................#..........................................................#..#..
|
|
||||||
.#......#.............#......#.................................................#.....#...................##......#................
|
|
||||||
.............................................................................##...................................................
|
|
||||||
........................................#.......................................#........#.............................#.#.......#
|
|
||||||
...........#.....................................#.............................#......#......#..#....................#..#.........
|
|
||||||
.............................................#.......................#..................##....#.....#.............................
|
|
||||||
........................#..............................................................#..........................................
|
|
||||||
#..............#.........................#........#...#...............#..............#..................#....................##...
|
|
||||||
...#...#.............................#.......#................................................#........................#....#.....
|
|
||||||
.....#.........................#..#.......................#..........#.....................#..................#.#.....#...........
|
|
||||||
..................#........#..#.......#...................................................................................#....#..
|
|
||||||
..#...#...............................................#.#..#........................................................#....#......#.
|
|
||||||
...............#...............#..........................#............................#..........#.............#.................
|
|
||||||
............#.....#........#.........................................................#........#........#.....#........#......#....
|
|
||||||
............................#.........#....#........#.....#...#.............#.................................#...................
|
|
||||||
........#..................#....#..........................................................#.#.#..................................
|
|
||||||
....................................................................................................................#.............
|
|
||||||
#............#.............#..................#......................................................................#............
|
|
||||||
...............................#....#..........#...........##........................................................#.........#.#
|
|
||||||
................#.........................................#.................................................#........#............
|
|
||||||
..............................................#............#................#........#........................#...................
|
|
||||||
..................#.........#..........................#.............#...............#............#....................#..........
|
|
||||||
........................#...#...............................................#..............#.....#.....................#..........
|
|
||||||
...........#.......................................#..............................#..................#....#...##..................
|
|
||||||
#...............#..................#...............................#...............................#.....................#........
|
|
||||||
.............#...............................................................##...................................................
|
|
||||||
.................#.............#.......................#...#............#.#....#................................#...........#.....
|
|
||||||
#......#......#..................................##.................#.#...............................#...........................
|
|
||||||
.#...............#..........#...............................................#...#..........#..........#...........................
|
|
||||||
.....................................#............................#....#.............................................#...#........
|
|
||||||
......#...#.............#.#....................#.........#..........##.................................#..........#..........#....
|
|
||||||
.............................#..................#....#..............##.......................#.#.....#........#...................
|
|
||||||
.................................................#.#......................................................#................#......
|
|
||||||
......................................#..........................................#......#.........................................
|
|
||||||
#....................#...........................................................#..................#.............................
|
|
||||||
.....#.........#...................................................#....#.#....#.#.........#......................................
|
|
||||||
........#..........#......#.............#................................#.....#................#.................................
|
|
||||||
...........#................................#...........#..........#......#.............#........................#................
|
|
||||||
.......#...............#....................#..#................................................#.................................
|
|
||||||
.....................#.........#..#............#..........#...........#...........#...............................#...............
|
|
||||||
................#...#........#...........#..........................................................#..#...................#......
|
|
||||||
.........................................................#.....................#...#......................#.#....................#
|
|
||||||
................#......#....#.#..............#............#.......................................................................
|
|
||||||
..........#.....................................#......................................................................#..........
|
|
||||||
#......................................#.......#.....##..#.....................#.........#.......#................................
|
|
||||||
........#...#..............#....................#................................#..............................................#.
|
|
||||||
.##............................................................................#......#................................#..........
|
|
||||||
.#........................#..............#..............................................#........#.....#.......#..................
|
|
||||||
#......................................#.....................#...................................................................#
|
|
||||||
............................#.....#.....#............#...............#...#.......#.........#......................................
|
|
||||||
.#.........................#.......................#.........#.......#.................#............................#..#..........
|
|
||||||
.............................................................................................................#........##..........
|
|
||||||
...........#...#...#.#................#.....................................#........#............................................
|
|
||||||
......#.......................#..........#.......#................................................................#...............
|
|
||||||
........#....#........#..................#....##.....#............#..............................#...........#...........#..#.....
|
|
||||||
..................................#...............................................................................#...............
|
|
||||||
.....................#.#.......................#....................................#.............................................
|
|
||||||
........................................................................................#.........#.................#.........#...
|
|
||||||
..........................#..........#....#..........................................#.......................#............#.#.....
|
|
||||||
...............................................#.#....#...............................#...................#......................#
|
|
||||||
.....#...........#........#.#.......#.............................#..................#............................................
|
|
||||||
...............#.........................................................#....................#.................#.............#...
|
|
||||||
#....................................##..........#................................................................#...............
|
|
||||||
...............#.................#...#..............#......................................................#..............#.......
|
|
||||||
...................#......#.............................................#......................................................#.#
|
|
||||||
..#.............#.......#......#....#..#..#.......................................................................................
|
|
||||||
.........#....................................................#.....................................#..............#..............
|
|
||||||
..............#..............#................................................................#.......................#...........
|
|
||||||
..........................#.................#.......................................................##...................#.#......
|
|
||||||
...............#..#...................................................................................................#.......###.
|
|
||||||
...#.....................#..#........#..........#..................................................................##.............
|
|
||||||
.................#.......................................###..............#.........................#.............................
|
|
||||||
...#.....................................................#.......#..........................#................#..#.................
|
|
||||||
...................................................#..................#.........................................................#.
|
|
||||||
.....#.............#...................#...................#.....................................#................................
|
|
||||||
.....................#.........................#......#...........................................................................
|
|
||||||
...........#...............#......#.....##...#...#.............................................#........#.#...............#...#...
|
|
||||||
..............#..............##...........#.......................#..#.^..........................................................
|
|
||||||
...................#..............................................................................................................
|
|
||||||
..................#.......#..........#.......#..................#..........#...................................#..................
|
|
||||||
..............................................................................................#..................................#
|
|
||||||
......................................................#................#......................#...................................
|
|
||||||
..............#.........#..............................#.....................#......................#.............................
|
|
||||||
#................#.........#................#.............................#......................#..#...#..............#..........
|
|
||||||
.#..#........#................#...............#..................#........#.....................#............#........#...........
|
|
||||||
.....................................................#.#.........#......................#.............................#........#..
|
|
||||||
......................#.....................#..#......#..........................#............................#......#............
|
|
||||||
......................#.........................#..#..................................#.......................#..............#....
|
|
||||||
..........................#..................#.............#......................................................#...............
|
|
||||||
..........................#....#........................................#..#...#....#.................#...........................
|
|
||||||
.......#...........#.......................#............##........#....................................................#..........
|
|
||||||
#..........................................................................#...........#..........................................
|
|
||||||
............................................................#.................#..#........................................##......
|
|
||||||
..#...............................................#....#.................................................##.....#...##.....#......
|
|
||||||
...#.....##..............................#.........................................................#............#.................
|
|
||||||
.....#....##............................#....##..........#...#....................................................................
|
|
||||||
..................................................#..........................#.........##.......#.......................#.........
|
|
||||||
.........#.....#..........#........#........................#.##..#............#.......................................#..........
|
|
||||||
.....#...............#.......#..........#.#..........#.....................#.....................................#.....#..........
|
|
||||||
....#......#............................................................................................##...#.#.#.........#......
|
|
||||||
...........#........................#.....#....................#..................#.#........#....................................
|
|
||||||
....................................................#................#.#................................................#.........
|
|
||||||
..........#..............#.......................#.................#...................................#.............#.#......##..
|
|
||||||
................##......................................................#.................#.......#.#....................#........
|
|
||||||
................#......................................................#.............##...............#.....#......#.......#......
|
|
||||||
..............................#............................#..........#...........#...............................................
|
|
||||||
.......#.............#....................................................................#..............................#.#......
|
|
||||||
...#.....................#.#...............................................................#...#..#....#..........................
|
|
||||||
....#.........##......#..............................................................................#..................#.........
|
|
||||||
....#..........................................#......#...................#........##............#................................
|
|
||||||
..#.......#......#............#........#...#.#...........................#.......#................................................
|
|
||||||
..........................#...#....................#...............#...#......#.#...#...#...............#.#.#.....................
|
|
||||||
....##.#....................................................................#...#.....##........................#.##..............
|
|
||||||
.............................................#....................................................................................
|
|
||||||
@@ -1,140 +0,0 @@
|
|||||||
package day07
|
|
||||||
|
|
||||||
import (
|
|
||||||
"adventofcode2024/utils"
|
|
||||||
"fmt"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Op int
|
|
||||||
|
|
||||||
const (
|
|
||||||
Add Op = iota
|
|
||||||
Mul
|
|
||||||
Conc
|
|
||||||
)
|
|
||||||
|
|
||||||
func Part1(input string) int {
|
|
||||||
val := 0
|
|
||||||
lines := strings.Split(input, "\n")
|
|
||||||
for _, line := range lines {
|
|
||||||
parts := strings.Split(line, ":")
|
|
||||||
result := utils.MustAtoi(parts[0])
|
|
||||||
numStrings := strings.Fields(parts[1])
|
|
||||||
var numbers []int
|
|
||||||
for _, numStr := range numStrings {
|
|
||||||
num := utils.MustAtoi(numStr)
|
|
||||||
numbers = append(numbers, num)
|
|
||||||
}
|
|
||||||
bitmask := 1 << (len(numbers) - 1)
|
|
||||||
for i := 0; i < bitmask; i++ {
|
|
||||||
calc := 0
|
|
||||||
switch isNthBitSet(i, 0) {
|
|
||||||
case true:
|
|
||||||
calc = numbers[0] + numbers[1]
|
|
||||||
case false:
|
|
||||||
calc = numbers[0] * numbers[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
for n := 1; n < len(numbers)-1; n++ {
|
|
||||||
switch isNthBitSet(i, n) {
|
|
||||||
case true:
|
|
||||||
calc = calc + numbers[n+1]
|
|
||||||
case false:
|
|
||||||
calc = calc * numbers[n+1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if calc == result {
|
|
||||||
fmt.Printf("result: %v numbers:%v count: %d\n", result, numbers, bitmask)
|
|
||||||
val += result
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part2(input string) int {
|
|
||||||
val := 0
|
|
||||||
lines := strings.Split(input, "\n")
|
|
||||||
for _, line := range lines {
|
|
||||||
parts := strings.Split(line, ":")
|
|
||||||
result := utils.MustAtoi(parts[0])
|
|
||||||
numStrings := strings.Fields(parts[1])
|
|
||||||
var numbers []int
|
|
||||||
for _, numStr := range numStrings {
|
|
||||||
num := utils.MustAtoi(numStr)
|
|
||||||
numbers = append(numbers, num)
|
|
||||||
}
|
|
||||||
operations := []Op{Add, Mul, Conc}
|
|
||||||
results := [][]Op{}
|
|
||||||
generatePermutations(operations, len(numbers)-1, []Op{}, &results)
|
|
||||||
for _, op := range results {
|
|
||||||
calc := 0
|
|
||||||
switch op[0] {
|
|
||||||
case Add:
|
|
||||||
calc = numbers[0] + numbers[1]
|
|
||||||
case Mul:
|
|
||||||
calc = numbers[0] * numbers[1]
|
|
||||||
case Conc:
|
|
||||||
calc = concat(numbers[0], numbers[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
for n := 1; n < len(numbers)-1; n++ {
|
|
||||||
switch op[n] {
|
|
||||||
case Add:
|
|
||||||
calc = calc + numbers[n+1]
|
|
||||||
case Mul:
|
|
||||||
calc = calc * numbers[n+1]
|
|
||||||
case Conc:
|
|
||||||
calc = concat(calc, numbers[n+1])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if calc == result {
|
|
||||||
fmt.Printf("result: %v numbers:%v\n", result, numbers)
|
|
||||||
val += result
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
func isNthBitSet(num, n int) bool {
|
|
||||||
return num&(1<<n) != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func getOp(row, col int) Op {
|
|
||||||
vals := []Op{Add, Mul, Conc}
|
|
||||||
// Column 0 cycles as row / 3
|
|
||||||
if col == 0 {
|
|
||||||
return vals[row/3]
|
|
||||||
}
|
|
||||||
// Column 1 cycles as row % 3
|
|
||||||
return vals[row%3]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recursive function to generate permutations
|
|
||||||
func generatePermutations(ops []Op, n int, prefix []Op, results *[][]Op) {
|
|
||||||
if n == 0 {
|
|
||||||
// Append a copy of the current prefix to the results
|
|
||||||
*results = append(*results, append([]Op{}, prefix...))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Iterate over all operations and build the combinations
|
|
||||||
for _, op := range ops {
|
|
||||||
generatePermutations(ops, n-1, append(prefix, op), results)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func concat(a, b int) int {
|
|
||||||
aStr := strconv.Itoa(a)
|
|
||||||
bStr := strconv.Itoa(b)
|
|
||||||
|
|
||||||
concatStr := aStr + bStr
|
|
||||||
|
|
||||||
result, _ := strconv.Atoi(concatStr)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
package day07
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPart1(t *testing.T) {
|
|
||||||
r := Part1(`190: 10 19
|
|
||||||
3267: 81 40 27
|
|
||||||
83: 17 5
|
|
||||||
156: 15 6
|
|
||||||
7290: 6 8 6 15
|
|
||||||
161011: 16 10 13
|
|
||||||
192: 17 8 14
|
|
||||||
21037: 9 7 18 13
|
|
||||||
292: 11 6 16 20`)
|
|
||||||
require.Equal(t, 3749, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPart2(t *testing.T) {
|
|
||||||
r := Part2(`190: 10 19
|
|
||||||
3267: 81 40 27
|
|
||||||
83: 17 5
|
|
||||||
156: 15 6
|
|
||||||
7290: 6 8 6 15
|
|
||||||
161011: 16 10 13
|
|
||||||
192: 17 8 14
|
|
||||||
21037: 9 7 18 13
|
|
||||||
292: 11 6 16 20`)
|
|
||||||
require.Equal(t, 11387, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetOp(t *testing.T) {
|
|
||||||
operations := []Op{Add, Mul, Conc} // Define the operations
|
|
||||||
X := 3 // Define the number of positions (columns)
|
|
||||||
|
|
||||||
// Start the recursive generation with an empty prefix
|
|
||||||
results := [][]Op{}
|
|
||||||
generatePermutations(operations, X, []Op{}, &results)
|
|
||||||
for _, op := range results {
|
|
||||||
fmt.Printf("%v\n", op)
|
|
||||||
}
|
|
||||||
r := Add
|
|
||||||
require.Equal(t, Add, r)
|
|
||||||
}
|
|
||||||
@@ -1,850 +0,0 @@
|
|||||||
16183610: 62 7 96 8 6 8 52 3 3 47
|
|
||||||
408936528: 5 1 5 1 9 2 2 8 7 1 725 63
|
|
||||||
20378697464: 101 893 487 2 6 4
|
|
||||||
376576: 4 9 235 57 1 3 6 722 8
|
|
||||||
431880008: 18 66 276 5 295 4 5 7 1
|
|
||||||
379520346363: 858 95 723 8 92 7 9 2
|
|
||||||
18243750: 76 24 3 750
|
|
||||||
7302: 806 446 391 791 3
|
|
||||||
18879037: 7 75 1 94 217 37
|
|
||||||
3887037856: 805 64 71 7 9 856
|
|
||||||
120267: 3 48 937 659 3 69
|
|
||||||
757199: 86 2 69 7 7 8 80 5 8 743
|
|
||||||
5835692: 349 65 110 8 1 8 35 4
|
|
||||||
9693533: 560 33 54 523 251
|
|
||||||
1691420808: 33 720 4 76 84 66
|
|
||||||
27537: 5 2 2 4 296 73 89
|
|
||||||
3099946535: 7 330 5 245 9 4 5 3 7 3 5
|
|
||||||
2430252: 58 1 3 9 47 71 5 19 418
|
|
||||||
379232792: 789 98 6 71 6 8 535 8 2
|
|
||||||
11690268: 2 92 3 2 83 72 1 3 1 6 8 4
|
|
||||||
65091: 225 4 895 1 9 6 5 6 81
|
|
||||||
230263117372: 405 38 568 727 7 372
|
|
||||||
1071440: 6 4 614 67 30 4 7 1 229
|
|
||||||
60445800: 3 7 9 9 9 683 27 8 4 4
|
|
||||||
6834722563: 95 43 29 182 9 317
|
|
||||||
449482: 98 1 458 99 85
|
|
||||||
381868494: 74 992 18 289 78
|
|
||||||
42075: 86 3 28 14 38 18 225
|
|
||||||
105275: 13 751 755 4 91
|
|
||||||
1258023882: 4 79 534 502 61 3 3 9
|
|
||||||
766505: 7 87 21 4 4 7 83 5
|
|
||||||
4569436040: 355 7 6 3 4 7 8 753 4 29
|
|
||||||
182512: 4 1 7 1 6 66 38 8 6 112
|
|
||||||
238680: 9 42 36 65 2
|
|
||||||
81450600: 235 52 86 6 275 2
|
|
||||||
20684471: 2 989 98 2 4 237 3 7 59
|
|
||||||
79521192: 48 98 9 91 5 15 29 18
|
|
||||||
604195918: 756 74 12 2 9 52 7 8
|
|
||||||
43646875223: 62 28 8 5 6 8 730 3 2 3
|
|
||||||
24683153283: 5 12 2 2 462 2 72 24 3
|
|
||||||
13641: 21 664 2 3 655 5 61
|
|
||||||
23364264: 35 5 9 43 39 2 520 8 33
|
|
||||||
1352375279: 9 21 54 9 84 61 527
|
|
||||||
122558095823: 51 58 4 676 99 6 3 7 2 9
|
|
||||||
9153847: 912 3 1 38 47
|
|
||||||
623510: 25 63 6 30 892 86 2 5
|
|
||||||
100277100: 352 773 45 20 90 22
|
|
||||||
19779196416: 7 239 64 716 2 129
|
|
||||||
5982828: 86 3 644 9 2 271 66 4
|
|
||||||
1287462: 3 25 68 2 93 15 6 22
|
|
||||||
11178753676: 9 9 69 3 7 2 4 8 2 6 8 8
|
|
||||||
38798: 3 314 4 4 71 38
|
|
||||||
15055: 1 43 7 52 3
|
|
||||||
58769: 813 2 4 4 3 1 1 8 3 47 7 5
|
|
||||||
716958509: 2 343 612 33 69 5
|
|
||||||
1675: 1 28 41 19 467
|
|
||||||
39178: 3 873 40 3 1 9
|
|
||||||
708235: 340 13 9 2 50 385
|
|
||||||
61112: 7 52 2 107 5
|
|
||||||
9420: 2 9 5 70 4 13 2 468 8
|
|
||||||
23543454: 8 478 2 87 242
|
|
||||||
35262945144: 26 81 91 441 184
|
|
||||||
357858: 68 4 6 9 92 7 9 92 54
|
|
||||||
2718246046: 1 85 4 95 53 7 7 5 6 2 2 6
|
|
||||||
575: 519 2 49 3 2
|
|
||||||
1180: 172 18 58 44 888
|
|
||||||
1206891306: 2 9 1 67 80 9 1 2 9 8 5 3
|
|
||||||
1968096: 6 5 545 39 7 5 2 21 6 6 4
|
|
||||||
74504: 744 97 7
|
|
||||||
452256: 8 355 5 796 81 168
|
|
||||||
418262248: 541 1 482 802 2
|
|
||||||
152402250369: 4 87 8 8 6 319 65 369
|
|
||||||
123797905: 9 7 550 577 1 7 2 5 3 5 7
|
|
||||||
3129360: 73 1 7 5 62 59 20
|
|
||||||
13030160: 58 9 4 748 65
|
|
||||||
3758143: 7 80 6 44 6 7 1 4 17 9 4
|
|
||||||
1058: 521 534 3
|
|
||||||
6027582: 8 55 704 838 2
|
|
||||||
55923132: 971 9 7 137 1 6
|
|
||||||
42362711: 423 614 8 71 440
|
|
||||||
74875: 89 83 85 4 57 94
|
|
||||||
6528: 6 8 8 17
|
|
||||||
376636: 7 9 301 12 636
|
|
||||||
33983238: 77 8 38 925 422 51
|
|
||||||
9773991: 76 738 2 998 6
|
|
||||||
13324553022657: 7 4 20 5 9 5 30 22 646 9
|
|
||||||
99691578: 5 71 1 9 4 7 325 7 1 54 7
|
|
||||||
15561636: 4 3 74 7 10 9 7 6 6 3 3 1
|
|
||||||
133680: 1 59 7 1 24 5
|
|
||||||
768797: 956 3 8 375 7
|
|
||||||
2192068: 4 4 7 2 7 22 7 2 9 97 76
|
|
||||||
141515823: 4 8 51 515 449 3
|
|
||||||
102779637: 902 41 6 251 3 920
|
|
||||||
255504: 7 843 1 68 3
|
|
||||||
6334426: 8 4 42 47 132 3 439 6
|
|
||||||
1679200: 6 2 1 28 7 954 4 1 2 4 5
|
|
||||||
743869: 686 85 6 56 893
|
|
||||||
1740659638: 723 68 4 5 38 4 37 65 3
|
|
||||||
38740803516: 696 4 198 64 36 439
|
|
||||||
1445311524: 851 1 51 9 4 197 4 4 4
|
|
||||||
82489: 6 13 27 26 153 22
|
|
||||||
288151123: 5 8 95 3 4 121 6 7 5 7 7 8
|
|
||||||
33615: 41 9 2 83 249
|
|
||||||
235334584: 616 5 9 2 473 7 8
|
|
||||||
18983872: 3 58 389 84 8
|
|
||||||
966410: 117 12 622 477 3 5
|
|
||||||
31850527: 318 32 17 741 787
|
|
||||||
7766: 8 97 6
|
|
||||||
3767400: 6 4 3 9 203 2 17 7 4 30
|
|
||||||
8170454: 494 93 449 31 1
|
|
||||||
56113624133: 5 4 7 6 502 7 9 71 7 35 3
|
|
||||||
1070749: 2 60 64 3 986 4 6 4 9 1
|
|
||||||
152169288123: 3 440 2 47 3 834 878 3
|
|
||||||
23710639960: 7 7 6 2 3 4 2 395 81 2 4 4
|
|
||||||
41133: 1 1 736 6 119 3 85 2 3 3
|
|
||||||
2438060548: 872 65 66 8 16 5 308
|
|
||||||
2150: 60 975 6 34 2
|
|
||||||
42667317: 8 9 2 848 6 2 7 693
|
|
||||||
99291: 8 52 97 811 115 69
|
|
||||||
700480533: 152 24 4 995 533
|
|
||||||
2043415727134: 437 668 53 7 6 6 5 13 4
|
|
||||||
47685378032: 2 7 4 4 2 87 82 5 962 32
|
|
||||||
1623679122582: 842 679 71 4 2 58 2
|
|
||||||
13176069: 5 5 527 988 81
|
|
||||||
402209662: 4 891 26 8 4 9 38 389
|
|
||||||
62080: 86 718 329
|
|
||||||
1056230: 475 2 5 2 553
|
|
||||||
95017: 8 6 9 5 8 13 323 7 6 1 5 7
|
|
||||||
130085288174: 9 9 2 9 674 36 4 2 17 4
|
|
||||||
179095515: 2 38 6 7 6 26 9 36 8 27
|
|
||||||
520128: 9 66 438 504
|
|
||||||
110760: 3 8 4 7 4 60 71
|
|
||||||
76246863: 2 80 3 3 5 75 7 761 791
|
|
||||||
2167131616: 590 79 3 197 236 19 1
|
|
||||||
243936484: 25 10 5 8 8 857 4
|
|
||||||
88760: 305 4 30 6 2 9 1 70
|
|
||||||
6539567445: 2 673 89 206 49 53 5
|
|
||||||
802: 89 4 8 2 1 56
|
|
||||||
198163: 55 9 8 5 5 514 273
|
|
||||||
184378: 38 691 7 11 561
|
|
||||||
342819000: 82 387 8 5 2 3 5 9 8 8 27
|
|
||||||
10656324: 5 26 8 1 7 186 3 1 6 7 6
|
|
||||||
552920982: 87 69 7 92 91 9 61 2
|
|
||||||
20206: 1 63 1 86 79 535
|
|
||||||
1555253: 731 36 853 960 53
|
|
||||||
3143202608: 91 2 4 378 4 72 49 7
|
|
||||||
108617320: 7 64 27 657 8 367 1 49
|
|
||||||
1002415: 2 5 5 4 235 21 53 3 61 2
|
|
||||||
554954: 96 720 227 9 8 7 1 99
|
|
||||||
14766160525: 748 1 337 25 13 6 6 5 5
|
|
||||||
26599060: 51 610 855 1 9
|
|
||||||
313216: 70 93 6 92 8
|
|
||||||
495206630906: 624 496 4 577 25 4 6
|
|
||||||
852106300: 461 6 1 83 3 95 5 629
|
|
||||||
338693777: 3 386 93 739 38
|
|
||||||
84441: 50 93 2 18 647 45 13
|
|
||||||
19591896: 3 47 87 143 888 8
|
|
||||||
1215760: 88 32 8 7 760
|
|
||||||
303: 8 64 9 215 7
|
|
||||||
4493757702: 587 7 4 9 2 5 4 7 3 3 994
|
|
||||||
45810: 6 54 4 7 4
|
|
||||||
455911: 475 1 3 9 9 2 10 91 5 1
|
|
||||||
21250549332: 9 7 6 6 51 18 183 43 8 9
|
|
||||||
1651093: 716 6 3 3 1 4 1 8 8 52 4 5
|
|
||||||
1425: 50 4 36 6 9
|
|
||||||
240413184: 8 5 6 5 7 6 8 7 34 9 96 8
|
|
||||||
9353: 10 13 9 8 1 1 4 4 3 7 5 8
|
|
||||||
2098356329412: 6 57 264 714 1 5 7 651
|
|
||||||
1366070: 18 3 2 99 220 237
|
|
||||||
166196809: 68 59 291 20 7 284 9
|
|
||||||
40834936: 405 659 51 3 1
|
|
||||||
37929239: 5 739 66 518 39
|
|
||||||
332660900: 25 96 954 572 541
|
|
||||||
17248552687: 71 8 6 71 3 56 8 6 88
|
|
||||||
736: 2 97 58 4 6 9 5 62 6 8 7 5
|
|
||||||
1113308: 7 4 9 3 1 515 9 6 7 840 1
|
|
||||||
1047862: 99 5 552 863 1
|
|
||||||
8679: 9 6 32 5 39
|
|
||||||
17123332: 150 3 542 72 38
|
|
||||||
14301196: 810 535 6 33 446
|
|
||||||
13953852: 82 2 21 94 18 844 1
|
|
||||||
30194: 5 4 5 3 487
|
|
||||||
299623: 40 908 79 4 55
|
|
||||||
45472: 3 56 56 29 7
|
|
||||||
4534682: 9 17 6 96 6 52 92 159 2
|
|
||||||
182860020: 664 873 836 35 9
|
|
||||||
2594594: 2 7 5 20 6 8 6 594 7 1 1
|
|
||||||
5956711: 1 3 88 2 900 8 68 3 61
|
|
||||||
513431: 641 64 8 98 21
|
|
||||||
1690136: 197 191 66 66 8
|
|
||||||
50985: 32 9 59 3 3
|
|
||||||
1540800567: 15 30 4 16 535 567
|
|
||||||
393181: 3 3 3 2 6 9 295 43 4 69
|
|
||||||
152631244: 89 18 287 808 44
|
|
||||||
49366847: 9 60 5 831 99 551 2
|
|
||||||
47525635: 433 4 2 212 359 256 3
|
|
||||||
313329721: 139 788 41 18 458 4 9
|
|
||||||
48862422: 1 6 40 331 4 254 500 9
|
|
||||||
39443910: 87 42 1 849 170 237
|
|
||||||
130906800: 207 85 93 16 5
|
|
||||||
220175705: 42 3 2 654 89 35 79 95
|
|
||||||
14111: 1 6 5 8 6 8 143 510 4 9 5
|
|
||||||
409336410: 846 720 10 8 7 5 2 1 7 6
|
|
||||||
113011515265: 9 3 39 7 61 5 2 663 605
|
|
||||||
2387490: 6 9 7 5 221 80 60 70 8 5
|
|
||||||
7712: 2 7 1 155 606 2
|
|
||||||
8043: 210 91 58 790 7
|
|
||||||
146645: 4 407 30 3 122
|
|
||||||
8480556: 1 8 5 922 657
|
|
||||||
689065610: 7 141 2 698 10
|
|
||||||
2753326: 1 141 6 5 4 1 9 39 643
|
|
||||||
345873: 7 265 3 8 26 1 47
|
|
||||||
74885173: 372 7 670 8 2 85 9 8 3
|
|
||||||
136583527: 6 6 8 8 3 9 8 5 51 822 7
|
|
||||||
3089340323: 8 64 8 1 90 477 2 4 53 3
|
|
||||||
1096918: 195 6 886 9 920
|
|
||||||
5367398: 535 68 80 25 98
|
|
||||||
3976108135: 7 9 2 5 1 1 1 6 31 33 7 56
|
|
||||||
2496005: 8 19 199 55 71
|
|
||||||
2893997: 2 3 6 9 5 19 88 9 502 7
|
|
||||||
557376309: 295 7 7 1 2 623 27 699
|
|
||||||
42567659: 42 480 1 875 5 9
|
|
||||||
15723798791671: 4 926 456 7 6 791 671
|
|
||||||
91: 3 1 87
|
|
||||||
75030526368: 250 695 9 692 78 8 96
|
|
||||||
17385: 560 19 3 2 3
|
|
||||||
616920: 3 60 879 1 582
|
|
||||||
584294213: 8 346 7 7 4 213
|
|
||||||
4724: 9 416 7 467
|
|
||||||
155165: 4 11 95 2 648 4 19 125
|
|
||||||
981426041: 4 83 7 71 3 50 9 4 5
|
|
||||||
19972184: 2 5 31 7 2 231 2 4 4 62
|
|
||||||
549451: 7 6 741 734 53
|
|
||||||
5081833: 4 950 6 996 2 1 6 6 7 3 1
|
|
||||||
1988310268: 9 3 5 707 744 14 6 8 2
|
|
||||||
96053133326: 5 804 8 8 192 972 8 7 2
|
|
||||||
3528: 3 11 28 3 3
|
|
||||||
24189396: 8 3 2 171 4 4 33 28
|
|
||||||
864165: 9 4 78 73 795
|
|
||||||
26433000: 667 5 1 6 660
|
|
||||||
8858: 38 1 4 206
|
|
||||||
3200393280: 50 1 3 912 7 940 79
|
|
||||||
2445982082: 49 1 7 94 4 86 7 64 2
|
|
||||||
3488032730490: 73 5 6 8 57 7 8 938 490
|
|
||||||
10071162: 8 381 15 137 3 8 8 9 1
|
|
||||||
444: 69 6 30
|
|
||||||
28452288677408: 480 45 5 2 6 7 90 658 8
|
|
||||||
2593: 860 1 1 3 7
|
|
||||||
198443470: 7 506 8 78 72 97 94
|
|
||||||
75507: 754 2 2 85
|
|
||||||
564275: 3 3 767 4 3 6 3 515 9 5 6
|
|
||||||
1226: 58 4 1 276 887
|
|
||||||
1416: 6 3 4 25 55 36
|
|
||||||
4946042400: 9 751 929 60 65
|
|
||||||
10626120960: 5 1 280 6 7 4 8 672 235
|
|
||||||
222300: 10 494 15 1 3
|
|
||||||
15905: 39 6 13 3 27 29
|
|
||||||
89152410253: 1 27 8 2 2 6 8 8 1 518 5 3
|
|
||||||
347293: 7 6 5 61 1 64 336 1 659
|
|
||||||
397401: 7 7 5 20 9 9 43 1 3 7 1 3
|
|
||||||
38394: 6 466 2 1 81
|
|
||||||
120391: 4 9 145 4 3 7 9 8 2 6 927
|
|
||||||
110645540: 5 180 267 1 2 9 2 143 4
|
|
||||||
87614568: 2 4 63 32 73 213 591 4
|
|
||||||
4709992455381: 3 6 7 2 2 955 791 9 159
|
|
||||||
6834689: 27 6 194 8 3 689
|
|
||||||
768: 1 16 4 5 694
|
|
||||||
320720507: 39 660 890 7 2 7 9
|
|
||||||
349171872: 11 36 32 82 1 89 9 6 56
|
|
||||||
2144800: 47 79 3 5 32 25 7
|
|
||||||
4415: 1 1 2 8 3 6 1 7 799 8 4 3
|
|
||||||
77208: 2 322 34 7 96
|
|
||||||
70838: 5 209 55 6 76 52 2 88
|
|
||||||
711169603810: 9 1 9 2 20 80 74 761 1 5
|
|
||||||
6894733854: 684 60 84 6 90 3 4 21 2
|
|
||||||
5086572: 316 31 296 9 3 7 1 8 28
|
|
||||||
2928408191557: 394 991 42 5 5 4 75 7
|
|
||||||
509332682: 5 1 4 37 834 58 7 5 68 2
|
|
||||||
13102440337: 1 6 3 780 5 8 3 37
|
|
||||||
10878341: 9 90 612 170 45 41
|
|
||||||
498132911: 4 911 685 999 89
|
|
||||||
958999: 683 23 61 6 5 17 722
|
|
||||||
143343: 88 59 9 92 751 210 3
|
|
||||||
2743510584: 6 706 6 385 584
|
|
||||||
251973: 424 66 5 8 9
|
|
||||||
10183308: 169 709 9 5 3 9 67 2 46
|
|
||||||
749315: 464 4 4 68 10 2 2 203
|
|
||||||
92707239: 6 522 50 4 2 74 1 6 25 8
|
|
||||||
82155646350715: 4 87 2 84 9 463 507 15
|
|
||||||
87924480: 281 975 789 320
|
|
||||||
60415: 5 804 3 23 5
|
|
||||||
971347: 83 13 9 2 47
|
|
||||||
17037310: 7 811 3 6 310
|
|
||||||
15333: 535 78 95 99 19
|
|
||||||
23713: 3 2 39 519 877
|
|
||||||
29532875: 29 5 32 563 118 194
|
|
||||||
6455904009: 221 6 9 4 2 4 26 112 9
|
|
||||||
57785406: 96 140 7 55 186 26 6 7
|
|
||||||
48: 1 3 12
|
|
||||||
215140: 8 317 5 3 8 4 4 40 9 3 2 2
|
|
||||||
9406542: 9 5 39 9 5 653 511 219
|
|
||||||
8396187: 7 904 477 3 148 87 2
|
|
||||||
734384430: 56 485 9 1 507 4 9 130
|
|
||||||
484993118067: 81 402 993 345 6
|
|
||||||
287773: 1 783 2 814 267 7 4 7 3
|
|
||||||
36777312: 47 6 66 8 247
|
|
||||||
4740447723: 2 36 3 10 3 355 8 73 1 3
|
|
||||||
866755680: 460 3 3 991 1 5 6 6 19
|
|
||||||
290326138: 5 285 317 8 83 38
|
|
||||||
13602050748: 801 13 5 1 49 7 314 99
|
|
||||||
61360: 9 543 8 53 60
|
|
||||||
1787: 321 5 82 6 3 80 9
|
|
||||||
233760: 7 429 313 5 4 77 4 296
|
|
||||||
7665: 87 5 11 17 83
|
|
||||||
26991479: 26 1 8 6 6 6 12 7 7 3 5 76
|
|
||||||
18712: 6 74 13 974 56 1 7 9 7 3
|
|
||||||
217: 7 87 2 3 26
|
|
||||||
64867314: 2 90 9 5 8 492 1 4 1 257
|
|
||||||
318200694: 2 3 739 7 1 861 63
|
|
||||||
3282485321: 82 4 248 521 3 106
|
|
||||||
156568734: 7 2 8 6 4 36 769 7 5 1 6 9
|
|
||||||
832433113: 36 909 158 161 1
|
|
||||||
33661685163: 7 2 7 42 49 1 9 80 342 3
|
|
||||||
1924152: 5 83 51 9 677 998 8
|
|
||||||
5297870114599: 141 899 89 5 839 99
|
|
||||||
429345221: 9 471 63 7 45 2 21
|
|
||||||
656: 7 27 9 15 7 2
|
|
||||||
75577: 34 855 85 6 6
|
|
||||||
1215357: 2 922 57 28 210 29 3
|
|
||||||
1595334418735: 6 676 272 86 184 3 35
|
|
||||||
5453: 7 683 5 31 542 94
|
|
||||||
154076: 3 414 4 74 1 1 88 1 604
|
|
||||||
355: 44 8 3
|
|
||||||
33370224183: 71 470 224 122 64
|
|
||||||
39385509782: 3 2 712 454 6 442 86
|
|
||||||
69169117: 1 2 492 14 91 17
|
|
||||||
1312: 44 51 55 890 272
|
|
||||||
168008743: 8 50 42 87 34 9
|
|
||||||
487800: 48 7 19 72 48 75
|
|
||||||
13370112: 8 5 49 9 81 6 724 9 4 1 7
|
|
||||||
42823680: 5 1 6 9 9 5 96 34 32
|
|
||||||
8791740: 1 62 807 3 54
|
|
||||||
56457986: 60 9 6 32 9 49 568 221
|
|
||||||
113219: 78 200 8 409 43
|
|
||||||
54394: 8 99 89 90 5
|
|
||||||
378625170008: 77 496 8 83 125 61 1 8
|
|
||||||
278244129: 5 6 176 93 630 770 2 9
|
|
||||||
558711270: 10 9 7 7 8 2 550 97 9 9
|
|
||||||
119: 1 8 9 43 58
|
|
||||||
4219093863: 1 4 3 5 609 98 31 63 1
|
|
||||||
13341355: 42 910 954 14
|
|
||||||
10052058: 904 699 63 9 34 3 6
|
|
||||||
48462: 4 5 5 66 301
|
|
||||||
75699471: 4 34 942 942 82 4 347
|
|
||||||
4544506132: 5 3 7 5 247 1 5 9 9 1 1 32
|
|
||||||
52896: 68 279 1 76 76 1 2
|
|
||||||
258536924: 8 5 8 2 7 3 86 690 9 1 12
|
|
||||||
288662: 5 26 2 75 5 3 172 41 2 3
|
|
||||||
26390: 48 59 931 7 7
|
|
||||||
102081: 324 693 2 36 1
|
|
||||||
128487268: 38 7 83 6 39 81 97 1 4
|
|
||||||
19224: 3 9 1 8 89
|
|
||||||
81432540: 501 20 7 387 3
|
|
||||||
738: 20 9 4 2 7 435
|
|
||||||
29516544: 87 2 7 557 8 69
|
|
||||||
1296424278: 6 666 6 31 857 54
|
|
||||||
479149020: 5 6 987 261 62
|
|
||||||
1883704: 9 638 8 8 41
|
|
||||||
7480260: 4 8 7 534 9 102 2 7 8 18
|
|
||||||
1475107: 29 37 30 745 7
|
|
||||||
1693: 17 97 1 9 35
|
|
||||||
896075: 792 1 862 5 2 53 9 8 6 5
|
|
||||||
2470: 151 1 1 2 2 2 608 2 7 3 4
|
|
||||||
45069234: 82 177 29 539 6
|
|
||||||
241893540: 824 820 358 79 10 11
|
|
||||||
191130028: 685 7 8 4 25 92 5 4 3 16
|
|
||||||
8853318: 693 285 5 39 31 2 9
|
|
||||||
18827664945: 4 9 1 45 8 6 4 9 82 757 5
|
|
||||||
4116: 1 564 14 7 70
|
|
||||||
176837684: 7 5 22 10 4 73 5 4 7 83 2
|
|
||||||
1896818086: 12 931 5 409 5 2 4 1 6
|
|
||||||
105489753097: 6 17 9 841 5 4 1 7 8 29
|
|
||||||
40161623048: 352 63 98 3 55 4 7 2 4
|
|
||||||
1588: 8 21 3 27 8 4
|
|
||||||
557431350: 25 486 9 26 589 25 70
|
|
||||||
344082613: 47 8 5 8 4 9 2 2 4 802 13
|
|
||||||
54844287: 548 44 27 1 4
|
|
||||||
2009988: 293 98 7 4 4
|
|
||||||
1460: 9 5 3 9 7 9 4
|
|
||||||
531060398227: 4 37 897 9 4 398 227
|
|
||||||
370163550: 9 48 1 8 67 12 70 3 747
|
|
||||||
607921609: 5 476 7 37 30 790 9
|
|
||||||
142843: 2 27 80 33 12 271
|
|
||||||
1491: 729 646 86 24 6
|
|
||||||
710723510: 17 469 9 3 53 8 86 3 70
|
|
||||||
101165: 37 495 19 6 79
|
|
||||||
4068792: 3 7 432 8 3 13
|
|
||||||
22305981: 9 3 348 4 1 5 3 2 65 2 89
|
|
||||||
1969800068778: 500 201 196 687 78
|
|
||||||
1968: 105 7 1 51 12
|
|
||||||
60750717: 45 2 9 75 717
|
|
||||||
57464640: 1 85 651 2 8 2 81 3 2 5 2
|
|
||||||
200314094445: 4 8 7 5 7 66 8 1 880 8 9 5
|
|
||||||
8486: 2 963 1 6 7 7 1 6 2 337 2
|
|
||||||
313862603: 71 5 92 961 3
|
|
||||||
13295: 3 257 9 50 5
|
|
||||||
567600: 7 4 572 946
|
|
||||||
68737952352: 318 23 1 2 6 9 2 8 3 144
|
|
||||||
3564807348: 35 47 202 9 298 57 4
|
|
||||||
689871030: 19 95 980 3 26 6 5
|
|
||||||
94380: 1 9 71 5 66 2
|
|
||||||
2781516: 6 5 603 20 61 492 386
|
|
||||||
13274353131: 3 4 466 1 1 87 8 963 1 8
|
|
||||||
1114: 838 95 19 90 72
|
|
||||||
265690: 9 119 8 31 82
|
|
||||||
4914768: 505 5 968 48 17
|
|
||||||
20054848: 9 2 3 97 3 6 3 34 58 11 4
|
|
||||||
25408: 773 8 4 2 670
|
|
||||||
12692025489: 6 504 54 226 9 1 8 11
|
|
||||||
290762983266: 7 1 8 7 38 1 6 998 14 9 6
|
|
||||||
11062: 173 7 56 250 4 9 4 715
|
|
||||||
2047569858: 12 5 91 17 21 81 2 9
|
|
||||||
36882: 237 4 751 961 2 827 6
|
|
||||||
604145841: 3 5 9 8 4 5 823 4 634 41
|
|
||||||
3706712: 3 706 710
|
|
||||||
1958107: 1 325 6 8 6 4 4 1 1 60 6 1
|
|
||||||
310883145: 4 816 618 4 8 31 45
|
|
||||||
86120982: 4 41 221 6 66 866 7 6
|
|
||||||
2773830: 231 76 3 9 9 30
|
|
||||||
75367563264: 6 83 2 6 8 6 76 9 8 7 1
|
|
||||||
22134: 3 90 238
|
|
||||||
7551233910: 839 9 163 70 910
|
|
||||||
153182070: 50 2 1 7 6 84 30 7 5 9 31
|
|
||||||
6210421: 7 763 8 2 1
|
|
||||||
14047776281: 5 67 852 229 281
|
|
||||||
2203652320: 807 8 63 602 1 9 7
|
|
||||||
233435: 9 715 1 9 41 399 1 4 8 7
|
|
||||||
1257131: 5 94 1 16 1 95 502 629
|
|
||||||
26088: 10 8 6 466 953 9 48 9 2
|
|
||||||
35581368: 5 9 75 912 6 62 438
|
|
||||||
606056: 6 11 5 194 44
|
|
||||||
1552572: 85 761 3 2 9 6 18 4
|
|
||||||
253947: 3 2 627 81 12
|
|
||||||
5051760736: 3 786 571 469 50 8
|
|
||||||
358540: 9 64 306 28 394
|
|
||||||
561644260: 5 61 1 4 3 6 5 4 247 11 2
|
|
||||||
1778294250: 9 15 242 9 42 144 810
|
|
||||||
7710: 8 2 753 10 4 16
|
|
||||||
193140: 20 498 3 4 7 55 15 6
|
|
||||||
502578: 9 84 900 63 6
|
|
||||||
43946: 26 42 643 24 39 159
|
|
||||||
6279695: 1 6 5 4 60 57 1 9 95 6 2 3
|
|
||||||
2372052: 8 8 8 80 44 2 3 7 9 516
|
|
||||||
55286: 610 308 47 4 57 8 45
|
|
||||||
11313: 85 435 604 6 1 3
|
|
||||||
1172701075: 8 842 21 461 9 25 7
|
|
||||||
1797522636: 590 8 52 3 578 44 392
|
|
||||||
971889: 5 235 71 26 30 9
|
|
||||||
4481: 648 4 8 166 1 291 4 9
|
|
||||||
33050: 4 46 661
|
|
||||||
28350171951: 4 146 945 859 75 2 1
|
|
||||||
20126581497: 17 9 491 229 494 3
|
|
||||||
219611747: 9 421 966 60 549 758
|
|
||||||
1240: 53 6 3 7 1
|
|
||||||
1063335085: 7 505 96 3 6 7 975 1 8 5
|
|
||||||
1055: 6 52 29 2 6 11
|
|
||||||
7469925625: 5 38 2 1 7 59 6 86 20 5
|
|
||||||
35653113: 3 5 653 11 3
|
|
||||||
149744: 53 897 49 1 40 9 8 2 8
|
|
||||||
93519: 1 894 233 7 16 9 39 2 9
|
|
||||||
11332409040413: 7 8 418 7 502 4 90 413
|
|
||||||
143916476: 2 497 3 57 961
|
|
||||||
7467000: 8 14 900 388 300 19
|
|
||||||
198360845: 6 121 119 56 3 41 98
|
|
||||||
353309832209: 6 1 36 8 2 9 9 44 3 211
|
|
||||||
128: 6 6 2 50 6
|
|
||||||
50422922685: 340 92 73 61 362 605
|
|
||||||
1044844: 3 7 4 4 844
|
|
||||||
9193: 5 79 3 76 3
|
|
||||||
30090: 14 16 3 131 8 259 77 9
|
|
||||||
337279: 37 4 9 13 658 8
|
|
||||||
168780: 28 9 6 17 64 4 3 4 87 5
|
|
||||||
642: 77 6 8 7 2
|
|
||||||
7672557939275: 25 643 5 76 88 34 7 5
|
|
||||||
19552214: 702 29 2 8 9 480 374
|
|
||||||
354663185: 7 9 3 325 6 3 574 6 3 2 5
|
|
||||||
525: 4 7 460 54
|
|
||||||
599351195625: 2 38 4 45 625 573 689
|
|
||||||
1965880: 220 960 34 49
|
|
||||||
714: 13 3 3 2 6
|
|
||||||
3955502937502: 3 6 75 586 2 93 1 6 502
|
|
||||||
2814600: 2 2 6 14 4 83 23 20 74 1
|
|
||||||
5382626: 5 887 8 9 771 26
|
|
||||||
2985: 42 70 45
|
|
||||||
114040: 86 805 270 99 90 640
|
|
||||||
9758700: 3 11 8 35 2 47 5 7 150
|
|
||||||
100502: 56 9 7 82 8 4 1 9 9 305
|
|
||||||
414969404544: 4 317 8 6 41 9 7 9 64 96
|
|
||||||
1842483: 1 59 3 3 2 9 2 7 1 60 9 3
|
|
||||||
21282606: 4 21 883 518 942
|
|
||||||
127405: 1 447 285 9 1
|
|
||||||
142043: 2 84 8 804 139 400
|
|
||||||
28834136: 47 5 607 1 5 1 10 148 6
|
|
||||||
2624860: 28 4 2 9 9 2 217 85 45 7
|
|
||||||
17295642442: 994 174 406 15 3 42
|
|
||||||
446792: 76 1 5 5 58 19 2
|
|
||||||
35078400: 29 14 25 8 9 6 8
|
|
||||||
35933488: 8 927 948 537 218 1 8
|
|
||||||
2054: 2 54 1 35 59
|
|
||||||
5752100560: 729 935 27 394 20
|
|
||||||
1460: 8 78 3 36 2 1 794
|
|
||||||
2092: 92 2 6 482 2
|
|
||||||
132844416: 3 73 8 16 8 5 53 5 6 914
|
|
||||||
1040: 2 1 8 13 65 5
|
|
||||||
3776340861: 5 6 43 4 807 9 30 3 327
|
|
||||||
211646: 737 7 1 2 41 45
|
|
||||||
2478488900: 912 677 9 320 6 8 446
|
|
||||||
6346890: 79 13 64 549 21 9 3
|
|
||||||
10743769823: 2 9 9 366 2 9 213 5 7 4 3
|
|
||||||
384744: 1 7 45 9 1 53 8 9 1 2 3 92
|
|
||||||
11120158342: 94 2 3 863 118 2
|
|
||||||
489775464841: 754 909 829 862 9 4
|
|
||||||
51328938: 7 8 9 4 3 172 73 8 9 1
|
|
||||||
3792391: 50 8 89 5 11 141 193 3
|
|
||||||
1677592: 79 87 20 6 9 16 5 2 56
|
|
||||||
471: 9 14 8 7 433
|
|
||||||
1107101: 3 367 7 198 5 7 1 98 4 9
|
|
||||||
47200: 2 9 3 17 944
|
|
||||||
3348321304: 5 813 9 1 520 64 7 4 4 9
|
|
||||||
1739519: 66 19 428 57 519
|
|
||||||
22440: 8 4 9 54 4 9 165 846 17
|
|
||||||
821576: 9 31 6 5 79 1 2 8 9 7 5 56
|
|
||||||
2668212268: 193 9 6 929 17 9 2 9 70
|
|
||||||
107258248: 5 39 55 824 8
|
|
||||||
16886076: 86 798 850 2 10 9 27 6
|
|
||||||
15150915: 23 77 8 9 89 97 15
|
|
||||||
5495112: 4 9 3 27 652 3 329 8 8
|
|
||||||
3731250172: 18 923 206 765 957
|
|
||||||
712: 7 82 7 70 61
|
|
||||||
1690608385: 950 8 59 36 754 933 5
|
|
||||||
211704: 4 73 5 5 29 4
|
|
||||||
13350938: 9 13 690 26 878 70
|
|
||||||
1078: 4 75 3 58 938
|
|
||||||
63265042924: 8 6 92 1 1 530 8 2 924
|
|
||||||
133796: 88 12 6 1 31 2 1 991 2
|
|
||||||
1568: 47 9 365 578 202
|
|
||||||
8272201: 32 68 5 887 703
|
|
||||||
1577492: 46 517 38 1 28
|
|
||||||
196963074: 84 5 1 63 47 6 29 5 198
|
|
||||||
886296: 87 7 35 894 6
|
|
||||||
31327600: 175 117 765 2 847 3
|
|
||||||
253681: 8 1 40 23 775 45 3 7 7 2
|
|
||||||
17514480: 43 377 18 79 31 60
|
|
||||||
910107: 912 319 400 558 1 9
|
|
||||||
161: 3 3 4 2 83 9 21
|
|
||||||
40413945600: 405 172 56 280 37
|
|
||||||
3789: 87 2 35 650 24
|
|
||||||
27022: 4 4 32 5 600 22
|
|
||||||
197568: 257 9 3 1 36 84
|
|
||||||
328307113: 377 3 6 45 87
|
|
||||||
151439: 95 56 423 16
|
|
||||||
259661768400: 920 49 2 33 57 6 33 48
|
|
||||||
423: 1 2 5 8 4 6 1 4 62 7 35 3
|
|
||||||
46979865: 446 9 8 7 209 4 5
|
|
||||||
645844904: 913 3 32 7 921 349 9 8
|
|
||||||
2626745581: 7 4 4 96 770 9 5 581
|
|
||||||
563611272336: 84 52 5 5 4 6 98 126 6 3
|
|
||||||
2816515701: 4 305 5 13 93 8 5 7 6
|
|
||||||
7008: 3 24 43 7 6 1
|
|
||||||
3843804: 114 9 6 880 67 3 4 680
|
|
||||||
11489089: 29 882 67 32 5 14 59
|
|
||||||
532035739: 604 586 2 440 59
|
|
||||||
400471397473: 6 674 52 1 3 2 911 6 4 1
|
|
||||||
125805007: 8 4 5 2 3 2 9 7 51 5 60 7
|
|
||||||
3731005: 37 30 952 4 49
|
|
||||||
26168970: 873 7 4 1 704 26 7 33 6
|
|
||||||
18249174: 249 25 74 86 9
|
|
||||||
14153474251: 6 471 6 3 9 6 9 6 9 450 1
|
|
||||||
1685466: 4 921 82 678 466
|
|
||||||
50708: 8 546 191 67 793
|
|
||||||
1789646: 7 4 2 52 1 6 2 910 787 8
|
|
||||||
113086575: 136 85 1 323 95 75 21
|
|
||||||
763: 60 3 3 157
|
|
||||||
756109819: 1 2 7 90 258 9 1 4 621 9
|
|
||||||
99331: 610 597 94 38 9 2 437
|
|
||||||
5591282: 31 5 662 9 2 4 84
|
|
||||||
68420: 76 7 2 1 4 3 5 5 517 8 8 4
|
|
||||||
120380: 4 9 6 553 924 8
|
|
||||||
663053160: 4 2 6 14 5 4 9 5 2 6 365 2
|
|
||||||
26825461: 609 28 7 1 9 109 6 52 9
|
|
||||||
41360: 2 19 3 2 3 899 6
|
|
||||||
20393: 1 49 4 3 93
|
|
||||||
2084013: 781 26 3 9 257
|
|
||||||
1667257110288: 3 69 8 28 41 204 77 7
|
|
||||||
430950: 14 1 8 8 18 7 4 6 7 2 6 5
|
|
||||||
52577: 6 28 9 295 356 6
|
|
||||||
10006634: 7 1 25 5 6 634
|
|
||||||
262290534: 82 9 8 3 6 95 3 18 4 92 6
|
|
||||||
67866: 31 650 73 9 6
|
|
||||||
1575: 9 58 1 3 6
|
|
||||||
59124: 8 2 9 2 32 3 845 1 23 4 4
|
|
||||||
1013226: 3 588 5 3 94
|
|
||||||
223242318: 7 8 55 5 16 22 2 423 18
|
|
||||||
1156716300: 1 201 5 191 828 299 1
|
|
||||||
304170059558: 452 46 8 950 6 59 558
|
|
||||||
16721: 4 68 9 4 7 1 60 2 2 7 3 2
|
|
||||||
3270361: 8 1 110 8 638 2 7 4 85
|
|
||||||
810506452: 66 458 4 349 554 4 6 2
|
|
||||||
67695107: 955 7 8 7 2 268 87 30 7
|
|
||||||
1799821: 2 9 52 4 4 1 20 11
|
|
||||||
4416: 43 2 6 3 6
|
|
||||||
10554182: 9 2 4 84 5 8 80 58 6 38
|
|
||||||
139: 8 6 53
|
|
||||||
175460066367: 18 8 66 6 738 930 27
|
|
||||||
2080368820: 3 32 1 3 9 3 1 90 99 8 28
|
|
||||||
217175: 214 2 605 570
|
|
||||||
370333248: 9 80 559 33 928 586
|
|
||||||
47: 6 6 35
|
|
||||||
2499: 52 6 2 2 81 2 1 9
|
|
||||||
398476: 4 108 97
|
|
||||||
277326: 13 795 462 3 5 31 7
|
|
||||||
444588700: 444 17 41 86 41 59
|
|
||||||
140: 9 52 1 72 7
|
|
||||||
151004081: 4 47 3 99 341 9 65
|
|
||||||
117335040: 55 6 1 68 9 863 1 384 8
|
|
||||||
5381424859: 2 989 1 4 2 8 18 7 6 9 8
|
|
||||||
972371: 11 81 60 176 851
|
|
||||||
75170: 6 3 683 71 28 471
|
|
||||||
939123289: 51 8 43 158 93 36 289
|
|
||||||
1129468656: 975 25 47 492 94
|
|
||||||
59856: 1 7 539 2 19 57 222 43
|
|
||||||
48186761: 7 894 77 99 62
|
|
||||||
507835: 50 5 9 9 9 9 1 5 39 1
|
|
||||||
95273700: 8 574 52 16 705 29
|
|
||||||
20660493280: 7 529 32 49 70 560
|
|
||||||
6624696: 8 6 507 5 1 8 9 85 7 7 34
|
|
||||||
15010074378: 8 7 56 4 8 4 3 5 3 354 6 3
|
|
||||||
678375368: 700 20 4 597 968
|
|
||||||
29457249523: 2 9 12 6 4 3 2 72 495 23
|
|
||||||
124197303: 114 675 807 2 3
|
|
||||||
952: 5 3 7 91 31 6 749 7 1 5 7
|
|
||||||
105460: 8 15 88 950 10
|
|
||||||
2474: 87 9 99 995 597
|
|
||||||
82448: 12 4 9 58 1 34 1 1 3 2 3 4
|
|
||||||
200852169: 83 216 5 1 22 4 3 4 3 7
|
|
||||||
15804: 644 95 836 7 47
|
|
||||||
51172: 6 80 9 1 9 487 9 8 4 9 4 3
|
|
||||||
18716470110: 7 7 92 4 9 9 5 3 299 30
|
|
||||||
1104115320: 7 51 5 55 2 11 396 70
|
|
||||||
23730820: 4 6 7 468 96 2 23 450 3
|
|
||||||
1001067516: 2 6 1 1 22 218 2 1 892 9
|
|
||||||
43248548: 4 324 1 7 2 9 69 373 6 1
|
|
||||||
15903155187792: 90 16 503 18 73 2 92 6
|
|
||||||
8504979: 4 83 2 5 8 7 7 64 73 74
|
|
||||||
363303: 404 580 41 23 9
|
|
||||||
227343: 7 77 268 9 481 1 90 3 3
|
|
||||||
326565: 815 40 9 468 3 85
|
|
||||||
7695: 2 2 85 6 81
|
|
||||||
39343: 80 49 2 72 69
|
|
||||||
61878: 86 58 9 295 138 54
|
|
||||||
1863313: 4 41 68 8 7 314
|
|
||||||
81640800: 1 69 3 493 800
|
|
||||||
159012: 37 80 6 2 21
|
|
||||||
9700215: 8 5 1 446 8 2 2 61 105 1
|
|
||||||
58789: 202 628 35 6 3 2 1 671
|
|
||||||
3072485: 6 45 337 94 487 9 2
|
|
||||||
256800: 2 8 8 6 535
|
|
||||||
283078917: 5 7 733 38 30 39 3 309
|
|
||||||
34675: 47 8 3 4 5 995 4 5 4 175
|
|
||||||
15603: 4 14 832 364 263
|
|
||||||
3938405130: 1 8 715 46 1 3 2 8 5 6 51
|
|
||||||
1769660661: 7 2 5 2 2 3 103 35 7 426
|
|
||||||
1609545534: 32 2 83 7 55 37 7 5 89 6
|
|
||||||
77820294491: 6 63 2 917 1 64 17 74
|
|
||||||
11220481: 3 33 3 3 83 1 3 6 640 1
|
|
||||||
2658459: 771 1 9 71 8 2 5 59 1 8 3
|
|
||||||
1599441406: 416 6 89 8 5 900 7 8 91
|
|
||||||
156508013: 9 3 92 6 57 2 440 8 1 1
|
|
||||||
8346: 5 8 182 686 380
|
|
||||||
231984743: 9 72 888 7 38 9 7 607 3
|
|
||||||
21601: 37 6 2 132 7 96 1
|
|
||||||
724: 27 317 27 274 79
|
|
||||||
55994878860: 38 9 34 799 5 9 2 4 9 4
|
|
||||||
4631: 1 40 16 7 39
|
|
||||||
712350654: 857 68 17 18 453
|
|
||||||
229674: 1 723 402 36 58 3
|
|
||||||
2100: 843 740 55 76 386
|
|
||||||
921150275: 51 64 890 9 275
|
|
||||||
734929386: 632 380 4 9 90 34 6
|
|
||||||
2669199: 97 5 7 95 922 7 9 6 8 6 1
|
|
||||||
1500039: 2 7 331 3 6 2 3 8 1 9 27 9
|
|
||||||
72048: 240 650 9 49 76
|
|
||||||
1660302: 113 25 5 850 22 76 4 2
|
|
||||||
511746807: 47 9 809 9 465 807
|
|
||||||
38019125: 369 68 87 11 9 6
|
|
||||||
4527: 6 6 9 45 293 5 2 4 2 691
|
|
||||||
242568: 8 24 6 341 64 8
|
|
||||||
427: 3 81 4 91 1
|
|
||||||
23195120: 22 198 655 342 120
|
|
||||||
360: 9 6 4 2 3
|
|
||||||
6853: 79 6 78 216 7
|
|
||||||
35758: 336 21 1 43 8 6 1
|
|
||||||
2179618: 7 70 70 4 680 1 98
|
|
||||||
9606: 86 4 2 3 943
|
|
||||||
26749464: 1 5 433 5 717 98 84
|
|
||||||
776037573: 8 8 894 9 577 6 621 9
|
|
||||||
799293: 99 8 76 2 4 4 6 1 3 5 31 3
|
|
||||||
2691671: 1 7 6 2 1 4 1 12 65 668 3
|
|
||||||
1544: 898 24 1 496 99 27
|
|
||||||
68191364: 42 990 2 2 82
|
|
||||||
524438312: 524 4 382 42 70
|
|
||||||
8831455: 5 2 7 29 5 435 2 76 879
|
|
||||||
434271927: 649 708 8 725 73 4 7
|
|
||||||
88569642727: 885 69 642 7 27
|
|
||||||
663: 204 17 3
|
|
||||||
38449: 2 65 6 1 1 8 1 2 56 8 369
|
|
||||||
392709: 28 177 117 2 50 5 7 3 9
|
|
||||||
58033879: 8 725 4 9 7 8 16 570 1 9
|
|
||||||
94154: 150 22 5 86 358
|
|
||||||
43361102577534: 7 5 59 634 69 749 966
|
|
||||||
2026946: 8 257 6 983
|
|
||||||
5551744: 3 9 9 9 79 661 51 7 8 4
|
|
||||||
467134789: 819 596 957 92 29
|
|
||||||
1434: 1 5 1 6 8 520
|
|
||||||
1660075: 217 34 83 710 8 7 38 1
|
|
||||||
104704026560: 2 8 7 4 6 5 9 429 5 20 7 4
|
|
||||||
3362348024: 7 4 601 27 3 897 5 7
|
|
||||||
967272990: 17 30 354 9 559 9 64
|
|
||||||
695308: 69 436 8 86 854
|
|
||||||
617664: 4 19 879 684 696
|
|
||||||
280208148: 365 766 618 143 4
|
|
||||||
11358272: 74 3 5 44 43 11 29 63 2
|
|
||||||
102: 25 2 8 67 1
|
|
||||||
148752720571: 5 693 265 6 10 9 19 3 1
|
|
||||||
9326675237: 4 658 325 28 56 774 5
|
|
||||||
63112912358: 63 11 29 123 6 1
|
|
||||||
689052595: 202 96 7 7 485
|
|
||||||
6261: 8 4 31 16 93 8 13
|
|
||||||
1143244033: 857 230 95 9 29 2 1
|
|
||||||
4077224042: 5 343 675 763 17
|
|
||||||
148967182: 91 464 855 38 91
|
|
||||||
13013: 261 7 9 23 7
|
|
||||||
151402: 2 7 65 119 8 8 484 2 2
|
|
||||||
1162841: 4 653 7 444 5
|
|
||||||
122954: 931 42 59 1 119 25
|
|
||||||
8802293760: 8 6 5 2 7 248 208 5 72 6
|
|
||||||
882283627: 2 60 762 28 29 68 659
|
|
||||||
119320851948: 4 6 9 3 2 736 8 3 5 65 8 6
|
|
||||||
363560: 599 2 9 551 61
|
|
||||||
79156980000: 12 75 3 35 8 5 487 43
|
|
||||||
2016471: 8 80 2 5 9 9 1 5 7 66 90
|
|
||||||
541898: 7 906 63 68 6
|
|
||||||
8691: 44 4 41 2 4
|
|
||||||
57859465: 582 9 60 978 6 5 974
|
|
||||||
969507840: 8 5 3 520 71 4 254 7 3 1
|
|
||||||
111331: 14 9 2 8 4 3 1 40 188 3
|
|
||||||
79296: 9 72 2 52 62 4 2 48 7
|
|
||||||
99752561604: 25 783 42 2 4 32 2 482
|
|
||||||
260196: 85 8 466 6 2 104 53 9
|
|
||||||
54308747928: 84 978 7 115 1 6 958
|
|
||||||
177610113: 5 12 4 679 5 23 457 9
|
|
||||||
291015504: 409 342 4 702 138
|
|
||||||
111029044: 7 658 506 16 57 7 844
|
|
||||||
4431074491353: 263 96 287 7 27 650
|
|
||||||
61459200: 3 3 3 37 4 805 2 30 80 9
|
|
||||||
4938: 2 6 7 7 7 586 74 4 130 6
|
|
||||||
724927: 1 687 9 1 13 80 47
|
|
||||||
176219199: 8 533 928 1 351
|
|
||||||
7061236841: 52 30 20 299 859
|
|
||||||
1680930: 56 9 2 120 1 799 8 2 95
|
|
||||||
22230091458: 5 780 57 91 4 61
|
|
||||||
618962: 618 8 7 9 1
|
|
||||||
979087974: 896 52 407 2 5 53 393
|
|
||||||
1076124: 3 42 7 761 124
|
|
||||||
39804061: 3 6 7 9 3 2 3 685 535 6 1
|
|
||||||
617371560: 9 2 6 77 1 83 4 26 9 10 1
|
|
||||||
59292627728: 244 243 62 77 28
|
|
||||||
60679755965: 81 7 1 3 19 57 687 65
|
|
||||||
385718461: 2 6 873 908 8 3 3 3 2 24
|
|
||||||
70068614: 5 2 19 383 178 887 7 7
|
|
||||||
81627: 812 1 8 236 87 45 41
|
|
||||||
61252920: 7 396 200 229 90
|
|
||||||
122349515906: 536 4 1 3 95 66 704 49
|
|
||||||
236503863: 546 954 305 373 131
|
|
||||||
3351192: 2 65 1 640 75 9 78
|
|
||||||
5108625: 3 2 2 5 2 165 313 1 7 8 6
|
|
||||||
178031530140: 14 4 9 269 7 1 710 822
|
|
||||||
6883328: 6 94 1 3 113 7 9 4 1 4 4
|
|
||||||
4007370310: 15 90 8 9 7 357 89 830
|
|
||||||
588964251601: 7 5 347 2 47 20 963 5 1
|
|
||||||
270755048: 6 42 1 631 212 57 8 8
|
|
||||||
1332121: 8 9 8 4 2 3 6 800 8 3 3 88
|
|
||||||
5591335: 371 3 5 2 6 7 5
|
|
||||||
14219565360: 5 993 213 3 8 754 91 5
|
|
||||||
5861562162: 1 8 9 4 8 6 6 4 451 53 6 2
|
|
||||||
1433385: 874 74 21 72 9
|
|
||||||
15707744640: 568 36 6 5 59 434
|
|
||||||
1690128: 66 2 4 97 33
|
|
||||||
398948632: 65 4 61 85 5 3 7 72
|
|
||||||
10387019376: 63 1 245 7 6 77 42 328
|
|
||||||
4179604: 5 6 422 1 20 40 45 4
|
|
||||||
207295515460: 7 423 3 645 7 3 9 6 1 1 9
|
|
||||||
1496054: 80 69 48 12 54
|
|
||||||
117174039: 60 5 5 4 331 59 2 37
|
|
||||||
120561: 443 34 8 3 62
|
|
||||||
1093662: 1 413 9 1 86
|
|
||||||
72832203: 49 3 4 4 791 3 5 22 3 9 9
|
|
||||||
9172450: 520 94 7 264 49 175
|
|
||||||
5092: 9 52 9 6 5 869
|
|
||||||
205017: 859 5 67 47 3
|
|
||||||
502964: 5 465 2 92
|
|
||||||
982872: 55 31 30 94 721 1 6
|
|
||||||
18842130: 997 20 24 362 50 30
|
|
||||||
933: 11 824 8 3 87
|
|
||||||
100362657: 9 3 2 6 375 988 3 3 8 4 1
|
|
||||||
125631197: 7 8 1 2 92 6 9 72 1 563 2
|
|
||||||
16965: 936 759 2 5 8
|
|
||||||
63221509696: 76 214 5 4 340 89 8 8
|
|
||||||
175095120: 66 4 1 5 6 10 184 6 3 8 5
|
|
||||||
5948579768: 69 5 3 2 6 5 44 93 3 8 4 3
|
|
||||||
612455: 6 4 1 638 251 2 8 3 1 9 6
|
|
||||||
35828415: 6 4 1 7 9 779 2 22 5 4 5 7
|
|
||||||
1423570: 77 835 65 4 6 1 849
|
|
||||||
139702935: 55 8 4 5 5 6 4 90 2 935
|
|
||||||
521072: 148 8 55 9 5 8
|
|
||||||
42845205: 9 110 6 54 47 5
|
|
||||||
155790: 8 558 97 18 1
|
|
||||||
347911604818: 91 6 354 22 44 2 9 9 8 8
|
|
||||||
196579: 1 9 15 15 129 2 19 499
|
|
||||||
178336116: 5 53 16 4 522 6 6
|
|
||||||
211784: 352 6 6 22 4
|
|
||||||
357611951: 9 19 8 1 613 463 7 3 3 5
|
|
||||||
2856: 6 31 29 54 4
|
|
||||||
3115653: 8 404 964 5
|
|
||||||
139573401: 1 34 1 142 33 851 891
|
|
||||||
2731: 3 107 8 1 8 8 80 3
|
|
||||||
1635930605522: 8 5 9 6 8 137 7 94 604 2
|
|
||||||
2517747584: 8 1 3 715 424 5 755 1 9
|
|
||||||
13551: 8 9 6 589 4
|
|
||||||
8640: 9 60 9
|
|
||||||
246434062: 6 18 632 93 960 87 62
|
|
||||||
844073: 298 57 899 67 7 47
|
|
||||||
14942463139: 169 883 197 631 39
|
|
||||||
70584888: 8 8 23 8 888
|
|
||||||
66176064187: 882 7 833 5 9 17 2 7 5 3
|
|
||||||
54955: 54 95 5
|
|
||||||
1683752: 417 2 9 562 7
|
|
||||||
31395181: 94 497 1 1 672 9 4
|
|
||||||
418453: 9 7 19 1 1 349 2
|
|
||||||
737204: 8 1 4 189 9 3 86 4 5 5 1 3
|
|
||||||
@@ -1,168 +0,0 @@
|
|||||||
package day08
|
|
||||||
|
|
||||||
import (
|
|
||||||
"adventofcode2024/utils/grid2d"
|
|
||||||
"adventofcode2024/utils/inputs"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
type loc struct {
|
|
||||||
x int
|
|
||||||
y int
|
|
||||||
}
|
|
||||||
|
|
||||||
type pt struct {
|
|
||||||
display rune
|
|
||||||
antinodes int
|
|
||||||
paired map[loc]pt
|
|
||||||
visited map[rune]bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part1(input string) int {
|
|
||||||
grid := inputs.ToGrid2D(input, "\n", "", pt{display: '.'}, func(c string) pt { return pt{display: rune(c[0]), paired: make(map[loc]pt), visited: make(map[rune]bool)} })
|
|
||||||
for x1 := 0; x1 < grid.SizeX(); x1++ {
|
|
||||||
for y1 := 0; y1 < grid.SizeY(); y1++ {
|
|
||||||
pt1 := grid.Get(x1, y1)
|
|
||||||
if pt1.display != '.' {
|
|
||||||
for x2 := 0; x2 < grid.SizeX(); x2++ {
|
|
||||||
for y2 := 0; y2 < grid.SizeY(); y2++ {
|
|
||||||
pt2 := grid.Get(x2, y2)
|
|
||||||
if x1 != x2 && y1 != y2 && pt1.display == pt2.display && !isPaired(x1, y1, pt1, pt2) {
|
|
||||||
pt1.paired[loc{x: x2, y: y2}] = pt2
|
|
||||||
pt2.paired[loc{x: x1, y: y1}] = pt1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
pt1 := grid.Get(x, y)
|
|
||||||
if pt1.display != '.' {
|
|
||||||
for ploc := range pt1.paired {
|
|
||||||
addAntiNodes(x, y, ploc.x, ploc.y, grid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
antinodes := 0
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
pt := grid.Get(x, y)
|
|
||||||
if pt.antinodes > 0 {
|
|
||||||
antinodes++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return antinodes
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part2(input string) int {
|
|
||||||
grid := inputs.ToGrid2D(input, "\n", "", pt{display: '.'}, func(c string) pt { return pt{display: rune(c[0]), paired: make(map[loc]pt), visited: make(map[rune]bool)}})
|
|
||||||
for x1 := 0; x1 < grid.SizeX(); x1++ {
|
|
||||||
for y1 := 0; y1 < grid.SizeY(); y1++ {
|
|
||||||
pt1 := grid.Get(x1, y1)
|
|
||||||
if pt1.display != '.' {
|
|
||||||
for x2 := 0; x2 < grid.SizeX(); x2++ {
|
|
||||||
for y2 := 0; y2 < grid.SizeY(); y2++ {
|
|
||||||
pt2 := grid.Get(x2, y2)
|
|
||||||
if x1 != x2 && y1 != y2 && pt1.display == pt2.display && !isPaired(x1, y1, pt1, pt2) {
|
|
||||||
pt1.paired[loc{x: x2, y: y2}] = pt2
|
|
||||||
pt2.paired[loc{x: x1, y: y1}] = pt1
|
|
||||||
pt1.antinodes++
|
|
||||||
pt2.antinodes++
|
|
||||||
grid.Set(x1, y1, pt1)
|
|
||||||
grid.Set(x2, y2, pt2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
pt1 := grid.Get(x, y)
|
|
||||||
if pt1.display != '.' {
|
|
||||||
for ploc := range pt1.paired {
|
|
||||||
addAntiNodes_p2(pt1.display, x, y, ploc.x, ploc.y, grid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
antinodes := 0
|
|
||||||
fmt.Printf("%v\n", grid.StringWithFormatter(formatter))
|
|
||||||
for x := 0; x < grid.SizeX(); x++ {
|
|
||||||
for y := 0; y < grid.SizeY(); y++ {
|
|
||||||
pt := grid.Get(x, y)
|
|
||||||
if pt.antinodes > 0 {
|
|
||||||
antinodes++
|
|
||||||
} else {
|
|
||||||
if pt.display != '.' { antinodes++ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return antinodes
|
|
||||||
}
|
|
||||||
|
|
||||||
func formatter(p pt, x int, y int) string {
|
|
||||||
if p.antinodes > 0 {
|
|
||||||
return "#"
|
|
||||||
}
|
|
||||||
return "."
|
|
||||||
}
|
|
||||||
|
|
||||||
func isPaired(x int, y int, p1 pt, pt2 pt) bool {
|
|
||||||
return p1.paired[loc{x: x, y: y}].display == pt2.display
|
|
||||||
}
|
|
||||||
|
|
||||||
func addAntiNodes(x1 int, y1 int, x2 int, y2 int, grid *grid2d.Grid[pt]) {
|
|
||||||
px1, py1, px2, py2 := offsetPoints(x1, y1, x2, y2)
|
|
||||||
|
|
||||||
if px1 < 0 || px1 >= grid.SizeX() || py1 < 0 || py1 >= grid.SizeY() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pt1 := grid.Get(px1, py1)
|
|
||||||
pt1.antinodes++
|
|
||||||
grid.Set(px1, py1, pt1)
|
|
||||||
if px2 < 0 || px2 >= grid.SizeX() || py2 < 0 || py2 >= grid.SizeY() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pt2 := grid.Get(px2, py2)
|
|
||||||
pt2.antinodes++
|
|
||||||
grid.Set(px2, py2, pt2)
|
|
||||||
}
|
|
||||||
|
|
||||||
func addAntiNodes_p2(frequency rune, x1 int, y1 int, x2 int, y2 int, grid *grid2d.Grid[pt]) {
|
|
||||||
px1, py1, px2, py2 := offsetPoints(x1, y1, x2, y2)
|
|
||||||
if !(px1 < 0 || px1 >= grid.SizeX() || py1 < 0 || py1 >= grid.SizeY()) {
|
|
||||||
pt1 := grid.Get(px1, py1)
|
|
||||||
if !pt1.visited[frequency] {
|
|
||||||
pt1.antinodes++
|
|
||||||
pt1.visited[frequency] = true
|
|
||||||
grid.Set(px1, py1, pt1)
|
|
||||||
addAntiNodes_p2(frequency, x1, y1, px1, py1, grid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !(px2 < 0 || px2 >= grid.SizeX() || py2 < 0 || py2 >= grid.SizeY()) {
|
|
||||||
pt2 := grid.Get(px2, py2)
|
|
||||||
if !pt2.visited[frequency] {
|
|
||||||
pt2.antinodes++
|
|
||||||
pt2.visited[frequency] = true
|
|
||||||
grid.Set(px2, py2, pt2)
|
|
||||||
addAntiNodes_p2(frequency, x2, y2, px2, py2, grid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to calculate two points symmetrically placed above and below the line
|
|
||||||
func offsetPoints(x1, y1, x2, y2 int) (int, int, int, int) {
|
|
||||||
dx := x1 - x2
|
|
||||||
dy := y1 - y2
|
|
||||||
|
|
||||||
p1x := x1 + dx
|
|
||||||
p1y := y1 + dy
|
|
||||||
p2x := x2 - dx
|
|
||||||
p2y := y2 - dy
|
|
||||||
return p1x, p1y, p2x, p2y
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
package day08
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPart1(t *testing.T) {
|
|
||||||
r := Part1(`............
|
|
||||||
........0...
|
|
||||||
.....0......
|
|
||||||
.......0....
|
|
||||||
....0.......
|
|
||||||
......A.....
|
|
||||||
............
|
|
||||||
............
|
|
||||||
........A...
|
|
||||||
.........A..
|
|
||||||
............
|
|
||||||
............`)
|
|
||||||
require.Equal(t, 14, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPart2(t *testing.T) {
|
|
||||||
r := Part2(`............
|
|
||||||
........0...
|
|
||||||
.....0......
|
|
||||||
.......0....
|
|
||||||
....0.......
|
|
||||||
......A.....
|
|
||||||
............
|
|
||||||
............
|
|
||||||
........A...
|
|
||||||
.........A..
|
|
||||||
............
|
|
||||||
............`)
|
|
||||||
require.Equal(t, 34, r)
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
.....y..........................p................r
|
|
||||||
........I.........................................
|
|
||||||
......................4.s.........................
|
|
||||||
..........4.......................................
|
|
||||||
....y.............................................
|
|
||||||
......................................p.........r.
|
|
||||||
..........0..s......N..................1.....p....
|
|
||||||
..y........4.......................p..............
|
|
||||||
...............0..................................
|
|
||||||
..............0....t....N....h....................
|
|
||||||
.............N....................................
|
|
||||||
......j...................s............H...l..O...
|
|
||||||
..........q.................H................O....
|
|
||||||
..f...e.qj.....y...0..............................
|
|
||||||
...........t..........................k..Q..r.....
|
|
||||||
.........6................Q..s...x......W.........
|
|
||||||
....2..b...e....t..4.........c.....xW.j...........
|
|
||||||
...e....................w................1.....O..
|
|
||||||
..e..j..5...........................c.............
|
|
||||||
.........B..2...............MK................H...
|
|
||||||
...2......b...g..X...q..........h...............O.
|
|
||||||
...q...2..........m....k...i...............QV.x...
|
|
||||||
...................i.........W.k.............HQ...
|
|
||||||
........b...X...............D..........c...N......
|
|
||||||
................................l..........h.....I
|
|
||||||
.m...........g......l.......c.............3......V
|
|
||||||
....X.......m........g...V.K...7......F.d.........
|
|
||||||
.........b.X...U..........................C.......
|
|
||||||
.....................l..............o.1....C......
|
|
||||||
............u.............K..............3...d....
|
|
||||||
......................i.T....f................V...
|
|
||||||
..............................1.k.................
|
|
||||||
.B.....E......9..m....K..5.M......................
|
|
||||||
...P...............M...95....o..i........I........
|
|
||||||
...............................S......3......wI...
|
|
||||||
.....EP...........9........5..T.R.................
|
|
||||||
.P..........v..9......f.............R.Co..w3......
|
|
||||||
..........h...SG..v.E...7..f.T....................
|
|
||||||
..........6..........L.................Y.......d..
|
|
||||||
..........B...............U........D..............
|
|
||||||
....B................U.....8..M....n...J..........
|
|
||||||
.........................L................Fw......
|
|
||||||
....L6E.P.................7.UG....J.....Y.D.......
|
|
||||||
........t........v...SJ........n..d...............
|
|
||||||
......................8v.....uG...................
|
|
||||||
..................L.....n.........................
|
|
||||||
...............T..............n......D............
|
|
||||||
..............o.........8................J.Y.R....
|
|
||||||
..................S...............u....F.......R..
|
|
||||||
........6..............u.....7.8..........Y..F....
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
package day09
|
|
||||||
|
|
||||||
import (
|
|
||||||
"adventofcode2024/utils"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Part1(input string) int {
|
|
||||||
disk := []int{}
|
|
||||||
file_id := 0
|
|
||||||
for i := 0; i <= len(input); i++ {
|
|
||||||
for x := 0; x < utils.MustAtoi(string(input[i])); x++ {
|
|
||||||
disk = append(disk, file_id)
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
if i < len(input) {
|
|
||||||
for x := 0; x < utils.MustAtoi(string(input[i])); x++ {
|
|
||||||
disk = append(disk, -1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_id++
|
|
||||||
}
|
|
||||||
|
|
||||||
printDisk(disk)
|
|
||||||
|
|
||||||
for i:=len(disk)-1;i>0;i--{
|
|
||||||
if disk[i] != -1 {
|
|
||||||
id := disk[i]
|
|
||||||
disk[i] = -1
|
|
||||||
for j:=0;j<=len(disk);j++ {
|
|
||||||
if disk[j] == -1 {
|
|
||||||
disk[j] = id
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printDisk(disk)
|
|
||||||
|
|
||||||
checksum := 0
|
|
||||||
for i:=0;i<len(disk);i++ {
|
|
||||||
if disk[i] != -1 {
|
|
||||||
checksum += i * disk[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return checksum
|
|
||||||
}
|
|
||||||
|
|
||||||
func Part2(input string) int {
|
|
||||||
disk := []int{}
|
|
||||||
file_id := 0
|
|
||||||
for i := 0; i <= len(input); i++ {
|
|
||||||
for x := 0; x < utils.MustAtoi(string(input[i])); x++ {
|
|
||||||
disk = append(disk, file_id)
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
if i < len(input) {
|
|
||||||
for x := 0; x < utils.MustAtoi(string(input[i])); x++ {
|
|
||||||
disk = append(disk, -1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_id++
|
|
||||||
}
|
|
||||||
|
|
||||||
printDisk(disk)
|
|
||||||
|
|
||||||
for i:=len(disk)-1;i>0;i--{
|
|
||||||
size := 0
|
|
||||||
if disk[i] != -1 {
|
|
||||||
id := disk[i]
|
|
||||||
for {
|
|
||||||
if i-size > 0 && disk[i-size] == id {
|
|
||||||
size++
|
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
free := 0
|
|
||||||
j := 0
|
|
||||||
found := false
|
|
||||||
for ;j<i && free < size;j++{
|
|
||||||
if disk[j] != -1 {
|
|
||||||
free = 0
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
free++
|
|
||||||
if free == size { found = true }
|
|
||||||
}
|
|
||||||
if found {
|
|
||||||
for k:=0;k<size;k++ {
|
|
||||||
disk[i-k] = -1
|
|
||||||
disk[j-size+k] = id
|
|
||||||
}
|
|
||||||
// printDisk(disk)
|
|
||||||
}
|
|
||||||
i -= (size -1)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printDisk(disk)
|
|
||||||
|
|
||||||
checksum := 0
|
|
||||||
for i:=0;i<len(disk);i++ {
|
|
||||||
if disk[i] != -1 {
|
|
||||||
checksum += i * disk[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return checksum}
|
|
||||||
|
|
||||||
func printDisk(disk []int) {
|
|
||||||
for _, x := range disk {
|
|
||||||
if x == -1 {fmt.Print(".")} else {
|
|
||||||
fmt.Printf("%d", x)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Print("\n")
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
package day09
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPart1(t *testing.T) {
|
|
||||||
r := Part1("2333133121414131402")
|
|
||||||
require.Equal(t,1928, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPart2(t *testing.T) {
|
|
||||||
r := Part2("2333133121414131402")
|
|
||||||
require.Equal(t, 2858, r)
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -7,6 +7,6 @@ require golang.org/x/exp v0.0.0-20221208152030-732eee02a75a
|
|||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/stretchr/testify v1.10.0 // direct
|
github.com/stretchr/testify v1.10.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,10 +11,7 @@ import (
|
|||||||
"adventofcode2024/day02"
|
"adventofcode2024/day02"
|
||||||
"adventofcode2024/day03"
|
"adventofcode2024/day03"
|
||||||
"adventofcode2024/day04"
|
"adventofcode2024/day04"
|
||||||
"adventofcode2024/day05"
|
|
||||||
"adventofcode2024/day06"
|
|
||||||
"adventofcode2024/day07"
|
|
||||||
"adventofcode2024/day08"
|
|
||||||
)
|
)
|
||||||
// Usage: go run main.go <NN>
|
// Usage: go run main.go <NN>
|
||||||
// assumes input is in day<NN>/input.txt
|
// assumes input is in day<NN>/input.txt
|
||||||
@@ -35,19 +32,6 @@ func main() {
|
|||||||
case 4:
|
case 4:
|
||||||
fmt.Printf("part 1: %d\n", day04.Part1(utils.Readfile(d)))
|
fmt.Printf("part 1: %d\n", day04.Part1(utils.Readfile(d)))
|
||||||
fmt.Printf("part 2: %d\n", day04.Part2(utils.Readfile(d)))
|
fmt.Printf("part 2: %d\n", day04.Part2(utils.Readfile(d)))
|
||||||
case 5:
|
|
||||||
fmt.Printf("part 1: %d\n", day05.Part1(utils.Readfile(d)))
|
|
||||||
fmt.Printf("part 2: %d\n", day05.Part2(utils.Readfile(d)))
|
|
||||||
case 6:
|
|
||||||
fmt.Printf("part 1: %d\n", day06.Part1(utils.Readfile(d)))
|
|
||||||
fmt.Printf("part 2: %d\n", day06.Part2(utils.Readfile(d)))
|
|
||||||
case 7:
|
|
||||||
fmt.Printf("part 1: %d\n", day07.Part1(utils.Readfile(d)))
|
|
||||||
fmt.Printf("part 2: %d\n", day07.Part2(utils.Readfile(d)))
|
|
||||||
case 8:
|
|
||||||
fmt.Printf("part 1: %d\n", day08.Part1(utils.Readfile(d)))
|
|
||||||
fmt.Printf("part 2: %d\n", day08.Part2(utils.Readfile(d)))
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("no such day: %d", d))
|
panic(fmt.Errorf("no such day: %d", d))
|
||||||
}
|
}
|
||||||
@@ -55,7 +39,7 @@ func main() {
|
|||||||
|
|
||||||
// Reads day from os.Args.
|
// Reads day from os.Args.
|
||||||
func day() int {
|
func day() int {
|
||||||
latest := 7
|
latest := 3
|
||||||
if len(os.Args) == 1 {
|
if len(os.Args) == 1 {
|
||||||
return latest
|
return latest
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user