initialise

This commit is contained in:
Javier-Orestis MANTZIOS committed 2025-01-07 10:39:37 +02:00
commit 108f50e8ea
25 files changed
+5534

No files matched your search

+1000
View File
@@ -0,0 +1,1000 @@
97924 12015
50267 32019
98415 10716
64856 63472
73972 11396
85009 60876
16084 81584
63342 45754
36722 57910
71800 33139
13657 42097
31646 60883
13033 45362
98175 50742
12224 82309
26745 36160
91733 22906
63235 23212
34149 43474
55819 92797
89877 82309
63876 68418
35017 24286
71693 56515
67230 56504
32107 70146
29455 43966
10294 80966
11503 97276
45021 44890
65889 45042
22646 50684
29246 40041
94894 64304
97487 32858
11658 25139
86638 37390
77389 69681
20834 20641
43948 97853
25169 18624
47469 14334
77677 51466
67863 10346
66135 44506
22510 90140
39330 56504
96958 57081
65629 98292
40599 32865
41131 50742
41361 91497
44833 76741
32056 53741
15025 58921
32170 52656
95391 10777
55371 78010
48305 51466
65862 89174
40636 54184
97450 99374
77105 83865
34812 41764
23999 77192
25503 93924
66670 24286
30994 12382
76175 60974
43005 50445
53741 14287
67639 60769
68473 53741
16078 76080
51006 54184
74520 49015
17232 40707
25445 89174
39404 16084
23041 85801
54140 17286
46419 20749
49484 46855
19164 86911
39289 12150
59326 22031
47693 53741
89369 86087
78926 99284
46255 78050
53879 65533
27064 21120
21756 63733
46201 58079
83358 45402
67814 39702
36582 27906
68742 32858
63598 80368
46069 15449
43061 21120
82842 43966
47757 41841
11761 26946
55059 78870
73640 28789
87885 16294
76819 42168
99933 82831
96701 43783
33926 50742
53211 50456
63392 97067
86076 89174
22252 52322
82469 52960
15384 19277
17446 62973
60995 85599
67563 99208
81796 42097
13959 65386
67714 81831
98828 55717
66905 59486
12690 99284
24626 21468
14738 49115
58555 17335
23470 27139
38356 94975
21420 34794
85109 99284
88215 16754
13822 56504
78720 97465
17622 49756
27946 39646
42737 85951
39857 51466
98335 73635
51079 27139
75618 80096
55716 22031
44439 79910
74943 85951
15914 69859
94892 51466
89851 26946
58970 40772
89048 21927
79217 43966
22327 21545
15513 56526
52584 39743
17822 37390
50437 45539
26861 99284
39402 43966
44176 98943
93367 38719
85462 35314
70936 30406
64975 53741
69603 40772
27447 43966
48913 50742
55729 17033
55903 55600
58608 73308
13030 62519
79586 53741
85885 78724
47696 26716
89036 95563
51691 35314
74369 27139
83246 50742
34233 53741
87921 48574
12660 51466
15408 54159
82361 21120
78963 99205
87395 10043
73712 24286
97972 97487
77207 34050
26598 21574
51812 47558
34508 90761
26436 40460
71011 60574
50890 51466
50493 24854
16217 47118
44890 73772
44429 26946
99607 43966
38107 99307
10208 32858
73098 45260
26515 70155
53750 55600
74904 44506
89898 43966
71445 37467
77746 82076
20131 34528
67840 12429
36620 80900
18892 95044
73474 85951
83450 24551
45728 11046
66927 40772
35585 85951
93945 83865
76199 18892
26536 16084
58275 26910
51874 42097
88833 57054
75871 85642
67764 32556
69526 26946
19475 16084
80585 90761
34189 82309
96205 55600
11371 24399
38079 51194
99465 44890
21120 99284
15731 84749
82309 28950
33121 47050
84859 31889
93071 22719
69403 40772
47701 55127
94758 12405
71944 40772
59059 27139
23522 48009
69897 20227
96432 53857
40161 56742
99974 31605
28726 40772
43411 19960
52521 51466
10024 51312
84954 35314
33296 99284
77780 49638
89571 26843
13582 87187
27081 74290
29330 26946
35469 42097
96455 60260
44473 20645
52280 90488
36181 17193
83515 89920
77203 22203
31113 70569
93446 50742
94776 14334
65132 74481
76822 22765
76108 25212
88359 81025
58602 89174
71874 21120
78276 98125
39092 22656
62278 65305
40915 21120
55896 26933
89049 11422
73736 82035
41226 93643
91298 94509
48613 68016
48763 50742
72203 25900
83036 90823
40070 22471
34155 77007
66614 75044
99172 34719
10261 48242
75196 91994
60212 32858
82136 42097
68902 40955
61584 61094
18196 97838
12112 99284
28990 51912
21082 40991
45932 51466
71891 70388
93524 71891
36886 20645
84927 11097
90640 82280
12240 22031
50754 79877
12243 56504
21896 69022
27361 50742
92599 91087
50881 17965
19258 92324
48109 51450
39617 66508
33422 59580
24453 21120
70071 76583
61099 99284
32270 81634
18554 90140
57108 40772
72972 82180
44178 35314
58969 35314
68638 32858
59752 97487
91349 85951
42541 91799
11241 85951
56014 40772
18240 82309
83562 82349
99794 20645
49642 24286
26318 35314
20645 16436
95467 32543
85129 29179
63111 28393
21776 47366
17413 13453
39834 96167
54442 65122
25618 90140
67027 50742
91899 59045
36861 84429
41069 24405
39818 26532
41305 57846
50844 54184
35314 52839
13646 66988
21610 72792
84316 67867
37390 27139
33072 38672
50742 68302
95333 44890
67978 10314
54472 77425
65124 64037
62367 57908
88774 40958
71725 85651
27200 73263
72832 16084
93194 20645
84331 87651
83654 96024
98518 44506
26270 85951
17471 54184
40445 40716
24801 98329
71775 48960
63886 62621
11574 58455
36092 85951
70761 10112
61291 26292
97303 19625
44506 86054
91586 95307
58301 40772
81698 27139
72921 26946
50502 36406
16298 86304
75558 37706
22495 99284
33661 82309
85183 85951
57125 55600
32610 99284
61179 38278
59372 93008
74037 14334
48967 43966
57442 16159
26047 21120
23188 89174
23633 16084
15300 57527
11726 50556
59493 94320
66596 32570
78092 75310
48254 42097
23338 50742
36327 78906
14142 94284
26946 68750
51040 40772
69209 40772
15882 54414
31997 14334
12496 32775
54801 60587
92254 34864
54184 56224
50128 37390
46755 37390
68205 42097
16526 31984
33415 89174
95561 99284
58231 11999
12000 27968
13762 24130
20783 29706
49870 13617
31028 85455
73097 31238
36095 22031
15523 97714
41560 34014
30530 90052
34128 97988
91541 54184
97402 68624
14133 22098
95923 88909
21065 76908
54343 27139
17923 52386
39271 97487
54329 47300
29173 12083
73679 66145
25043 79638
23367 27139
47733 73848
50178 19841
61856 75136
12334 99284
24075 99000
66813 16084
68591 37390
60548 26946
47476 51466
65067 34238
27139 43966
90127 90140
71661 53741
76564 86323
14606 74629
33073 20645
28929 99210
20290 16026
55600 31919
44895 95367
69018 51466
19996 10788
79035 39402
59205 55228
38746 94339
86509 76500
99613 75251
21577 12189
97880 60387
91425 85951
84219 85951
82752 51466
24031 14334
21843 51466
67480 16084
89728 72818
28954 99145
88314 89174
18726 32858
87526 25968
85951 85741
64143 78312
42517 49699
13848 22031
43260 35799
53772 81476
54544 99120
38528 26946
75966 82991
66179 95509
58180 45829
53138 99284
43795 67657
75091 16278
82097 47194
58590 11318
50521 83696
27323 81208
33112 99284
27922 49371
65787 90869
40517 36120
20919 48795
30416 63304
88719 50742
79993 75970
27124 51458
35850 70479
47642 30113
56934 42097
99900 51466
21591 33043
97673 89174
29342 22031
75687 90761
45898 50821
22897 63031
23889 77846
63662 48377
65299 75957
44563 99284
60281 51466
49181 35314
50909 52749
21600 11254
44988 13205
58351 33964
84132 90140
33795 94103
30993 90836
23660 42097
56833 67799
84296 30712
27172 23612
41123 64339
70231 50742
65636 35314
24047 72155
11869 60279
44666 91711
81159 79500
75418 66073
18982 51466
54865 26946
91042 14334
21791 89073
86188 22769
92550 56504
63942 48743
55260 92181
97155 69816
44593 25507
94520 37390
16803 31162
99284 94474
10940 16434
51986 32334
94727 54184
79564 22031
67524 42754
96074 54184
32231 87988
82182 11698
36414 29276
16281 28226
21085 86754
98238 43817
53299 42097
19359 93023
46340 72842
16355 51322
70234 51466
50841 13798
81149 71891
58011 53741
80355 58080
62858 56427
25160 14155
29287 26946
82307 37276
45594 10162
52167 67510
66037 18892
16339 26946
74466 59737
68243 96568
70410 82183
18833 81661
52684 20077
99904 14334
64936 32858
67435 35314
25168 51466
48685 52200
87833 43966
16974 56000
82852 91407
54986 42097
56112 49272
64314 67342
66607 54466
61959 45397
20294 14988
22416 99280
15287 22031
42081 17788
69276 85883
19958 89174
14337 24625
43966 45494
56772 64995
37195 65787
71264 60398
45446 14947
27319 54184
71714 56504
98898 54184
15964 53181
35923 34140
92462 99284
70969 21414
60163 81686
26799 45525
57327 92053
19339 51466
56504 91566
53113 44890
78876 51902
96200 89174
82490 70725
44316 36065
71051 88682
89880 22031
27972 74592
58858 41411
31090 64119
99124 40772
77060 35314
67020 25937
28781 22031
58289 99284
89174 50742
38323 63710
42607 42383
12543 89055
23349 38990
70058 59526
15437 50742
59862 98161
30674 37596
14449 18706
42471 22031
41124 32858
77330 44890
91002 14369
12075 40772
51581 75361
17412 76932
57784 38581
78558 99284
68326 18310
33313 54184
18353 52449
91690 32831
31047 33504
41819 19604
97743 65016
81549 20645
72159 33409
38296 27139
39901 97487
26924 14334
77429 52218
90666 42785
25384 60133
61440 92089
42764 30200
26668 94108
44171 93942
96575 54184
77777 25665
65805 84579
66448 48617
66204 20645
67751 33623
48577 64139
14034 62738
82234 33385
94447 92116
21669 80984
76758 43995
16998 91461
10808 14581
91668 92007
42411 65834
83439 51090
57286 56504
26423 85951
47687 90581
75978 35314
79027 96347
13122 76475
43173 64852
33696 85951
26050 53741
29903 49202
55762 67069
22725 93128
92748 37390
75292 46134
84901 83013
82424 53741
49756 10496
99049 95224
21549 42097
45030 90831
42687 43966
24675 43966
64330 78889
26258 21120
11886 18810
10674 55709
80983 36441
73290 20645
91623 50742
68510 82209
96050 27139
29559 40772
87297 79655
16161 22031
69453 73178
79979 36506
28404 82655
95222 38807
61168 81721
39809 74305
24627 16084
48823 82344
22852 44523
67111 26946
22838 97487
19454 33107
84203 54184
97780 35714
53203 27139
89425 97487
16614 18100
19219 99284
20569 82309
48161 40982
17213 31332
70935 40772
86566 78489
24611 91868
54359 97873
95758 54184
20532 73488
49070 58755
66014 54184
69011 69128
54241 99864
61068 82574
64852 26325
60260 90900
26299 10028
58452 27139
26134 22031
84291 31012
94851 23134
90147 21120
88435 46853
26639 32875
98570 64925
66700 61354
57045 31104
30983 77622
77419 62276
61144 34934
79828 81916
38801 34632
71141 73192
30543 33571
33787 93024
93255 97304
27104 93186
43923 23461
70069 73947
23376 79180
82293 51960
37692 27139
91328 69682
47801 37390
90140 50742
40772 21893
77630 62221
26106 24286
82191 79832
29674 85951
32858 35263
57709 50742
70834 74783
34807 23868
40646 93606
17334 72970
79995 39402
22031 14334
59137 40772
23515 23407
69665 59362
78363 31953
74969 85136
51172 40772
11229 98531
86385 53822
71049 73230
90321 64852
15381 24392
17377 14334
35732 26946
92220 98405
75143 22448
93217 22031
12345 80271
66240 40772
63460 31057
14334 59725
52629 82139
67549 57710
32589 21120
40973 51466
48086 64809
62405 56431
69385 65345
73015 28247
47116 35314
89461 53741
89978 37390
45093 43966
95580 20645
90761 22983
61770 37390
91506 17021
37148 58211
73119 29135
83826 16084
11602 46435
79485 43966
51373 14334
71333 50742
41091 71891
60255 11833
70778 44890
76205 26946
67609 32858
65250 83865
81623 12242
20105 17154
53573 89174
67594 55600
30437 56504
74127 98641
43012 24286
82823 90761
87461 43966
35267 22031
99386 71177
47451 23934
51886 43966
45000 98769
93502 69179
26127 42438
61492 44506
16858 20657
77633 89949
29357 86929
91974 85951
87979 14334
12707 83865
38824 83968
46482 25275
69244 35249
10765 99284
30619 53741
30590 55600
99292 85951
28244 43966
18494 85951
91105 44506
73930 26946
30813 85951
67308 94250
54758 85951
43568 33487
15869 34016
82010 27139
33131 52450
57985 12045
93101 51270
15835 64414
24286 23491
56944 11795
47755 10809
82704 75027
93787 90140
51466 20555
51856 14334
30252 44890
44052 31936
20691 68431
57033 63455
13300 43535
33712 84239
97080 51559
91808 22031
90652 22031
64155 44890
65463 40772
44798 52819
43936 44156
18253 27360
73289 89174
71164 56212
34646 20645
42097 89582
15990 55600
56628 41785
68636 89174
67043 16186
25652 34811
87109 70679
83865 43966
54773 24922
12778 27139
41699 62346
59666 17557
94699 37390
77535 27125
19069 18324
34344 51466
24906 41267
91226 76330
58992 17879
21084 37390
95352 27424
14593 14167
57258 79480
41550 98477
59908 49327
63930 56501
52103 49712
98431 19293
64232 64852
10638 14334
52217 35314
11797 27139
12501 53741
39316 73238
62625 54184
54433 27493
23801 35877
15292 50742
28822 55302
90501 18892
52285 33785
42385 21120
34500 97487
39882 93726
12013 47966
42691 18536
57217 14334
31320 58173
90532 42331
65216 54184
78393 42097
48315 29944
37332 48362
40774 98927
16062 28783
73931 39391
54344 21435
17846 56504
61807 42097
93272 97487
+71
View File
@@ -0,0 +1,71 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
"slices"
)
func totalDistance(firstList, secondList []int) int {
slices.Sort(firstList)
slices.Sort(secondList)
// fmt.Println(thirdList)
result := 0
for i := range firstList {
if firstList[i] > secondList[i] {
result = result + firstList[i] - secondList[i]
} else {
result = result + secondList[i] - firstList[i]
}
}
return result
}
func similarityScore(firstList, secondList []int) int {
result := 0
appearances := []int{}
for i:=range firstList {
count := 0
for j:=range secondList {
if firstList[i] == secondList[j] {
count = count + 1
}
}
appearances = append(appearances, count)
result = result + firstList[i] * count
}
return result
}
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
fmt.Printf("Error opening file: %v\n", err)
return
}
defer file.Close()
var firstList []int
var secondList []int
scanner := bufio.NewScanner(file)
for scanner.Scan() {
// Split the line into parts
line := scanner.Text()
parts := strings.Fields(line) // Fields splits by whitespace
// Convert parts to integers
first, err1 := strconv.Atoi(parts[0])
second, err2 := strconv.Atoi(parts[1])
if err1 != nil || err2 != nil {
fmt.Printf("Error parsing numbers on line: %s\n", line)
continue
}
firstList = append(firstList, first)
secondList = append(secondList, second)
}
fmt.Println(totalDistance(firstList, secondList))
fmt.Println(similarityScore(firstList, secondList))
}
+1000
View File
@@ -0,0 +1,1000 @@
75 76 77 80 82 85 84
49 52 53 55 58 59 61 61
54 57 60 62 66
4 6 8 10 11 14 19
82 85 86 83 85 87 89
85 86 87 86 89 88
69 72 73 76 77 74 75 75
4 6 4 5 8 11 15
6 9 10 12 15 16 15 20
41 43 43 45 48 51
48 51 53 53 56 58 59 58
67 69 71 74 74 77 77
82 83 85 85 89
21 24 26 26 29 31 36
4 7 10 11 15 18 20 21
56 58 60 63 65 69 70 68
24 26 30 32 33 35 35
12 13 15 17 20 24 25 29
52 53 54 57 58 59 63 68
43 46 48 55 58 59
15 16 23 26 27 28 26
49 50 53 56 59 64 64
56 58 59 65 69
3 5 6 8 13 18
45 44 46 47 50 52 54
37 35 36 37 34
53 50 51 53 54 56 56
80 78 79 80 81 83 86 90
32 31 34 37 40 45
76 75 77 79 77 80
26 25 22 24 23
27 26 23 24 25 25
96 93 96 93 97
37 34 35 36 39 36 38 45
68 65 66 67 67 70 72
41 39 42 42 43 40
88 86 89 90 90 91 93 93
24 23 25 26 26 28 32
79 77 77 80 83 88
50 48 50 52 55 58 62 63
39 38 39 41 45 47 48 45
40 38 41 42 44 45 49 49
50 49 53 56 60
74 73 77 80 86
40 37 38 39 42 48 49 50
12 11 17 20 22 23 25 23
74 71 73 75 80 83 83
20 17 23 25 29
32 30 37 39 42 48
80 80 83 86 87
73 73 76 78 80 83 85 82
19 19 22 25 28 30 32 32
43 43 46 49 53
69 69 72 75 80
24 24 25 22 25 27
60 60 58 61 64 65 62
52 52 50 51 53 55 55
56 56 59 56 60
37 37 38 36 38 45
7 7 9 12 12 13 14 16
52 52 55 57 57 56
89 89 89 91 91
7 7 7 10 13 15 17 21
43 43 44 47 50 50 52 58
4 4 5 9 10 11 14 17
11 11 13 17 15
7 7 11 14 14
55 55 58 62 64 66 70
75 75 78 79 81 85 88 94
56 56 63 64 67
5 5 7 10 12 13 18 16
32 32 38 41 43 44 47 47
36 36 43 44 48
9 9 12 17 22
11 15 16 18 20 21 23 26
50 54 55 57 60 62 64 61
86 90 92 94 95 95
84 88 90 93 97
3 7 9 12 15 21
36 40 41 44 47 46 47 50
39 43 45 43 46 47 50 47
84 88 90 87 90 90
2 6 7 4 6 10
31 35 34 35 36 39 45
11 15 15 16 18
1 5 7 9 11 14 14 13
54 58 60 60 63 63
52 56 58 60 60 64
61 65 65 66 71
48 52 55 56 60 61
77 81 84 88 89 86
58 62 63 66 67 71 74 74
71 75 78 81 82 84 88 92
82 86 87 91 98
41 45 48 50 55 58 61
70 74 77 78 83 86 88 85
71 75 82 84 84
19 23 30 31 35
59 63 70 72 77
45 51 53 55 56
8 14 16 19 17
46 52 55 58 58
71 77 79 82 84 87 88 92
68 75 77 80 87
29 35 38 35 36 38 39
34 39 38 41 43 45 42
26 33 35 34 36 39 41 41
85 92 95 92 96
33 38 40 39 40 41 48
83 89 92 93 93 94 95 96
85 92 95 95 97 96
54 59 59 60 61 62 64 64
27 34 35 37 37 41
69 75 77 79 81 81 86
25 30 31 32 36 38
51 58 62 63 64 63
54 61 62 65 69 72 74 74
59 66 68 69 73 76 79 83
14 19 20 24 30
33 40 42 48 51 52
28 33 36 37 42 45 43
44 50 55 58 58
14 21 22 29 30 34
35 40 43 49 52 53 59
63 61 58 56 54 51 53
52 49 46 45 45
74 72 69 68 67 63
80 77 74 73 72 67
77 74 76 73 70 68 67
20 17 16 15 17 19
45 42 41 38 36 35 38 38
55 54 56 53 49
20 18 17 15 14 16 10
17 14 14 12 10 8 6
72 71 69 68 66 66 63 65
31 30 30 27 26 25 24 24
51 49 48 48 47 43
26 24 24 21 20 14
19 18 14 13 10 8
84 81 80 76 78
47 45 41 38 35 35
68 67 64 60 56
74 71 68 66 62 60 54
43 41 38 36 33 27 26
63 60 53 51 54
29 28 23 20 17 16 14 14
46 45 42 39 34 31 30 26
23 21 19 13 11 5
27 29 26 24 23 22 19
86 88 86 83 81 79 81
57 59 57 54 52 50 47 47
21 24 21 18 14
61 63 62 61 59 57 50
96 99 97 98 96 95 92
66 69 71 69 71
41 43 42 39 37 40 37 37
79 82 85 84 80
77 79 77 78 73
22 24 24 22 20
63 66 64 64 66
19 22 22 21 18 18
95 97 97 95 93 91 87
32 33 31 29 29 28 25 18
42 44 43 39 38 36 34 31
27 29 27 24 22 18 20
20 22 18 15 15
68 69 65 63 59
79 81 77 76 73 72 67
68 70 69 63 62 60 59 56
42 44 39 36 33 36
88 90 87 82 81 79 79
66 69 66 59 58 54
70 71 70 68 66 60 54
77 77 76 74 72 71 69 66
43 43 40 37 34 33 36
21 21 20 18 18
34 34 32 29 27 25 22 18
79 79 78 76 73 66
89 89 92 90 88
77 77 75 73 72 73 76
84 84 83 85 85
30 30 28 26 23 22 25 21
22 22 25 23 21 20 15
66 66 66 64 63 62 60 57
75 75 73 70 67 67 68
33 33 33 30 27 25 22 22
55 55 52 50 50 46
40 40 38 38 37 32
63 63 62 58 55
95 95 94 90 92
87 87 85 82 78 78
88 88 84 83 79
85 85 83 79 73
53 53 51 44 42
12 12 7 5 4 6
53 53 48 47 44 44
35 35 32 25 22 18
46 46 39 36 34 27
26 22 21 19 18 15
91 87 86 85 83 85
24 20 17 15 14 14
66 62 60 57 54 50
67 63 62 60 59 57 51
41 37 35 38 37 36 33 31
18 14 15 12 9 8 5 8
37 33 32 30 29 30 30
70 66 64 63 60 61 58 54
34 30 28 26 23 26 24 18
28 24 22 19 16 16 15
54 50 50 48 47 44 41 43
82 78 75 75 75
38 34 34 33 30 29 25
52 48 47 46 46 43 37
20 16 15 13 11 10 6 5
57 53 51 47 48
89 85 83 79 78 76 76
28 24 23 21 17 16 15 11
87 83 79 78 77 74 73 66
63 59 58 56 49 48
87 83 81 74 75
43 39 37 31 31
80 76 75 73 66 62
48 44 43 41 34 27
53 46 43 41 38 37 34
60 55 52 49 46 45 48
56 50 48 46 43 40 37 37
93 86 85 84 82 80 76
20 15 14 11 10 3
73 67 64 63 60 58 59 58
55 49 47 45 47 49
15 10 9 8 7 9 9
44 37 39 37 35 33 31 27
94 87 84 87 80
67 60 60 58 56
72 66 63 63 60 57 60
69 62 60 60 57 55 55
17 10 8 6 6 2
93 88 87 87 82
40 33 31 27 26
58 52 51 50 47 45 41 43
87 82 81 77 77
56 50 47 43 42 40 38 34
86 79 77 75 71 68 62
95 88 86 83 82 76 73
78 73 71 64 65
61 56 51 48 47 47
68 63 58 56 54 50
25 19 14 13 6
49 51 52 54 51
93 94 95 96 96
23 24 26 28 29 31 34 38
83 85 87 88 89 95
66 68 67 68 70
14 15 14 17 15
6 8 6 8 10 10
35 36 39 36 40
38 39 36 39 46
10 11 13 13 16 19
23 25 28 29 31 31 28
63 66 67 67 67
67 70 70 73 77
34 36 39 41 41 42 48
85 87 89 93 94 96
91 92 95 99 98
17 19 22 26 28 28
55 58 60 64 65 69
78 80 84 87 89 91 97
5 7 8 14 15 16 19
2 4 6 9 12 17 19 18
33 35 40 43 44 44
1 4 11 13 17
40 41 43 50 52 59
67 66 68 69 72
40 37 39 40 39
56 55 58 61 61
33 31 32 34 37 39 40 44
58 57 58 60 61 63 65 70
9 8 7 8 11
41 39 37 39 42 43 41
59 58 61 62 65 67 64 64
92 91 94 95 92 93 95 99
89 87 88 86 89 95
81 79 79 82 84 87 90 93
75 73 75 75 74
11 10 11 13 13 14 14
87 85 88 88 92
63 62 65 67 70 70 76
53 50 54 56 59 60 62
7 5 8 11 15 18 21 20
94 91 92 96 96
62 60 63 67 71
9 8 11 14 16 20 26
63 61 66 67 68 71 74
49 47 48 55 52
29 26 28 31 38 41 42 42
49 48 51 57 60 64
65 64 67 74 76 79 84
32 32 35 38 41 44 45
80 80 81 82 85 88 85
77 77 79 80 81 82 82
78 78 81 82 86
26 26 28 30 33 35 42
91 91 92 90 91 92
96 96 93 94 93
73 73 72 74 76 76
89 89 91 90 92 96
22 22 20 23 29
36 36 37 38 39 39 41 44
87 87 90 92 94 96 96 94
55 55 55 58 59 59
33 33 33 35 37 41
76 76 78 81 83 83 86 92
71 71 75 76 77 79
60 60 64 66 63
8 8 11 15 18 20 21 21
20 20 24 26 28 29 32 36
23 23 27 30 35
28 28 33 36 38 41 43
45 45 46 48 50 55 53
3 3 4 5 10 10
72 72 74 75 78 83 85 89
44 44 50 52 58
1 5 7 10 12
83 87 89 92 94 96 93
74 78 81 84 86 87 87
73 77 78 80 82 85 88 92
47 51 52 55 57 59 64
7 11 12 9 12 15 17
50 54 55 52 54 51
35 39 36 38 41 44 44
89 93 91 92 94 98
31 35 32 33 35 36 41
60 64 64 67 68
18 22 25 25 23
48 52 55 55 55
39 43 43 46 50
17 21 23 26 29 29 32 37
33 37 40 44 47
23 27 31 33 35 34
64 68 72 73 74 74
20 24 25 29 32 36
46 50 53 57 60 62 65 70
60 64 67 74 77 79
51 55 56 63 64 65 68 65
14 18 23 26 27 30 32 32
40 44 50 53 55 58 59 63
30 34 36 37 38 44 51
43 50 53 55 56 58
63 68 69 70 69
63 69 70 72 72
34 40 41 43 46 47 49 53
40 45 47 49 51 57
6 13 15 18 15 17 19
4 10 11 9 10 11 8
27 34 37 40 42 41 43 43
76 82 85 83 86 90
22 27 26 27 34
47 53 53 55 58
52 59 59 61 63 65 68 66
17 23 26 27 30 30 31 31
16 23 26 29 29 32 36
52 57 60 60 63 66 73
23 29 30 34 36
4 11 13 17 14
20 25 26 30 32 34 34
62 69 73 76 77 81
34 41 44 48 50 55
47 53 55 61 63
40 45 48 51 57 60 61 59
68 75 81 83 86 87 90 90
68 74 77 82 83 86 90
49 54 55 61 62 64 65 71
60 57 56 54 53 50 51
97 94 93 92 90 88 86 86
67 64 62 61 57
74 72 71 68 65 59
97 94 95 92 91 90 89
72 70 68 67 66 68 69
76 73 70 67 66 63 64 64
30 29 26 25 28 25 22 18
77 76 74 75 69
88 85 82 82 80
73 72 69 67 64 61 61 62
61 60 58 58 55 55
47 46 43 43 42 41 37
16 15 13 12 12 10 3
26 25 23 19 16
71 68 66 62 60 59 56 57
55 52 50 46 45 42 41 41
96 93 92 88 87 86 82
87 84 80 77 74 73 68
42 39 36 33 32 25 23
93 92 91 88 86 80 79 81
87 86 85 84 77 77
84 83 80 79 74 73 70 66
94 91 90 83 76
8 9 8 5 2
15 17 16 15 13 10 13
75 78 77 75 74 73 73
50 51 49 47 45 41
60 63 61 58 51
8 10 9 10 9 8 5 3
51 54 52 49 52 50 48 50
46 49 52 50 48 48
27 30 28 30 28 26 22
53 54 56 55 54 51 44
52 55 52 52 49 46 44 43
76 79 78 78 80
59 60 58 57 54 53 53 53
28 30 29 27 27 23
22 23 20 20 17 14 9
53 56 55 53 49 47 45 43
67 70 66 63 65
84 87 85 81 78 76 76
47 48 47 43 42 38
27 28 25 21 20 15
75 77 72 70 69
19 20 18 17 14 9 7 10
53 55 48 47 44 44
94 95 89 87 86 85 83 79
93 95 89 88 86 81
28 28 27 26 23
21 21 18 17 16 19
68 68 66 63 62 60 57 57
70 70 68 65 61
21 21 20 19 17 15 13 6
33 33 31 30 32 31 28
32 32 29 31 28 25 28
20 20 18 15 12 9 10 10
25 25 22 24 22 18
92 92 95 93 86
12 12 11 9 6 4 4 3
45 45 43 40 37 37 40
4 4 3 3 3
8 8 7 7 6 2
14 14 12 10 9 7 7 1
18 18 16 14 11 9 5 3
31 31 27 26 23 20 21
31 31 29 26 22 21 21
48 48 46 45 43 42 38 34
93 93 90 88 86 85 81 74
30 30 27 22 20
92 92 87 85 88
77 77 75 74 71 69 62 62
25 25 23 20 17 16 10 6
82 82 76 75 74 67
20 16 14 12 10 8 7 6
50 46 44 42 39 41
78 74 71 68 68
54 50 47 45 42 41 37
99 95 92 91 89 82
74 70 71 70 68 65
55 51 50 52 49 52
72 68 66 67 65 65
33 29 30 27 24 22 21 17
71 67 64 67 61
51 47 44 42 42 39
63 59 59 56 53 55
81 77 75 73 73 71 71
22 18 18 15 13 9
80 76 76 73 66
54 50 46 43 40
87 83 82 78 75 73 71 74
14 10 9 5 5
37 33 29 26 25 22 20 16
94 90 88 86 85 81 76
45 41 39 32 30
83 79 78 73 74
94 90 89 88 83 83
46 42 39 36 34 27 26 22
22 18 13 10 5
44 37 34 31 30
51 45 44 42 41 44
30 24 21 20 19 17 15 15
59 53 50 47 43
30 25 24 23 18
52 47 49 46 43 41 40
36 31 28 29 26 23 20 21
13 7 10 8 7 4 4
82 75 74 73 71 68 69 65
77 70 68 67 68 67 60
17 12 10 8 7 6 6 3
83 76 73 72 71 71 72
84 78 77 76 75 75 75
54 49 48 47 45 45 41
90 84 83 81 78 78 72
63 58 54 51 50 47 45
39 33 29 27 28
83 78 74 71 71
74 68 65 63 59 56 52
41 35 32 30 26 19
42 35 34 32 25 23 20
45 40 39 38 36 35 29 31
62 55 52 51 49 48 43 43
61 56 55 49 47 45 41
58 51 49 47 41 38 32
57 56 54 54 53 50 53
62 61 64 61 63 64 68
43 38 38 35 32 30 24
76 80 84 87 89 90 92 92
56 60 62 69 72
55 49 48 51 50 53
77 73 72 69 65
35 32 33 35 37 41 46
92 89 86 82 81 84
85 81 83 82 79 77 75 75
59 56 53 50 47 47 44 41
46 50 52 54 53 54 54
76 75 78 81 81 82 82
85 78 71 70 68
51 48 49 51 58 59 57
31 33 36 33 34 38
51 47 44 40 37 36 31
61 60 65 66 69 73
10 10 11 12 13 17
1 7 8 9 15 21
70 71 73 74 75 78 79 83
32 35 33 34 35 38
35 40 41 38 40 42 49
51 50 47 45 42 41 34
52 52 49 50 49
21 20 18 15 14 12 11
37 39 42 43 44 46 49 52
73 76 78 81 82 83 86 88
17 19 20 22 24
90 88 86 84 81 80 77
76 75 74 71 68 66 63 62
42 41 39 38 37 36 33 30
96 93 91 90 87
18 20 23 24 25 28
46 49 51 52 55
48 45 42 41 40 39
71 69 66 64 61
25 22 19 18 17
43 46 49 52 55 58 60
48 46 43 42 40 39 38 35
68 69 72 73 74
88 89 90 93 95
68 71 72 73 76 78 80 82
87 89 91 93 94 95
93 92 91 90 88 86 83 80
43 41 39 37 34 31
98 95 94 92 89 86
92 91 90 89 86 84 83
84 82 81 79 76
40 39 38 35 32 31 29
79 77 75 72 70 69
33 32 31 29 26 24 22 19
76 73 72 71 68 67
79 81 82 83 84 87
70 68 65 64 63 60
58 55 52 51 49 46
17 18 21 22 23
73 74 75 76 79
97 96 93 90 89 86 83 81
20 21 24 25 26 27
51 54 56 59 62 65
66 69 71 72 73
24 22 21 18 16
52 51 50 48 45 43 42 41
64 61 59 56 54
45 43 41 40 37
92 89 87 85 82 81 78 75
34 36 39 41 44 46 48 49
65 66 69 71 74 76
84 85 88 91 93 96
43 42 41 40 39
57 58 60 63 66 68 69
35 36 38 41 42 43 45 46
54 57 58 60 63
76 79 82 85 86 89 90
53 54 56 57 60
89 86 83 82 79
97 94 91 90 88 85 84 81
64 65 66 68 69 70
26 25 22 19 16 14 12
49 46 44 43 42 40
25 23 22 19 17
95 94 91 88 87 86 83 82
15 18 20 22 24 25 26
13 11 8 5 4 3
14 12 11 8 7 4 3
40 38 36 35 33 30 27
30 28 25 22 21 18 17
22 23 25 26 29 31 33 34
96 93 91 88 87 84
89 86 84 81 79 77
61 59 57 54 53 50 48
84 83 82 81 78 75
58 56 54 51 49 48 46 45
87 84 83 82 81 80 79 78
27 26 24 23 21 18
13 15 17 20 21 24 25 28
29 30 33 34 37 40
65 64 62 61 60
46 45 43 42 39 37
62 64 66 69 72 74
3 5 8 10 13
74 77 80 81 83 84 87
82 83 86 87 90 92 94
80 78 75 72 70 69 67
17 14 13 11 8 6
39 38 37 35 34 31 30 27
65 68 69 71 72
27 24 23 22 20 17 16
8 9 10 13 15 18
89 87 86 84 83
79 76 75 74 71 69 66 63
20 18 15 13 12 11 10 9
11 12 14 15 17 20 22
99 98 96 93 90
29 30 32 33 35 37
71 73 76 79 82 83 84
63 62 60 57 56
84 82 79 77 74 73 70
61 62 64 67 68 71 74
36 33 31 29 26
78 75 73 72 70
63 61 58 56 55 52 49 48
26 27 28 30 32 35
56 54 53 51 49
63 61 59 56 55
75 76 78 79 82 84 86 89
56 54 53 50 47 46 44
27 26 23 22 21 20 17 15
79 81 84 86 89 92
88 85 82 79 78 77 76 74
92 89 87 84 83
98 95 93 90 89 88
19 16 14 11 8 5
67 69 70 73 76
13 16 17 20 21 23 26 27
94 93 92 91 90
40 38 36 34 32
6 7 9 11 13 15 16
52 53 54 56 57 58 60 62
46 45 43 41 40 37 36
66 64 61 59 58
15 18 19 21 23 25 26 28
57 58 61 62 64 65 68 71
79 80 83 85 87 89 90
55 56 59 60 61 63 65
40 38 37 34 31 29 28 26
6 9 12 14 15 17 20
23 22 19 17 15
82 83 84 85 86 88 90
48 46 44 41 38 36 34
55 56 58 60 62 65
82 84 87 88 91 93 95
5 7 8 9 10 11 13 15
43 41 39 37 36 35
17 19 20 21 24
42 45 48 50 53 54 55
57 56 55 53 50 47
46 45 44 43 42
18 15 13 12 10 9
28 26 25 23 22 20 19 18
17 14 13 12 11 8 7 6
91 94 96 97 99
57 54 53 50 48 46 44
54 52 49 48 46
22 20 19 18 16 15 13 11
49 48 45 42 41
59 61 64 67 70 73 75 77
27 25 23 20 18
26 27 28 30 31 34
37 38 40 42 44 47 48
91 88 86 85 84 82 80
35 34 33 30 27
5 8 11 12 13 14 16 19
35 33 32 31 30 29
37 36 35 34 31 29 26
16 14 13 10 8
17 19 21 22 23 24 25
54 56 57 58 60 62 63 66
8 10 12 14 17
16 14 11 8 5
48 45 42 39 37 36 33 31
8 11 14 17 20 22 25 26
91 89 88 87 85 82
26 24 22 21 20 17 16
44 41 38 36 33 30 27 24
6 8 11 14 16 19
75 77 78 81 82 85 88 91
63 65 67 68 69 72 73
95 93 92 91 88
70 68 66 65 64 63 61 60
83 84 85 88 91 94
57 56 53 50 47 44
37 40 43 45 47 48 49
81 82 83 85 87 90
73 71 69 67 66 64 63 62
78 81 84 85 86 87
89 86 85 82 80 79
58 59 61 62 63 66 67 70
14 13 12 10 8
99 97 96 94 93 91 90 87
62 60 59 58 56 55
79 80 83 85 86 88 91 93
73 72 70 67 66 65 64
11 10 9 8 7
25 28 30 32 33
56 58 61 63 66 68 69
56 54 51 48 46 44 42 40
73 76 79 80 82 83
79 81 84 87 90
27 28 31 34 36 39
54 56 59 62 65 68 71 72
37 40 43 45 48
70 73 75 77 78 80 83
84 85 88 90 91 92
18 15 13 10 7 5 4 2
92 90 88 85 83
43 41 38 36 34 31 29 28
32 29 27 25 22 19
24 25 26 28 31 34
3 6 9 12 13 16 19 20
47 50 53 55 56 58 59
36 38 40 41 44 47
72 74 76 78 79 80 83
13 16 19 21 23 24 26
54 55 57 58 59 62 63 64
29 32 33 35 38 41 44
82 80 79 76 75
60 61 64 67 70
38 35 33 31 29 28 25 23
87 90 93 94 95 97
56 58 60 63 66
49 51 54 57 59 62 65
56 54 51 50 48 45
74 73 72 69 67 65 62 61
39 41 44 46 49 52
38 35 32 29 26
39 37 34 32 31 29 26 24
37 35 33 30 29
17 20 22 24 25
13 14 16 18 20 23 26
72 73 74 75 78
95 94 91 89 87 84 82
60 62 65 66 68
58 60 62 64 65
93 91 90 88 87 86 83 80
38 41 44 46 48 50 51 54
57 56 53 51 48 46 45
24 26 27 28 31 34
94 92 91 88 85 82 79 78
96 93 90 88 86 85 84 81
17 19 22 25 26 29 32
69 68 66 63 62 59 57
15 16 17 18 20 22 25
41 44 45 48 51 53 56
37 40 42 44 47 50 52 53
49 48 46 43 41
6 9 12 13 14 16 17 18
51 53 55 58 59 60 63 66
58 61 62 63 66 68 69 71
76 75 74 71 68 66
1 4 6 7 8 9
48 51 52 53 54 57
35 32 29 28 25 23 21
16 15 12 11 9 7 4
39 42 44 46 48
51 52 55 56 58 60 62 65
75 74 71 69 66
73 71 68 65 62 61 59 57
47 46 45 43 41 38 37
69 72 75 76 79 80
27 29 30 32 35 37
96 93 91 88 85
62 60 58 57 55
54 55 56 58 60 61 62
93 92 91 90 87 86 84
64 65 68 70 72 75
21 23 26 29 31 34
23 20 18 17 16
69 68 65 63 60 57 55
65 67 68 70 73 74
20 21 22 24 27 30 32
55 57 60 61 63 65 66
89 91 92 94 97 98
80 82 83 84 87 90 93 96
88 89 90 92 95
57 59 61 62 64 66 67
42 41 38 36 33 32 29
77 76 75 74 72 70 68 67
24 21 18 17 15
91 90 88 87 85
6 7 9 10 11 13 15 16
97 94 91 88 87 86
32 31 29 28 27
21 20 19 16 13 10 9
41 44 47 50 52 53 56
65 63 61 58 55 53 50 48
60 57 55 52 49 47 45 44
91 90 87 86 85 84 82
54 55 58 61 62 63 66 69
50 51 52 55 56 59 62
46 49 51 52 55 57
48 46 45 42 39
56 54 51 49 47 46 44 41
70 68 65 64 61 58 56 54
50 51 54 57 59
20 21 22 24 25
53 55 58 61 64 67 68
5 7 9 11 13
78 77 74 71 70
15 17 20 23 25 26 29 31
90 88 86 83 81
36 35 32 31 28
10 9 7 5 3 2
43 41 38 36 33
4 6 7 10 13 15
62 60 58 56 53 51 50
20 17 15 12 9 7 4
43 46 47 50 52
19 17 15 12 10 9 8
50 47 44 42 39 38 37
60 59 56 53 52 49 48
45 43 41 39 36 33 30
84 82 81 78 77 75
57 59 62 63 65 67 70
43 46 48 51 53 55
73 72 71 68 67 64 61 58
23 26 29 30 33 36 37
52 49 47 44 43 41
60 57 55 53 52
50 52 53 56 58 60
75 74 73 72 69
77 75 72 69 66 64 63
11 13 16 19 22 25
67 64 61 59 58 56 55 53
78 77 74 73 71 69 67 64
70 67 65 63 62 59
17 16 13 11 9 6 4 1
5 7 8 9 11 14 15
62 61 60 59 56 55
15 12 10 9 7
22 24 26 27 30 33 35
82 84 86 87 89
36 37 40 43 44 45 48
34 33 32 30 29 27 26 25
29 30 33 34 35 38 40
84 86 88 89 91 92 94 96
67 64 63 60 57 56 53
62 64 66 69 70 71
25 26 29 31 33 34
40 37 36 33 30 29 26
68 66 65 63 62 59 57 55
53 55 57 59 60
42 45 47 48 51 53 55
65 66 67 68 69
36 34 31 29 28 25 24
75 78 81 83 84 85
63 60 59 57 54 53 50 49
13 10 9 7 5 4 2
35 38 40 41 43 46 48
19 21 22 25 28 29 32
67 65 63 62 60
45 48 51 52 54
59 61 63 64 65 68 69
9 10 11 12 14 16 19 20
85 86 87 88 90 92 95 98
10 9 7 5 4
9 7 5 2 1
1 2 3 6 9 12 13 16
4 7 8 11 13 15 17 20
74 76 77 80 82 85 87 90
15 17 18 21 22 24
45 48 50 51 54 57
90 92 94 97 98
49 46 43 42 41 38 37 34
21 18 16 13 12 10 7 6
9 11 14 16 17 19 20 22
40 39 36 33 31 30 29
21 22 23 24 25
81 79 76 74 73 70 69 67
16 14 13 12 11 10 9
76 79 80 81 84 85 88
90 88 87 85 84 83 80
99 96 94 92 90 87 84
21 24 25 27 30
67 69 71 74 77 79
54 56 57 58 59 61 62 64
60 63 66 67 70
77 79 81 83 84 86 88
65 62 59 56 55 53 52 51
57 58 59 61 62 65 67
64 62 60 59 56 55
12 14 16 17 19 20
64 66 68 69 71 73
12 11 10 9 8 7 6
68 65 64 63 61
24 21 20 17 16 13 10 7
54 53 51 50 48
99 96 93 91 90 87 84
56 57 60 63 66 69 71
78 77 76 73 71
58 56 53 51 48 47
12 13 16 17 20 22
49 52 54 57 60
72 74 76 78 79 81
29 28 25 23 21 19
29 28 26 25 24 23 20
62 65 68 70 71 74 75 78
63 61 59 57 54 52
22 23 26 29 31 33 34 37
41 44 45 48 49 50 52
26 24 23 21 18
18 21 22 24 27 30 33 36
8 11 13 15 16 19
31 34 35 38 40 42 44 45
37 34 33 31 29 27
81 79 76 73 71 69 68
70 72 73 74 77 80
88 89 92 94 96
13 15 18 19 21 22 25 26
63 64 65 67 70 72
45 42 39 37 35 33 31 30
42 45 47 49 51 52
24 25 26 29 31 34
55 52 49 47 46 44 43 40
87 86 84 82 81
33 31 29 26 23 21
45 42 39 38 37
79 77 75 74 71 70 68
41 42 43 45 48
59 61 64 66 68 69 72 73
78 76 74 71 69 68
76 75 72 70 67 66
81 84 86 88 91 94 95
11 10 7 5 4 2
84 82 79 78 77 75 72 71
26 25 22 20 17 15
28 29 31 32 35 36
29 26 23 21 19 18 16
17 18 20 23 26 28 30 31
12 10 8 5 2 1
80 79 78 76 73 71 70
61 64 65 66 69 71 73
84 86 89 92 94 95 97 99
76 77 78 80 81 83
76 73 71 68 66
81 83 84 85 87
59 60 62 64 66 67 70 73
29 31 34 37 38 39
71 73 74 77 79 81 82
13 16 19 20 23 24 25 28
15 14 12 10 7 6 5 3
41 43 45 47 50 53 55 56
13 15 16 19 22
73 76 77 79 82 84 87
31 32 35 36 38 40
31 28 26 24 23 21
48 46 43 42 41 38 35 32
27 26 24 23 22 20 17
58 55 53 52 50 49 48 47
2 5 6 9 12 15 18
37 38 40 41 44 45 48 50
53 50 49 46 45
15 14 11 9 8 7 6 4
9 8 7 6 4 2
32 33 34 36 39 40
85 82 79 78 76 73 70 67
52 55 56 58 60 61
59 56 55 52 51
88 89 90 92 94
19 18 17 14 13
42 40 37 35 32
34 35 38 39 42 44 45
47 49 51 54 56 58 60 62
38 37 35 33 32 30
48 45 42 40 37 36 35 33
14 15 18 21 23 26
76 75 72 69 67 65 62 59
21 24 26 28 31 32
50 53 56 57 58 61
29 28 26 25 22 19 16 15
77 79 81 84 86 87
20 18 17 15 13 10 9 6
64 65 67 68 70
20 19 17 16 14
78 80 81 84 86
87 88 90 92 93
32 34 37 39 41 43 45 48
95 92 90 87 86
76 74 72 71 68
77 75 74 71 69 68
67 69 72 73 76 79 80 82
92 90 88 85 84 83 81 78
40 37 35 33 30
59 58 56 53 51
45 43 41 39 38
61 64 67 68 70
30 28 25 24 21 19 18 17
76 78 80 83 86
85 88 89 90 91 92
43 42 40 37 35 33 31 29
69 71 74 75 77 80
53 56 59 61 63 65 67 70
48 45 43 41 38 37 34
+115
View File
@@ -0,0 +1,115 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
// "slices"
"strconv"
"strings"
)
func rmIndex(s []int, i int) []int {
result := make([]int, 0)
result = append(result, s[:i]...)
result = append(result, s[i+1:]...)
return result
}
func isSorted(s []int) bool {
n := len(s)
asc := true
desc := true
for i := 1; i < n; i++ {
if s[i-1] < s[i] {
desc = false
}
if s[i-1] > s[i] {
asc = false
}
}
if asc || desc {
return true
} else {
return false
}
}
func isSafe(r []int) bool {
if isSorted(r) {
for i := range r {
if i < len(r)-1 {
if math.Abs(float64(r[i]-r[i+1])) < 1 || math.Abs(float64(r[i]-r[i+1])) > 3 {
return false
}
}
}
return true
} else {
return false
}
}
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
reports := [][]int{}
for scanner.Scan() {
line := scanner.Text()
parts := strings.Fields(line)
levels := []int{}
for i := range parts {
level,_ := strconv.Atoi(parts[i])
levels = append(levels, level)
}
reports = append(reports, levels)
}
safeCount := 0
dampSafeCount := 0
for i := range reports {
if isSafe(reports[i]) {
safeCount++
} else {
for j := range reports[i] {
dampenedReport := rmIndex(reports[i], j)
if isSafe(dampenedReport) {
dampSafeCount++
break
}
}
}
}
fmt.Println("Safe Reports: ", safeCount)
fmt.Println("Dampened Safe Reports: ", dampSafeCount)
fmt.Println("Total Safe Reports: ", safeCount+dampSafeCount)
// sorted := 0
// unsorted := 0
// sortedUnsafe := 0
// for i := range reports {
// if ! isSorted(reports[i]) {
// unsorted++
// continue
// } else {
// sorted++
// for j := range reports[i] {
// if j < len(reports[i])-1 {
// if math.Abs(float64(reports[i][j]-reports[i][j+1])) < 1 || math.Abs(float64(reports[i][j]-reports[i][j+1])) > 3 {
// fmt.Println(reports[i])
// sortedUnsafe++
// break
// }
// }
// }
// }
// }
// fmt.Println(len(reports))
// fmt.Println("sorted lines: ", sorted)
// fmt.Println("unsorted lines: ", unsorted)
// fmt.Println("sortedUnsafe lines: ", sortedUnsafe)
// fmt.Println("safeCount math : ", len(reports) - unsorted - sortedUnsafe)
}
+50
View File
@@ -0,0 +1,50 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
"slices"
"strconv"
"strings"
)
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
fmt.Printf("Error opening file: %v\n", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
report := [][]int{}
i := 0
safeCount := 0
safe := true
for scanner.Scan() {
safe = true
line := scanner.Text()
parts := strings.Fields(line)
for j := range parts {
level, _ := strconv.Atoi(parts[j])
report[i] = append(report[i], level)
}
if slices.IsSorted(report[i]) {
for j := range report[i] {
if j < len(report[i]) {
if 1 >= math.Abs(float64(report[i][j]-report[i][j+1])) && math.Abs(float64(report[i][j]-report[i][j+1])) > 3 {
safe = false
}
}
}
} else {
safe = false
}
if safe {
safeCount = safeCount + 1
}
}
}
+6
View File
@@ -0,0 +1,6 @@
select(){,(where()+-mul(514,727);:]]what():^*from(764,547) mul(550,305)$^^%>select(587,376)mul(94,564)select()when(633,175)<where()mul(260,379)mul(790,810)&!$%mul(557,683) why(){/mul(220,10)!+{+mul(654,746){who()what() !%mul(89,191)who()select()*#&>[[mul(302,490)$-}&**+mul(335,535)@select()>select()mul(241,166)when(800,629)mul(758,530)',^ &!~%/#mul(938,70)?&!from();mul(412,287)}/mul(230,620)(~select()what()select()'@mul(410,577)$mul(720,516)-mul(373,78)when()!^:@{)mul(793,973)who()when()mul(85,246)>what()}[#[@!^/mul(396,22)@when()-;:':>}mul(515,670)<[mul(38,415)?~<?mul(200,147):mul(328,235)*<what() (] ::what()mul(571,33)mul(679,122)>select()why()^when()*#+($do()']select()>:^/when()^mul(440,923)<what():mul(971,274)(mul(833,181))don't()why();{#mul(468,401)$+?mul(446,956)where()mul(391,995)who(813,746),^who()%how()^when()mul(284,629);[why()mul(922,806)%}mul(183,352)where() [{,why(475,275)mul(547,62)$mul(753,602)*!%where()-mul(956,732)$;what()<;'{:*mul(481,556)from()*{select():what()'#mul(905,420)what()mul(327,771), who()}mul(45,757)mul(366,653)where(459,755))don't();when()mul(807,855)where()$)>@mul(48,816)mul(370,665)@*>who()^,when()mul(155,426) mul(132,914)^%select()&when()/from()(+}mul(296,176)mul(361,479)%{;!,'who()where():mul(506,495)#who()&%< ^mul(481,87))&!;mul(541,563)%don't(){}'-),from()$mul(495,427)^when()mul(640,499)select()}:] )%+()mul(967,918)?when()select()<{/who()what()mul(505,225)(mul(90,482)>!from()when()#do()mul(620,841):who()!mul(719,850)where()-)mul(931,185)?;select()]@,why()%]mul(39,103)mul(687,103)$%];how(337,314)[}$-when()mul(282,494):;!where(188,779);who()mul(342,554)<^who()(why()where()who(345,491)%mul(407,74)why()&}'%'mul(324,781)mul(90,925):from()mul(828,16)mul(438,549){what()>$why()*what(35,607)mulwho()mul(91,548)>,what()select()]&how()@mul(384,93!select(),where()$mul(835,662)@{don't():#<^/-+mul(489,462)>>where(){why()where()---when()mul(53,461)/~?mul(273,777)mul(119,879)+@'when()-mul(585,949)?['when()from(946,632)mul(22,105)>-:how())from();mul(439,876)?mulwho()@who()when()<@{-mul(111,687)$&mul(432,628)%*,{when()mul(287,508)'-select()}don't()/#~-@from()[:#mul(111,655)%: &;mul(518,391)don't()<from()%-~-!@mul(301,138)(,how()mul(654,521)!*when()--({who()how()don't() ~where()!~mul(910,877)?+select()+-[#&do()*< +-what()&how()%$mul(123,641)*?&mul(488,741)<}@@&?what()how()what())mul(301,649);why()%mul(259,148)$~')&[{mul(83,94)~select()~^when()mul(232,572)mul(889,281)why()%*#$}<[mul(256,607)}({mul(382,953)what()how()why() who()from()!?%mul(433,147)+>&mul(197,749)@who()*mul(935,21)+> who()why()mul(299,881)who()]@+%/from()[?do();{+[why()$select()#mul(264,731)]'select()what();+who()mul(713,161)where(931,649))mul(360,529)}where()!;]how()<mul;$-:]]how()#where()select()when()mul(971,836)when():[how(){mul(567,429)!}{{',mul(522,696),why(){mul(833;#-&#,select()~mul(80,121)+*,#how()select()${>how()mul(619,728)how()<%}+}mul(420,324);{!from();mul;)>mul(144,181)who()}?~where():who()${ mul(261,691),why() /+mul(189,450)
+when()%^]]/when()~@mul(533,22)mul(231,586)mul(107,724)!@mul(504who()@}when(291,528)mul(691,859)/}#mul(726,544)from()[>>what()^<mul(316,707)@&why(),what()mul(798,459) why()~)]mul(612,148)[??when()]*~mul(634,978)mul(477,947)<?(&!;what(724,289)@~^do()who()mul(828,259)mul(595,267)who(671,135)}why()&how()mul(351,552)when()how()^>?^from(762,977)mul(67,280)(who()^mul(586,844)}how()<from()mul(521,525)'select()mul(379,96), mul(478,481)where(465,218)mul-&*: ~mul(123,281)when()mul(249,626) <}mul(190,620)mul(21,142):from(278,629)}how(997,873)when()'from()#mul(117,186)^:]when(128,617)mul(940,708);mul(960,867);[,~when()when() mul(135,71)where(972,23)mul(79,533)how()* )%<&do()@>how()+where(),mul(886,320)#from(691,802)mul(376,296)'why()[@}how()#why(530,714)?>mul(791,363)?what()$${@why()>+mul(133,626))why()&}what(){%(mul(474,459)what()where()(^mul(311,372)mul(243,118)where()@mul(302,760):{who()-'{+mul(145,293)}why();how());$]mul(652,761%? ;]:@mul(259,51)@<mul(369,322 +#!mul(99,991):from()/}mul(137,230)why()}^%^{}select()where()mul(226,287)mul(590,394)[>>'mul(474,995){don't():}*mul(309,511)?select();(mul(553,164)]how(){when()mul(556,560/~when(464,361),^<#[/&do()when()&who()<mul(618,347)]/what()&mul(210,454)@,'^/%who()mul(297,766)who()&:{mul(961,326))&:#')what(663,984)mul(340,326)mul(329,543)%^#/{!mul(28,451)}@@mul(428,233)^%<-how()mul(710,863)[mul(944,973)[where()~[]where()'%~why()don't()!,@#%mul(582,87)$[[@ mul(569,58),]mul(746,840)[(mul(74,146)'where()(#+;mul(517,818)mul?*[->*mul(22,727)from()):who()when()}mul(367,34/when()where()mul(226,816)mul(421,33'(,(#, <who())what()mul(247,12)+when(199,246)who()what(912,935)~?select()how()&how()mul(620,264))how(726,381)/!mul(586,607)#when()[mul(684,722)&%-from()mul(11,63)&where()<select()^)<%select(127,191)mul(662,331)}% mul(631,2)~]mul(987,288)mul(261,47)]{when()>?who()do()%;+-<what()#*+mul@]@?[^mul(650,139)<who()[#don't())}-from()?:who()[mul(561,710){~+how()don't()mul(788,270)mul(151,849)+{;%[#~mul(531,530)how()>:-mul(99,868)#{[why()who(504,690)?mul(119,337)+,mul(250,122))%#%mul(708,536)>select();from()mul(480,332)}&what(423,278)mul(891,459)}mul(852,128)mul(418,844)~select()[{when()(mul(69,312);!)where(419,852)<:*@-don't()what()!$-;{mul(91,636)-when()select()~from()(&mul(894,19)how()]@,[do()#,what()'@mul(116,57)why()from(),@-?mul(651,74)]what(704,54)how()<$mul(169,494) )from()$~-mul(44,491)$mul(29,368)'why()+-+mul(961,385)>who()select(137,499)mul(586,30)$%when(765,538)?why()(mul(378,568)}select()[:[%?$from()don't();mul(375,803)#']/@/^}*where(184,703)mul(21,508)>;+,mul(921,355)};mul(594,553@<?when()what()%%when()*don't()-<,from(342,971))mul(983,69!!!mul(980,691)why()mul(200,735)select(435,520){?mul(489,554?~!mul(212,991)/#<$!<*mul(751,323)mul(102,317)when()},^;why()mul(51,80)}+what()$~[mul(454,897)'/);(>%])mul(793,439)]from(599,582)mul(982,538)}//^;how()~)'from()don't()~&who()<+#+mul(386,116)>/~who()mul(373,106)+#!do()(&-select(),+~;~mul(59,223)mul(233,653)mul(547,404)?where()~%don't()}}select() from()@] from()mul(150,196) ]}(>mul(514,824)where()+mul(332,418)
/>'^')what()mul(590,783)?$when()mul(55,422)from()~]select(198,113)from():}don't()mul(436,985)^:select()from()@//don't()/mul(675,976)$from(),!&]#*&don't()*[#how()~/*mul(172,297)<-{,select()};mul(866,305)$mul(938,509)+>mul(100,651)%where()how(223,719)/){!!;(mul(163,66)+''when()mul(217,127)^},(why()how()what()]who()mul(39,897)>/(mul(966,889)-]'}{,<mul(488,570)$@select(){do()~$@mul(878,77)why()-^mul(670,359)-]select()#{:}[mul(56,569);do()}}what()why()/what()[$mul(614,976)when()who()^'where()(mul(852,588)who(){how()}@when() $mul(532,868)}mul(603,823)#>+,!$$<mul(517,713)/&(select():where(910,84)[select()mul 'select(899,120)from()from()>why()from()mul(338,824)where()/&;mul(230,684)@'where(354,854)- )%when()mul(288,730){from()){}where()mul(124^}'(&don't()mul(688,399)from()++[how()why()mul(136,861who()!?#select()!]where()!do()&how()where()when()mul(968,380)'-$select()why()&:;mul(906>select()^~who())>:*mul(433,704)&why()#who()%@;what()>;mul(848,947) from(497,742)?select()~mul(590,692)why()* ,(<<)where()*mul(102,487)when()]where()>*when()!mul(406,710)mul(962,153)who()who()what()+&from()mul(419,854)$/mul(201,493)from()-)select()'^:[!;mul(779,883)why()why()}?why()(don't()what()]%~{mul(966,261)how()[when())^when()]mul(513,694)/*:when()select()who()'mul$?++~?:$mul(657,498)$ &why()mul(310,762)^+what()~,what()why()why()#}mul(320,448)%mul(886,159)(]what()?'@why():[mul(415@who()$what(){select()who())mul(912,558)select()<mul(614,536)don't()!%{mul(224,83)#why()who()where()+$mul(266,718)[where(437,374)?+who()};<+mul(939,819)'$mul(24,251))mul(101select()why(){how()when(),%mul(86,947)[<}^()%where(526,396)mul(694,25)^;do()what(); (how(307,882)mul(285,650)*%who()[#{what())/~mul(95,593)where()who(){/when()why()mul(931,886)&mul(110,763)}>where()%'why():mul(784,109)-&:-]mul(354,211):*#~mul(637,881),$from()mul(947,709)what():,'mul(284,267)&from()mul(259,860)/^],&(when()when()^mul@select() how()!mul(462,151)~,)where()mul(7,166)**what()<~<do()who()(how())why()}@[([mul(478,668)+!how()mul(118,569)^&;when()-@ mul(181,739^who(432,515)$mul(105,134)where()<from(880,223)who()select()%]mul(489{&>mul(137,598)^]~>mul(561,283)*@ ;select()mul(262,658)who()<,-what()/-why()mul'$;;-]<mul(7,931)?& ^+)where()mul(345,667)/^'mul(3,959)@%when()mul(522,907)~~ ]&%*how(106,70)mul(986,967)!where()when()mul(754,736)where(515,293)why()how()-:!mul(750,438)why()/~ mul[@'['>#why()>mul(510,757)$what()who()>mul(139,401)where()^#&/*mul(332,919)>?how()]when()/mul(218,127)[+mul(504,583)why()$>^mul(649,222)@?don't()from()&what())&'^mul(878,444),,mul(340,684)when()'why()when()?why()mul(852,617)mul(569,36)~(select():>~&/when()@do()<why(444,49)[#[?##^mul(298,203)([why()?,++:}mul(263,671),mul(197,758),';mul(893,114)who()^(,(#why()[*mul(917what()select()[where()from()&'@ [:don't()'+ ($]<where()*{mul(269,55)from()%!select()how()who()where()@mul(81,174)from())^who()mul(872,888&when()>why()from()>who()where()mul(93,146)(;why(863,117)mul(681,428);#mul)$from()how())?{] mul(793,537)where() @~?++?when()why()mul(163,958)select()}who()mul(540,501)$when()#who()/mul(331,537)[>~why()what(395,317)[)[mul(928,496):mul(127,943)$>mul(18,669)?&mul(443,860)when()!;;&select()*mul(624,669)[}:,*>]mul(941,338)?%where()((how();<~when()mul(483,529){)/'+'~$mul(254,159)when():when()'*!??%mul(731,125)when(670,595)]^^from()'?]mul(912,606) ):[^do()#{;?-mul(851,526)>'!'mul(689,174) >?{)how()/;what()mul(919,455)]mul(320,219){#+) {mul(267,831)((from()&:[-from()mul(84,102)mul(291,186)/+}*mulhow()?who()-*mul(973,390)
(~{$where()why(250,398)/how()&#!/usr/bin/perlwhy()-{{#^%>mul(772,422) 'how()}&)mul(184,89)$<how()what()%*~mul(197,267)*)[^mul(703,592)when(), ;why()select(151,652){{>what()mul(376,816)when(),@#mul(949,642)'/+select() [mul(399,146)[~who(){;~ mul(526,131)when()mul(787,620)@~+?from()@-mul(310,482)}:$?what() ,mul(360,720)/why()why()#)^mul(561,462)+@:-{who()mul(403,894)from(),}{(('?!mul(555,514)?-:#&]$-mul(18,725)??mul(901,195)how()mul(814,623)$;~)select()/mul(4,986)#,{-]{!*~mul(833,296)/?mul(496,21why():@/#[what();mul(162,231))>~do()select();+*^?}?mul(38,18)?*who()&why()/who(479,558)from()%,mul(225,613)mul(494,841)'who()%@+{>&~mul(586,498) select()*!/]};<mul(818,498)(}#@+mul(795,500)mul(285,406);;: ,mul(404,65)]] ;!when()+what()''mul(201,457how()%mul(489,759)!who():where()?mul(381,280when()mul(312,151)who()^-mul(236who();who();(&?&]&]mul(393,302)&>-; /what()where()mul(614,161){select()where()+!what()/-mul(927,228)mul(432,16)when()?&+'^mul(539,745)]^when()what()mul(970,413)+<&:don't()$%mul(533,997))-mul(574,681)mul(978,225)&![who()why()(>mul(453,460)why()*+how()~!why()where()*-mul(840,804)>+mul(570,880)/>how()'-~*;+mul(367,248)$@what()mul(303,242)when()?>!!!-what()>%mul(547,184);when(300,185),^mul(196,377)~<{,[@from()when()from()'mul(727,421)>mul(199,873)],select()-+<&where()mul(962,772):what()/[${how()<*where()mul(534,770)select()/how()>*mul(356,156)((%where()}~how()#who()mul(801,644)from()mul#select(458,914)how()where()~}(}what()mul(273,584)who()mul(692,224)(>what()where();%,-mul(779,81)<[~who()!mul(786,30)]':mul(328,225)/when()#])(>:?:don't())*/mul(914,292)why()mul(83,290)[~mul(257,792),;+]*mul(949,612)*{;[-:]$^]mul(813,824)]/mul(5,572)}+don't():)from()*[>+(#who(422,860)mul(243,781)<-mul#<*<#&{?/'mul(579,115)(:mul(861,206)?)<why()how()why()when()/&mul(919?''/?',mul(859,273) '/&~why()[who()]/mul(865,638)-<$(when(534,151)what()mul(756,102)''<% ]mul(521,726)how()*;*-~'~mul(830,632)><&{>;mul(331,573)mul,^->,~>?who():<mul(294,77)/,:/}},mul(477/who()what()@<}why()mul(113,420)?+,mul?why()(*+[>from()mul(463,386)['{*>],when()?mul(740,88)]<[where()from()-]mul(685,334)+how()}how()^mul(973,106)select()$+mul(867,634)do()@-?mul(535,483)how()$<mul(478,385))[#&mul$@/select()#$[}:#]mul(965,153)why(110,391))}how()mul(484,578)who()-<mul(847,771)/mul(921,939), ~when()%mul(981,816)$[how()$*who(578,752)>[mul(161,41)]where(),#,mul(129,507)don't()who()what()<how()mul(554,49)(^:mul(618,748)$%<:<> mul(214,987)[ *^*[&mul(870,285)when()how())(+)+who()^<mul(581,483)]mul(921,982:]*%how()<mul(434,655):+mul(242,610)mul(614,631)what())where()how()what(932,531)what()where()}why()%mul(494[<;what()% %how()+mul(357,150)who()?mul(949,239)mul(802,54)where()!where()*?+/mul(209,916)&&&select()mul(637,422)-,~why()?)where()^mul(502,914)(how(913,389)^how()what()what()@ from(382,173)where()mul(860,112)/don't()'['#when()mul(110,847-mul(828,62)mul(370,262)@[!][^#why()@mul(693,119)who()$what()$&mul(399,511)from()}-who()(when() *do(),&*(#}mul(395,383)why()how()>how()how()'why(990,834)<@from(535,913)mul(741,712)why()when()who()@>-*!mul(296,759)$@where()mul(585,923)where()who()/why()]}>mul(163,233) ;;what(771,674)when()mul(553,949)select()when()'mul(545,530)
( !>{!-*}mul(646,888)]-?<mul(908,145)mul(872,423)<why(523,766)$;what() &mul(724,993)]}from();>why()+mul(359,478)why()mul(186,893)]where()what()when() >select()mul(592,52)where()select()from()[select()from():~'/mul(164,308)what():>^)why()how()$&who()mul(377,499)why()((where()@~who(),mul(658,47)#how()+%from()'/select(287,448)]~mul(759,688)!<?%;}*mul(623,353)&#;~{mul(830,695)do()mul(755,160)-?{mul(138,691)mul(161,105)do())*&:who(592,695)![/mul(542,698)why()%/*do()[$from()~[mul(274,212)>@?]{(~mul(196,596)who()+mul(759,422)/@[#>where()mul)-how()>$&:$@},mul(861,458))mul(126,262)@;<how()(mul(986,49<)^[///[mul(615,656)-}): when()/mul(266,494)/)who()who()>what(){};:don't()#mul(695,332)>what(),why()#++%select(){mul(471,679)^select()/mul(387,568)when()%(]*how()>do()' ^]?mul(777,56)>where()(why()select(14,295)mul(874,481)!from(){;~how()@mul(22,505))~who())when():&mul(395,566)-(~what(231,98)$$;$mul(326,815)>from() select()^who()#mul(189,720)what(),from()don't()>%+/mul(418,532)-;):<when()[<%mul(561,959)/<*~/{mul(518,185)? ,select() <do()who()who()select()from():where()?when()mul(327,206)mul(501,728)',what(675,175):from();what()/{:don't()mul(219,962)when()'mul(7,809)/$;mul(768,798)mul(353,892)?from()! when()what()->don't())@:#<mul(899when()*;}^ &mul(506,552)mul(703,677):#}mul(13;when()don't()&/+><from()what()-{mul(801,431)(/mul(330,809)>!when():$[:<['mul(764,131)$:@&[from()%+~ mul(258,284)from(810,941)&how(232,473)mul(338,578);/select():mul(990,919)from()how()>[{!}mul(69,711),when()+do()}/[#who()*mul(907,255)?!}{]*mul(781,224)#select()<mul(400,377)mul(224,640)/@{why()mul(97,222)'~:select()mul(723,191)<~how()&->mul(755,122))<why()^]why()]mul(348,579)]where(758,732)mul(939,550)^]when()what()@*{don't()'+/:how()]}@@mul(21,125)mul(138,133)mul(482,114)where(),from(),*from()!/;[don't()why()what()how()mul(732,224)?!#?***!mul(823,749)%#/@*<what()mul(980,685)!;:/~} <$mul(51,373)$-!who()mul(523,713)!)~{%mul(16?;[who()!$how()&how()mul(461,976)#mul(108,138)when()@'} ;(;mul(194,793)~%' ?from()select()[when()mul(79,491$*#%:mul(914,754)$' where()$who(){why()mul(692,138)+;*}mul(853,262)why()$mul(15,398why()*>-:[',mul(863,596):how() who()%select()select()[what()do()+where()^+mul(722,58)^[,how()?#^ !:mul}&select()~{}mul(885,728)when()?mul(468,630)?where()from()select()>*~:don't()%#}$@-)mul(200,579)why() mul(10,435):)/;@{;mul(298,190)where()why()$ mul(9,631);where(7,826)@-don't():':;[,!@+mul(273,471)mul(325,690)mul(267,174)mul(339,952)}what()>)>@mul(307,862)do()why(335,510)]&>( mul(636,749)(-mul(592,773)!mul(2,50+'#mul(338,514)#;why()where()mul(127,711)@mul(146,911)mul(860,601)%select()mul(806,306)mul(410,847),:[mul(73,481)+don't()>}<what()mul(826,657<+ {*^? what()mul(172,949){'~+#mul(732,513)how()'/why()*+/#&)mul(11,422)+'%@+when()$why(383,170)how()mul(190,688)]!{select();who()what()mul(450,687)from()what()mul(171,95)how()how()where()mul(631,790)~how() @$why())[mul(893,598)mul(39,888)#([/what()!]*}mul(290,685)!#who()[$do()^+@what());{$mul(463,742):$mul(118,146)@mul(39,34)what() <,when()@@mul(489,439)mul(874,442)how()~where()^who()select()-don't()/:how();when():$)mul(975,618)why()mul(732,833)where()mul(17,484)
(>&)]mul(509,882)*/@~*<!&mul(813,280)::$+-*^mul(741,365)]()what()from(804,684)mul(734,644)*<]]%who()}[^don't()when()!;)mul(55,766+!select(797,794)@where()mul(595,285)why(807,706)/when(298,410)what()select()mul(439,186):mul(976,645)>where()-!mul)$do()where()?mul(308,113)/@?why()<where(35,826)&mul(127,972)^%<~??[!%;mul(781,845)/?#(select()mul(949,130)#{-#,mul(612,396)*{@@%'/mul(343,689)>where()>%mul(970,425)~[$@'[mul(83,136)+<%who()who()who()^~where()mul(960,152)when()mul(714,401)how()?]from()*!what(313,652)mul(455,389)select()why()<-[)%:(%mul(929,53[-@%~;%]where()why()mul(293,806)from(258,940)[mul(959,603)!@)why()?{{$mul(744,798) '{}&<&?,mul(389,91)#'select()@,who()/$<mul'who()where(634,260)^*$mul(625,376)@what()&mul(7,35)#)?!how(714,530)don't()from()who()>($-@,mul(792,652)how()mul&)!do())-}?~select()>mul(527,656)mul(220,657)who(453,708)mul&when()/when()+ how()how()%%@mul(62,191)'{%,mul(13,233)mul(780,237){from(817,212) when()mul(216,970)@what()}<: - ;mul(954,521)+mul(645,579)mul(695,53)%{},mul(927,488)$/$$what()&what()mul(815,350)](select(){;mul(650,656)&<:what(70,971)* mul(452,286)select()#&)when()+mul(438,390)>what()/mul(353,213) &from()~mul(920,652)~mul(971,287)don't()select()}/mul(4,595)where()-mul(332,353);>+mul(64,192)mul(33,846)}'where()(:mul(13,41)[@!^][(^$mul(728,587)what()>^&what()>who(73,62)why()where()mul(501,624)(%!mul(187,871),;>from()(, mul(563,884)]]/[who()mul(685,629){where()from()@@',who()why()<mul(741,377)'+{+'$+^/mul(69,647)!-mul(338,68)!why()mul(752,772)-'from()'what(){[&-mul(193,86)don't()from(899,805)how()what()+'+^mul(492,628)};from()*when()#?select()mul(20,602))-:where()mul(34,881),how()}mul(777,504){;mul(425,245):how()</:&}%mul(504,651)mul(193,8)+&who()+!^*{mul(247,144)}[#;when()where()mul(857,787); % (>;mul(57,598)mul(799,387)why()?mul(963,99)*-!''when()mul(606,12)who()]how(), mul(615,921)/what()from(858,351){how()#who()@mul(379,934)~/{mul(871,792)<[+&mul(206,542)mul(154,161)-when():why()[mul(663,226)>from()from()?#mul(320,293)>select()!@;from()where()<^~mul(865,92)mul(834,118)select()#>mul(36,886) why()[>,,))select()mul(777,447)what()};<>how()from()*mul(942,312)how()]mul(810,261)select()@+>)'){mul(356,987){mul(33,198)[select()from()where()({mul(752,594)$why()who()>,?^where()->mul(478,705)why();select()from()when();]/]from()mul(878,617)@who()<how()%;mul(951,929)<& ~mul(193,497) (mul(670,912)&from()*from(57,764)mul(872,457)]mul(411,192)@from(247,487)@*'select()mul(830,878)when()<?@!~why()mul(103,203)([- ;who(37,653)who()+{mul(574,907)$mul(288,478)'who()@select(453,494);-where()why()#mul(418,593)+^%>-who()[&&mul(554,90)#+:^do(), <{mul(978,459)/##[^ ]how(); mul(470,763)mul(342,6):&mul(192,104)from(220,224)[mul(309,253)$}mul(98,92)[mul(690,632)how()why()!>@mul(880,975)~/<what()}mul(233,433),>what()why()/*[mul(663,3)when()[@! )&,~^mul(965,150)#~},%^(]from()mul(503,640)::where()mul(146,66)&)~[mul(37,741)mul(714,547)/;
+63
View File
@@ -0,0 +1,63 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
// "strings"
)
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
panic(err)
}
result := 0
defer file.Close()
scanner := bufio.NewScanner(file)
r := regexp.MustCompile(`mul\([0-9]{1,3},[0-9]{1,3}\)|do\(\)|don't\(\)`)
numbers := regexp.MustCompile(`[0-9]{1,3}`)
enabled := true
for scanner.Scan() {
line := scanner.Text()
matches := r.FindAllString(line, -1)
fmt.Println(matches)
for i := range matches {
if matches[i] == "do()" {
fmt.Println("Do")
enabled = true
} else if matches[i] == "don't()" {
fmt.Println("Don't")
enabled = false
} else {
if enabled {
fmt.Println(matches[i], " enabled")
multipliers := numbers.FindAllString(matches[i], -1)
firstNumber, _ := strconv.Atoi(multipliers[0])
secondNumber, _ := strconv.Atoi(multipliers[1])
result = result + firstNumber * secondNumber
} else {
fmt.Println(matches[i], " disabled")
}
}
// multipliers := numbers.FindAllString(matches[i], -1)
//// fmt.Println(multipliers)
//// fmt.Printf("%T\n", multipliers)
//// fmt.Println(len(multipliers))
//// fmt.Println(multipliers[0])
// firstNumber, _ := strconv.Atoi(multipliers[0])
// secondNumber, _ := strconv.Atoi(multipliers[1])
// result = result + firstNumber * secondNumber
//// for j := range multipliers {
//// multipliersSplit := strings.Fields(multipliers[j])
//// multiplierInt1, _ := strconv.Atoi(multipliersSplit[0])
//// multiplierInt2, _ := strconv.Atoi(multipliersSplit[1])
//// result = result + multiplierInt1 * multiplierInt2
//// }
}
}
fmt.Println(result)
}
+10
View File
@@ -0,0 +1,10 @@
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX
+140
View File
@@ -0,0 +1,140 @@
MASAMXSXSSXSASXSMMXSSMXSAMSAMXSXXAMSXSASXXMASAMXMSMMSSXSASMXXAXMAMXMAMXXMASXXSXMSSXAMMSMMMSSSMASAMXSAMAXMSMXMMMXMASAMXSXSSMMMSMSXXMAMMXAMAMX
SAMXSSMMMAAMAMAAXAASAMMXAXMMAMXSMAMMAAAXXMAMXMAXMAAMXMAMASXMASMMSMMSAMMSAMXMASAMAMSSXMAAAAXMASXMASXMAMMMMAMXSMSASAAMSAMAAAASASXMXXMAXMAXSAMX
MAMMXAXAMMMMAMSMMMXMAMSSSMSSMMAXXAMMMMMMMAXSSSSMSMSMSMSMAMAAXMAAMXASAXMSAMMSMMAMXXAMASXSMSMSMSMSAMASAMAAMASXAASAMXSXMASASMMMASAMMMSMSXXMAXXM
SSMMSSSSSMXSAMAMMXSSXMXAAMAAAMMMSMSAMAMAASXXMAAASXXASAAXMASMMXMMMMASMSMSAMAAMXSXMMASAMMMAXAMAMAMASASASMXSASMMMMXSMMMSXMAMMSMXMASAAAXXAAMAMSA
AMAMAAAAAXAMXXASAAXAXXMXMMSXMMAASASXXAMXXMMXMMMMMAMAMSMSXAAXSSSXMAXMXAXMXMSMSAXAAXMMXXMMAMAMAMSSMMMSAXAXMXMXMXMAMMMAMAMSMAMAXSAXMMXXMXMSAAAS
MSAMMSMMSMMMSMXMMASMXMAAXAXASMMXSASASMXSASXMMXSAMMMAXAMSMMSMMAAAXSASMXXMSXMAMASMMMAMSSSMSSXMXMAMXAAMXMMMSMMMSAMXXAMMSMAAMASMMMXSSSSXSAXSMSMM
XXASAMAAXMXASMMMXAAMXASMMASAMAXXMAMXMAAMAMSAMASASXMXSASXXAXAMMMMMXMMMSXMAAMXMAXAASAMMMAAAMAMSMSMXMXSXMAAAMAAMSXMXSMMAXSXSASXAXSAMAAAMMXXAMAM
SSXMASMMSSMASAMXXSXSXXXXSAMXSSMMMXSAMMMMMSXSAMXXMASASMMMMMXSMMAAXAXAAAASXMMXMMSSMSASMSMMMSAMMAMAXSAMXSMSSSMSSXXSAXAXMMAAMMXXSSMAMMMMMXMMASAM
MAMXAMXAXAMXSAMXMMAMMAMMSXXAAAMXAXMAXSXMMAMXMXMASXMASMMMSMAMASXMMASMMSMMAMXXMXAAMXAXAXSMXMASMAMAMMASAXXMXAMXAMAMAMXMSSMSXMSMXAMSMASXMAMMAMAM
MASMMSMMSMSXXAMXMMAMAAAAXXMASMMSSSSSMMAXSAMASAXMXAMMMAASAMXMAMAAXXAMXAXSXMXMXMSSMMMMMMMMASAMMAMSMSAMXSXMMSXMXMMMSMMSASXAAMAMSSMMSXXASAXXSSMM
XAMXXAAAMXMAMMMMXMSSSXSSSMMXMAAXAAAAAMAMSAMXXXSXMAXXMSMSMSSMAMMMMXAXSMMMXMAMSAMXAXXAXAASASAMSXSAAMXSMSAAAMAMXXSAAAXMASMSMSAMXXAMXSSMMSMSXAAX
MSMMSMSAMXMSAMXMXXAAAAXAMXAXSMMXMMMMMMMMSMSMMSMMAMASAMASMAASMMSXMSXMMMAMSMSMSASXMMSXSAXMXSAMAXSMSMAXASXMMSAMMMASMMMMMMMMAXMMXMXMAAMMAXMMMSMM
AAAXAMMASXAXAMMMMMMSMMMAMXMXSMSSMMXXAAXXMAAMXXAMAMAMAMAMMSMMXAMAMMASXMAMAAXASAMXMAMXMMXXASMMXXSAMMSMXMASASASXAMMSAXXMAAMMSSMXXMMMSXMAMXSAMXA
MMSMAMMAAMMMAMAAAAXAAXXAMMMAMXAAAMXSSMSSMSMSMSAMXMASAMMSAMAMMXXXSSMMASXXMMMMMXMAMAXASAMMXMMMXMMAMAMMMSMMASAMXSXAXMXMSMSSMAAXMMXSAMXMASAMASMS
XSMMXMSXMAASAMSSSSSSMMSXXAMAMMXSMMMAAXAMXXXAMSAMASXSASAMXMAMAXSMMAMSMMXASXSSMXSXMMMMSMMMSMMSAMSXMASAMASMAMXMAMMMXXMXAAXAMSSMAAAMXMASASASAMAM
MAMAMMMMXMXAMXAXMMXMAXMMSASMMSMAMXAXSMXSAMMMXXAMXMASXMXSASXMMMAASAMAAXSXMAXAMXSXASXAXXAAAAASAXMXSXXMXASMMSMMMMAXXSAMMXXAMMAMXSXMXSAMXSXMXSMS
SMMXSAAASMXAXMAXMXSMMXAAAMXMAMSAMXSXMAAMASAMSSMMAMAMASXMMMXAAXMXMMMMMMMMMSMAAAMSAAAAMMMSSMMSSMXAMMXSMXMXMAAMXSSSMMAXASXSMSAMXMASAMMSMMMSMMXS
AXXMMMSMXASXMXSMSASAASMMXSAMMMSMSAMXMXMMAMAXAAXSAMXSAMXSASMSMSXSMSMMSMMAAXMSMAMMSAMSSXAMXAXSMMMXXXAMAMMASMXMXAXXAXXMASAMXXXSASAMASAMAAAXAMAM
MMXAMXMMMXSASAASMASMMXAMAMASXASXMASXMAXMSXSMSSMMASAMASAMXSAAAMAMAAAXAAMMSMMASXXXMXXAAMMMMAMXAAMMSMAXXAMAMSMSMMMXMMSMMMXMXMSXMMASAMAXSMMSXMAX
XSMSAAXMAMMAMXSAMXMMSSMMASXMAXMAMXXASASXMAXAMXAMAMASAMXMAMXMAMSMSSSMSSMAXMSASMMXAXMASXAMSMSSSMSAMMSMXXMXSAMXAASXSAMAAAAMAMSAXSAMASMMXAMXMSSS
AXAXMMMMSMMAMMMMMXMAXAXSASMMAMSAMSSMMMSAMAMAMMSMMSAMXMMMMSAMXXXAAAAMAAMXMAMAXAMSMSAAXXXXAAAAXAMXSAMAMXXSAMMSSMMMMASXMSASAXMSMMMSAMXXSAMXMAAX
MMXMXMAAAAMXXAAXXMMSMXMMASASAXMASXAAAXMXMXSAMAAXAAMSAAXAAAXSSMMMMMMMSSMAMXMAMMASAAMXMAXSMMMSMXSXMMSAXSXAMXMAXAXXMXMXMXASXXSAMAAMASMMMAMAMMSM
MAASXSXSXXMMSSMSAXAXMAXXXSXMASMMMAMSMMXAXXXMSSXSXMASMXSMSXMMXAXASXSXMAXXSAMXSXAMMMSSMXMMSAMMMMAAXAMXMXMSXMMMSMMMSMSMXMXMAXXASXMMAMMMSASASMAM
MSMSAMMMMMAXAAMMMMMSSSSSMMAMXMASXAXAAMSMSXXXAMXAMXMXXAAAAMMXMXSAMXAMAXAMAAMAMMMMXAAAMXMASXSAAXSXMXMAMAMAXMAMSAMXAAAAXSAMXMMXMMAMXSAASXSMMMAM
MMXMXMAAAMMASMMSMSXAAAXMAXAMSAMXSMSMSMAMMMXMASMMMMAAMXSMMAAAAMMMMXMAMMAXSASASASAMMSSMMMASMSMSMXXAAMAMAMMMMAXXASMMSMSMSAXAAMMXMXMAAMMSMMMMSAX
MXMXMSSSXSXAAXXXAXMMSMSSSMAMSAMXAXXXXMXSAAXMXMMMASMXSAAAXSSSSSSMSAXAXSAMMASMSASXSXAAASMASAMAXAMXXMSSSSSXSXMSSSMAAMXMASXXMSMAAMMMXXMXXAAAASMS
MASAXXXXASMSMSMMSMXMAAXAASXMXMASMMSMMMXMASXMMXXSAXMAMXMMMXXAAAXASMMSXMASMAMMMAMAXMXSMMMXMAMSMSMMSAMAAAAAAASAXASMMMAXXMAXXAMXAMASXSMXSSMSMXAA
XAMMMMSMXMAXAMXAAMAXMXMSMMXXXXAXAASAAAAAMMMSASMMMXSASAMSMSMMMMMAMMAMASXMMSSXMAMAMSXMAMSASAMAAMAMMAMMMMMMMSMASMMXMSASXMMMSASXSSMSAASXXMMMMMSM
MSXSAAAXXMAMXXMXSSSSXSAMXSAMSMXSMMMSMSSSMMAMASMAXASMSAAXAXAAAXMAMMASXMAXAXMMSXSXAMASAMSAXMXMXMAXMAMXXSXSXAAAMXMAMMXSAAAAXAMXMAXMMMMXMASAAAMM
MMASMSMSXSASMAAXXAMAMMSMAMAXAAMXMAXAMXAMXMAMXMMXMMSXSMMMSMSSSXSASMXSASMMXSAASAMXXMAMAMMMMSASXXXSMSAMSAASMMMMSXMSMSSSMMMSSSMSSSMMAXAAAASXSMSM
XMAMXAAXXXAMMAMXMAMXMAAMSSSMMSASXMSAXSAMXSSSSMAMSASAXXXAMAXMAXSAXMASXAXAASMMSAMXSMASMMAAMSASAASAMAAMXMXMSXAAXXXAASASMSXXAAAXAXASASMMXXXMMASM
XMXMXMSMSMMMAMXASAMMMSSMMAMMAMMMAXSMMXAMXAXAAMAMSAMXMMMMSSMAXMMSMSMSSMXMMXMASAMAASAMASMSMMMMXXMASMXMMXSMMMMSSSMSSMAMXXMMXMMMMMXSAMXSMSSSMAMA
MXMMMXAAAAXSMMSASXSAMAXXMAMMAMAMMMSXXXASMSMSMMMXMSMAXAAXMXAXMMAXMAXMAMMSMMMASAMXMMSSMMXXAAXAMXSAMXSXMAXAAAXAAMAMXMXMMMXXAMXXXXAMXMXXAAAAMMMS
MXAAASMSMSMMAAMXMAMMSMMSMMSSSMMASXMAXSXMXXAXAASAMASXSXSSSSMSXMAXMXAXMMAAASMXSXSSMAXSXMASMMMAXMXMAXSAMSSMMSAMMMAMXAMAXAAXSSMSSSXMAXMMMMMMMAAX
SSSMXSAAAXMXMMAAMSMMAAMXSXAXAASAMAMSMMAMXMMMSMSASXSMMXAMXSXMAMASMSSSSSSSSMMXMMMAMSMMXMASAXSXXSAXMMSAMXAXAXMXAMMMXMAAMMSSXAAAAAMASAASMSXSXMSS
AXAXAMMMMMMXSMSXAAASMSXAXMMMSMMASXMMAMXSAMXAXXXAMMSAXSMSAXMAMMAMXAAAAMAMXAMXSASAMXSMAMASXMMSMSASMAXMMSXMMSXSMMSAMXAXMAXMXMMMSMAAXSXMASAAXSAM
MSAMXSASAAXMXAAMSSXMAMMMMSAMXAAXAMASAMASXSMMSSMAMAMSMAAMASMSSMXSMMMMMMSMXXMASASXMAMMAMAMAXAAXXMMMSSMXMASXAAXXAAAXXMSSMMSMSAMAXMAXMMMAMMMMMAS
XAAMXXASMXSMMMMMAXAMASXMASMMSSMMMMMMXMMSAMMMAMSMMAXASMXMSMAXAAXAXSAXMXXAMSMXSAMMMAMXAMXSMMXSSMMAXMAMSAMASMXMMMXMMXXAAAAAXXAMXSSMAMSMMSXXASAM
MMAMAMMMXMAXXMSMXSXMASAMASXMAAXMMASMMMXMXMAMAXAXMMSMMXAMXSMSAMXMXSASXAMXMAAMMMMASASXSSXAXAMAAMXAMMAMMASAMXMSASASXXMSSMMSMMAMXXMMSXMAXMASMASM
ASAMXSAAASMMSAAMXSXMMSAMAXAMSXMMSASASAAXAMXSMSXSXMAAMSAXAAXMAMAMAMMMMMMAXXMXAMXAMXSXMAXMXSAXMXMSSSSMXXMAMMXMASAXAXMAMXXXXSSSMAMSMASXMMMXXXXS
MSASASMSMMMAMSAMAMASAMXASMSMMAAAMXSXMASMSMAMXXAXMSSSMXMMSSMSASXMASXXMASMSSSMASMMSXSASXMSAMSMXSXAAAXSASMMMSASMMMMAMMASXMMAMAAMAMAMAMMAASXMMMS
XSAMAMXXMSMXMXXMASXMASXMMAAASXMMSMMMMMMAAMASAMMMMXMMMXMAMAASAXMSMSMMXMXAAAMSMXMAAAXAMAXMMMAXASMMMMMAMXAAMMAMMAAXAASXMMAAMMSMMMSMSSMSSMMAAAAM
XMXMAMXMASAMXXXMAXAMXSXMMSMMMMXXAMXAAAMXMASMXASAMAMMMAMXSMMMSMAMXMASAMMMMMMXSAAMMSMSMMMSASXMXMXAMXSAXSMMSMMMMSMSSXXMASMMXXAMXAAMAAAMAMSSMMSS
XMAMAMSMMMMAXXSMSSXMAMAXAAMXXASXSSSSMXMAMMMASMXASASASXSXXAXAMMXMAXSMXSASMXSAMXXXAMAAAXASASMMAMSMSMSXXAXAXAAMMAAAMAMSXMAXSMMMMSSXSMMMAAXMAXAA
XSSSXSAMMAXMMXMAXAXMASMMSMSXMASAMXAMASMXMAMAMMSAMASMSAMASMMMSMSSSSMXMXASAAMASMSSMMSMXMMSXMAMXMASAAXMXMXSSMMSSMMMSSMMMXMASASAMXXAASMSMMSSMMSS
AAAXMAMASXSXXMMAMXMMMMAXXASMAXMXMAXSXSASMMMSAMXXMXMASXMMAMXAAXMAMAMMMMMMMXSAMXMAAXXSAMMMASXMXSXSMSMAAMAXAMAAMAXMAXMAMMXASAMAMAMXMMMSAAAXXAMX
ASMXXXAAAMMXSASASXMXSSMMMXMASMSXMSAXAMAMMMAXMMMXMAMXMSXMMAMMMSMSMXMAMAMAMXSAMMSSMMXMXSASAMASAMXMAMMSSMASMMSSXSMMAXSXSAMXXASAMXSSMMAMMMXSMSSM
XMXSMMMMSAAASMMMSMAAMAXXMSSMMAXXAMMMSMMMSMMMSAMXSASAAMXSAMXSMSAXMSSSMXXMMASAMMAAMMSMAAMMXSAMMSAMAMMAXMASXAMMMMXXAAAAAXMSSMSASAXAAMSSMSXAXAAA
MMAMAAAAXMMXSAMXSAMMSSMMXAAAMSMMXSAAMAMAAAAAXAMXMAMMMMAXXMXAAMAMAAAAASASMXSSMMMSMAAMAMXXXMMSXXXXSMMAXMASMSSMAMASMMMMMMMXAASAMXSMMMMAAAMMMSSM
AMASMSMMSAMXSAMAMSXMAMASMSSMMMXMAXMASXMMSMMSSSMSSMMAXMAMAMAMXMSMMMXSASAXXMMMMSMXMMXSXXXSXMASMSMMXMMSMMXSAXAAMXAXXXAAAAXXMMMAMXMMXASMMMMSMXMX
SMAXAAAXSMMAMAMSSXSMASXMAXXXAXAMASMASXAAXMXMAAMAAASXMSSSMMASXSAMXMXXAMAMSMSAAAAASXMMXSMAXMAMMAMAXAAMASMMMMMSXMASMSSSSSMXAXMAXSAMSXSMMMXAAXSS
MMSMSMMAMMMSSSXMAMXSAMAMXMMSSXXSXMMMSXSMXXAMXMMMXMMAMXXAMSASXMAMXSAMXMAAMAAMSSSMXAAAAXAMMMMMMASMXMMSAMAAASXMMAXAAXMAMAMSXMXXXSAXAMXMAXSASAAA
XAAAXMASMXSAMXAXSMMXMSMMMSXAMSMSXMAMSXMSXMMSASMSSSSXMMSMMMASXMAMSMASMMASMXMMXAXASXMMSSSXSAAASASXASAMASXMSMMSMSSMMMMSMSMMASMMASXMXAAMMMAAMMXM
MXMMMXAMAXMASASMXASMXAAASAMXSAXXAXAXMXSASAXAMAAAAXAXAAAAXXAXXXAMXSAMXSSXMAXSMMMMMSAMAXMAXMMMAAMMXMAMXMMMMAAXAAAAMSAAXAAMAXAAMSAMXSSMSAMXMSMM
SSMSSMASMMSMMAXASMMASXSXSXAXMXSSXMSASMMASMSSSXMMMMXSMSSMSASAMXMSAMXSASXAMXMXAAXSAMXMMXMMMSMMMAMMXSMMSXMAXMSSMSSMMMSMSMSMMMMMXXAMAMMASAXXMXAA
AAAAXMXMXMAXMXMASXMXMXMAXMASMMXXXAMAASMAMXXAAMXAXSAMAAAMAMMASAMXASAMXSMMMMXSSMSMXSXAXXXSAAAAXSXMASAASAMMSMXAAAXAXXAMSAMASASXMSMMMSMAMXXMMSMM
SMMMSSXSASMSMAMXMAMAMXMXMMAAAAAMMSMMMXMASMMMMXMAMMAXAASXMXSAMASXMMXXXMAXAMXAAMXXAMMMMXAMMSMMMMAMASMMSMMMAMSMMMSXMMMSMASAMAAAAAXAAAMMSMAAAMAS
MAMXAASMMSAAXASXSMSASMMSAMSSSMMSAMASMMMXAAAAXSXMASAMXSXAXMMXSXMAMAAMMMSMMMSXMAMMXMASMXMXAMXAAMAMMSAMXAXMAMAXSAMAAAMSMAMXMXSMMMSMSSMXAAXMXSAM
MASMMMSXAMXMSMSMAXSAAAAASXAXAAAMMSMMASXXMSMSSXAMAMASXMMMMASAMASAMSMSXAAXMAXAXMXSSSXSAASMMSSXXAASXSMMMXMSXMXXMASMSMMXMAXAAMXAAXXXMAAMAXSAAMXS
SASASASMSMSMAASASMMAMMMMMMMXMMMSMAMMAMXMMAMXXMXMAXMMAMAXMAMASAMAXXASMSSSMMMMMAXMAMMXMXXAAXAAXSAMXSASMXMAMXMMSXMMAAXAXSSSSMMSMSSMMMXSAAAMMMAS
MXSAMASAAAASMSMAMMMAXXSAMASXAAAAXMSSMSSXSAMAXMSSMSSSSMSSMMMAMXSMMMAMAXXMMAASASASMSSMMXSMMMSMMMASAXSAAASMSAXXAAXSXSSMMMAMAXXAMAAAXAAMXMMXAXAS
SXMMMXMXMMMSXXMSMXXSSMMASAMMSMXSSXAAXAAXXMSMSMASAMXAXAMSXMASMMXAASAMMAMXMSXSAMAXAAAAMXAXAAXAXSAMAMXMSMMASASASXMMXMXMMMAMAMSAMSSMMMMSSXXSMSMS
MAAAXAMSSMMXAXAMMMAAAXSAMASMMSAAAMSSMMXMXXAAXMAMMMMSMSMSXXAXASMSMSXSAAXAMMMMMMMMMSSMMMMXMMMAMMXMMMAAXXMXMAMMXMMSAMAXAXXMSMXSMXAXSAXSMMAAAAAX
SSMMXXMAAAMMSMMMASXSAMXXSAMAAMMMMXXAXXASMSMSMMMSAXAXXAASXMMSMMAXXXAAMMSMSAMAMAXAAAMAMAXXSASMXSXSXMASMSXMMAMXXAAMASASXSAMXMXXXXMXMXMMASXMSMSM
AAASASMSSMMAAAXMXSAAAAXXMXSMMMSASMSSMSMSAXXMMMASMMSMSMSMMSAAXMSSMMMMXAAASMSASMMMMMXAASMXMXXSAMAMMMXMAXASMSSSSMMSXMXXXAAAXMASMSMMMMMSAMAXXAMX
SSMMASAMXMMSSSMSAMXMXSMMSMMMXXXASAAXAAAMMMMMXSASXXXXAMXAAMSMSMAMXASXSMMMMASMMXAMXSSSMXXAMAMMMMAMASAMXSXMAMAMXAAXXMMSSXMMXMASAAAAAXAMASXMMSMS
XAXMXMXMAXMMAXAMXSASMXMASAASXXMSMMMMSMMASMMMAMASASMSMSMMMMMXAMAMSXSXAXMAMXSASMSAAMAMXMASMASAASASASASASAMXMSMMMMXAXSAMMSXSAMXXXSMXMMSXMAMMXAA
SMMSSXSMSSMMMMXMXSASAXMASXMSAMXMAXXAXASAMAAMXSAMXXXAMXXMAASMXSAMSAXMMMXMSAMXMAAMMMAXXXMAMSSXMSASASAMASXMXAXMSSMSMXMASASXMXMASMMMXMMMMSAMSMXM
AAAXMMMAAAAAXAMMXMMMXMMAMMMMXMAXMMMSSMMSSSMMASAMMSSSMMAASMXMAXMSMSMAXAAMMXSAMXMXSMMMSSSSXXXMXSAMXMXMMMAMMMSMAMMAMMSAMMSAMXMASXSXMMAAMMSMXAMX
SMMSXAMAMMXMMMAMASAMMXMASASXMSMMMAAAXMAMMMMMMSAMAMAASMMMMAMXSSXMAMSXMSXSAMXMMMMXMASAMXAMMMAMASASXMASXAMXAAAMMMSASXMASXXAMXMASMMMSSMSMAXMASMA
AXXMASMSSSMSSSXXAMSSMASXSASMMASMSSSSMMMSXMAMXSMMMSMMAMMXMSAMXAAMSMSMMXAAAMAXXAMMXMMSSMMMXMAMAXSAMSMMAXXSMXMMAAMAAMSMMMSAMSMMSAXAAAMMMSMSXASX
XMSAMXSXAAAAXAAMSSMXMASAMAMAMASXAMMXAMAMASMSMMSMAAXXMMSMMXAXMMMMMXXAXMMASMXSSXSASXMXXXXAMSMMXMMMAAASXSMSMASMMXSSMAXAAAMXMSAASMMMSSMXAXAXXMAS
MXXMAMXMSMMMMMSMXAXAMXSMMASMMXSMMMSSMMAMMMMAAAXMSMXXXXAAXSXMAMSXMASXMASAAAXMAMXMAAMMMMMAXAXMMSSXMMXMAAAXMASAXMAMXSSMMMSAMMMMXAXMAMXMMMSMMMAS
AMASXSSMMXAMSMAMXMMMSMMXXAXAAXXAXAAAASMMSASXMMMXAASXSSSSMMMXXAMAMMMSAMMMSMXMASXMSSMAAASXSXXXAAXXMSXMSMMMMAXXMAMSSXXAAASAMSSMSSMMASAMAAXAXMAM
MSAMXXAAMXXMAMXSAMMAAAXMMSSMMXMSSMMSMMAXSAMXAASAMXMAAAAMAAMXSSSMMSASMXXMAASMMMAXMAMMSMSXSMSMMSSSMSAAAAAXMSSSSXMXMASMMXSSMAAAAMASASAXMMSAMMSM
MAMASAMXMASMMSASMSMMSSMAXAAAXMSAAAAXMXSMMAMXMASAXMMMMMMXSASAMMAMMMAMAMMSMAMXAXXMSAMXMASASAAAMMAAASMMMSSMMXAAMAMXSXSXXAXXMXXMSSMMAXXMSXMAMAAA
XXMAXMXAMMSAMMASAXXAMMMXMMXMAXMMSMMMSSMAXXXXSASXMXXAXXMMMAMAXSAMAMAMXXAAMXASXMXMMMMMMAMAMSMSSMSMMMXXAAAASMMMMAAMSASAASASMSMXAAMASMSXMAXAMSXS
MMMMSAMXSXSXMSSMASMXXASXSSSSXSAAMASASASXMMMMMXSASASMSSXSXSSXMMASMSMSMMSSSMXAMSASASAMMAMSMXMAMAMMXSXMMSSMMAAAMSXSMAMAMMAXAASMSMMAAAXASAMMMXAM
AMAXSAXXAXXAMXXMMMXXSAMXAAAAXSMXSAMMSAMXSAAAXASAMAMXXXAMAMAXMSAMXAAAAAAXXXXMASASASASXAMXSSMASMMSAMASAXXMAMSSXXSAMSMAMMMMSMMMXAMSSXMXMXMMAMXM
SMMMMMMMMXSXMAXAMXAMMSMMMMMMMMSAMXMXMMMAXSMSSMMXMXSSMMMMAMAXXAASMSSSSMXSXMXXMMAMASAMXXSAMXXAXXAMASAMMSMAMMMXASXXMASXMAAAXXMASAMMMMMAXAMSSSSS
AAMAAXXAXAXASMSSXMXXAAMAXXXXXMAXSAMMSXMAXAXMAMMXAXMASXASASXSASXMAXAAXMMSAMXMXMXMAMXMXXMASAMSSMMSXMAAXAAAMAMMXXSXXMMSSSSSSMMMMXMAAMSMMXXAAAAX
SASXSMSMSMSXSAAMAMAMSSXSSMSMMXMXXASASXXMAMXMAMXMMMSAMSXSASASMMMMXMAMXXAMAAASASMMMSSXMASMMAAAXXASXSSXSSSMSSSMSAMXXXSAMXAAMXAAXMSMXMAXAMMMMMMM
AMXAAAAAAAMAMMMXAMXXMAMMAAAAAAMXSAMAMMSSSSSSXMXAAMMAXMMMAMMSASXMXXAMXMSSMSMSASXMXAAXXAAMMMMMMMXSAAAMMAXXAAAAMASASXMMXAMXMSMMMXAMMSSSSMAXMAXM
SAMXMMMSMSMXMAXSAMSSMXMSASMXMASAAMMSMAAAMXMAMSSMXSSMXAAMASMSAMXMASMMXAMXXAXMMMASMSSSMMSSXMMXAXMMXMAMMAMMMSMSMAMASXAAAXXAMXXAXXXMMSXAXSMSXMSS
AXAMXSXMXAMXMAXXMMMAXXMXXMAXSASMSMAXMMMXMAAMAMAXXXAASMMSASXMMMMMMXAAASMMSMSSMSSMAAMXAAAMAMSSMSAASXXSMMSAAXAXMMMAMXMMSMASXAMSSMSSSSMSMMXMASAX
XSSXMASXSMSXMASXMASAMXMASMXMMAMXAMXSXMSASASXSSSMMMMMMAAMXSMSASMAMMMMXXAAXXAAMMAMMMMSMMMSAMAAMAMMSAXXAXAXXMAMXXMAXAMAAASAMXSAAMSXAMAASMXSXMAS
AAMAMXMMAAAXSASXSASAMASAXMAMMXMXMMASAMSAMAMAXAAAXAXXSAMXSMXSAXSAMAASMSMMSMSXMSSMMAMXXAMSXSMSMMSMXMMMMMMXMASMMMMXSASXSSXMAXXXMMMMSMSMXSAMMMMM
MSSSMMMSMMMMMMXAMXSASXMASMXXSASMXMXMXMMAMAMAMSXSASXXSAMXMXAMMMSMSMMMMAMXMMAMXMMASXSMSMMXASXXAXXASXMASAXXAMMXAAAAXXMAMMMXSSMMXSAAXMXAXMMMAAAA
MAAAXXAAAMXSAMSXSASMMASAMMMMMASAXSMSMSMSSXSXMMAAAXMXSAMAMMMXSAMAAXAASAMAAMMSAAMXMAAAXSAAXMASMMSSMASASMMAXXASXMSSSMMMMMSAMXASASMSSSMSAMXSSXSA
MMSMMMXXSMXSAMAAMASXMASAMXAAMXMXMMAAAAAXXXMAMMMMMMXAMASXSAMAMASMMSSXSAXSSMASXSMMMSMMMMXMMMMMAXSASXMMSAMASXMXAAMAXAAXAMMMSMSMXSAMAXAXMAXAMXMM
SMAXXMXSAMXSAMMMMAMAMXXMMSSXSXMAMMSMSMSMAXSSMSXAAXMXSAXASASMSAMAAAXMMMMMAMXSAXMAAAAMXMASXXASMMSAMMSAMAMAXAMXMXMASMMMSXMAXXAMXMAMXMMMXSMMMAAA
XAMASAMAAMASMMMAMXSXMMMXMAMSSXMAXXXXXMMMSMAMASMMXAAMMMSMSAMAMXSMMMSMAXXSAMAMMMSMSMMSAXAXMAMXSAMXMAMMSSMMSAMXXXMASAMSMXMAMXSMSMSMSAXAXXAASXSS
XSMAAXAMXMAXAASXSASAAXMAMMSAMASXXXXASXAAAMMMAMAXMXSAXXMXMAMMMAXXXAMMSSMSAMAMAAMXXAAXXXSMMMXMMSSXMAXXAMAASMXMXXMASASAMXMASAAMSAAAASMSASXMSAMX
MXMXSXSASMAMSXSAMASMMASXMXMASXMMSSMAMSMSSSSMSMXMMAAXMAMASAMXMMSSMASAAMASMSAXMXSAMMMMSMMASAAMSASASXXMASMXSAAMSMMMSXMASMXMAMXAMSMMMMXMXAAMXMSA
AAMAXAMAMXXMXAMXMXMASAMAXSMMMAAAAXMAMMMMAAAAAMXSMASASASASASXXMAXSMMMMMMMAXAMAAMAMMSASASAMSSMMASXMSMXXMMXMMXXAAAAMAMXXXAXXMMSAMXXXXASMSMMAMXA
XAXXMAMMMMXSXMSXSMXAMAMXAXAAMMMMXMMAXAAMMSMMMSAAXMMASASMXMMXAMXXMXMXXXMMSMXAMSMSMXMASXMAXAMAMXMASAMSAMXSXAMSSSMXSAMSXSXMAXSMXSASMMMSAAXSASAM
SXMSMSMXAXMAMXMAMXAMSXMXMSSMSSSSMSXSMSXSAXXMAMXSMXMXMAMAMSSSSMMSMSMSMAAAXAASMXAMXMMAMAXSMMSMASXXMASAAMAMAAMAAXAAMXMXAMASXXMXXMAAXMXMXMXSAXAS
AMAAAAMMXMMSASMSMSMAAXSXAMXAXAAAAMAXXAASMMSMASAMMXMXSAMXMAAMXAMXAAAAXXMAMSMXAMAMMSMAMXMXAMXAAMMMAXSMSMASASMSXMMXSXMSAMMMMASXXMSMSAXMMXMMXXAM
SASMSMSSSMAMMSAAXAAXMAMMXMMMMMSMMMAMMMMMAAXXSMMMAMSASAMXMMSMSXMMSMSMSXMXMXMMMMAMASXSSMASXMMMMSAAXXXAXMXMXMAXXXXAXAAMXMXASAMXAXMAXAMMASXXSAMX
XAXXMASAXMAMXMXMSSSMXSMSXSAAXMAXAMASMMSSMMSMMASAMXMAXAMSXMAMMMMMMMXXMXMASASMSXXMASMXAMMMSMAAAXAMMAMMMASXMMAMAMSXXMMSSSSXMXSXSMMSXMASASMAMAXS
MXMMSSMMMMAXAMXXMAAXXXMAASMMSMSSMSASAAAAAMXMSAMMXMXSMMMMASAXAAAASXMSMASXSASAMXXMMSMSMMXAAXMMXSMSAMAXAXSAMMAMAAMAXSMXMAMMSMSAAXAXAMMMAMXAXAXX
MXMASAMXASMSSSXSASMMMSMMXMXSAMAAMMMSMMMSSMAMMAMXXAAAXMASAMXMXSSMSAAXSAMAMAMXMMXMMSASAMMSSSSSMAAAXXMSMMMAMSSSXSMMMMAAMAMAAAMSMMXSAXMMSSSSSMSX
XAMXSMMMMSAAAAAAAMXSAAXSMSMSSSSSMMASXAXXXMAXXMMMMMXSXSAMXMSSMAMMSMMMMMMXMSMXAXSAAMMSAMAMMAAMMMMMXMMAAAMMMAAXMMAMSSSSSMSSMSMMMAASXMASAAXAAXSX
SSSMSXSAXMMMMMMMMMXMSSSMASASAMXMAMASXMXSMXSXXXXXMMAMXMMXXAAXMAMMXMAXMAXAMXASASMMXSASXMASMMMMXXAXASMSSMSMMSSMASAMMAAXXMAMAAAAMMMSAAMMMMMMMMSA
AAAAXAXXSMXASASAXXAXXMAMAMMMXMASMMMSASAMAAMAMSMAMMAXMSMSMMASMAMMASXSSSSMSXMMMMASAMXMASASAAMAXSXSMSAMAMXMAMAAASASMMMMMMAMMSSMXSXMAXAAAXXXMAXM
MSMMMSMMMMMASAMXXXXSASMMSSXXSMXXSAXMAMMSSSMAMAAASMMSAAAXMMMAMMMSASXXAAMASMXAASXMXMASXMMMXMSMASXMMSMSAMAMXXAMXMAXXXAAMSMSMAXXAXMASMSMSXMAMMSS
MAMXAMAAAAMMMAMXSMASAMXMXMMMAMSXSMSMAMXAAMAASXSMSXAAMMSMXASAMSAMAXMMMMMASAXMMSAMASMSAASXMMAMMMXSAMXSAMMXSAMXASXMSASMXAAAMXMMMXSAMXMXAASXMMAA
MXXMAXSMSMSSSMSAAMMMMMMMAMAXMASAXAAXMMMMSMXMSXXAXMMMSXMMSXSAXMXMASXAAXMASMSSXSASXSMMMXMAXSXAAXAMASASXMXAMXXMXSAAXXMXSMSMSMMSAMXAMAMXSAMASMAS
SAMXSXMAXASAMAMMXAMXAAASASAMXMMMMSMSXSMMAXAMXMMXMXAXXAMMSMMMMMMXMAXSSSMXSAXMASAMXXMXMXSMMMXSMMMSAMASMSMASXMMASMMMSMMXAXXSAAAXSSXMAMAMAMAXMAM
XXSAMAMAMXMMMAMAMSXSXSXSXSASAXAAMAAAXAMMAMSMSAAMMSMSSXMASXMAXAASXMAXAXXAMAMMAMAMXMSASXASAMXXSSXMXMXMASAMMMSAAMAAAAASMSMAMMSMSMXMSSSXSMMSSMXS
XMMXXAMSMSSXSASAMXASAMAMXMASAMSMSXXSAMXMSMXAMXSAAAXMASMASMSXSSMSAMXMMMMXSSXMXMSAMXSASXSAMXSMAMAXASMMMMSXMAXMSMMMSSMMAXMXMXMMMXAXAAMASMAXMXMA
SAXASXSMXAAXMASAMMAMXMAMAXMXMMMAXAMAMXAMXAMAMSMMSSXXMAXAMXSAAAAXAMSMXXAMMAMMSMXAXMMMMMMXMMAMXMSMMSAAMAMMMXSAMXMXAMXMAMMSMXAAMSSMMSMAMMSMMSAM
XMXMAMAXMMXSAASMMSMSASMSSSMAMXMXMMMAASMSMMMXSAMXMMXAMXSSMASMXMMMAMAMSMSMSAAAAASXMASAXAXASXSXSMXAXSXMMAMMAMXMSXMAASMMXSXMASXMXAASAMMXSXXAAXMX
SSSXSMAMXAAXMXSXXXASXSAAAAMXMAMASMMMMMXAAAAMAMXMXAAMMAAMMAMXSSXMASMSAMMASXSSMMMXMSMAMXSAMMMAAMSAMXAXSAXMASXXSAMAMXAXAMAMASMMMSSMMSMMMASMMMSX
AAAAXMXSMMXSMAXMMMXMAMMMSMMSMASAXMASASMSSMSSMAAMMMSXSMSMMSSMMAASXSXSASMAMXMAMSAMXAXAAXMASAMSMMSSMSMMMASXXMXAXXMASMMMMXMMAMAAAXAXAAMAMMMXMSAM
MAMMMSMMMMMAMASAASAMXMAXAXXAMAXMMSASAMXAAAXMXSAMAAMASXAXAMXAMSMMASMSAMMAMXXAMXXSSSXSSXAAMAXXAAMAMXXMASAMMMMSMXSMXASAMASMSSSMSSSMSMSAMXXXMAMA
AAXAXAAXAASAMMAMSSMSAMXSMMSMXMSMAMXMXMMXMMSSMMASMSMAMMSMMSSMMXAMXMAMXMXXMAXSMSMMAMAXXMASXXMSMMSMSAMXXMMMAXAXAASMXMAMSMSAAMXAAAAAXASXSXMAMMXS
MXSMSSSMSXSAAXAXMXMXXXAMXAAMAXAMSSSMMSMMXMAMAMXAMXMXMAXAXMAAAXAMSMSMSSMASMXXAMXMAMXXMMAAMMMAAMAAAMXSXSXSSMMXSSMAASXMXAMMMXSMSSSMMMMXAXSAMAAM
XAXMAAXXXASXMMMSXASMMMMSMSSSMMASAAASAAXXAMMSXMXSAAAAMXSSMSSMMSAMXAAAAMXAMAAMAMXMXSAMMMSSMAXMSMMMMXAMXMAXAASMMMMXMMAMMMXAXXSAMAAASXSMSASASMSS
MXSMXXMXSMXSXAXMMMSAAMXSAAMAMSMMMSMMSSMMXSXXAMXMMMSXSAAAAAAXMAMXMSMMMAMSSMSSMMXMAXAMAAXAXSSXXMSMSMXXAMMMSMMAAMAASMSMAMSXSMMAMMMMAXXAMASAMAAA
SMMMAXSXMMAMMMAAAXSMMMAXMSMAMMAMXMXMAMAMSMMSMMSSXMMAMMSMMMSMMAXXXAXMMXXXAMXAAAMMSSMMMMSAMXXXMAAAAMSSSSXAMAMSXMMMSAMSSXMAAASXMASXMSMMMAMXMMMS
AXAAXMMAAMASAMXXSMSXSMMXXMMAXSAMASMMAMAMMAAAAAAXAAMAMXXXAXXMMMSMMMMSMSSSMMSMMMXXMAXXXAMXMASXMSMSMMAAXSMXSXMMSMXAMAMAXAMXSAMXSAMAXMAAMXSASXAX
SMMMSASMMSASMXSAXAMASXSXASXAMSAMASASXSSSSMMSMMSSSMSMSMXSSSMAAAXAAAXAAAXAAAMAAMXMSMMMAMSSMXASAMXAAMMXMXMAMAAAAXMXMMMXXXMMXAAAMASXMMSMSASASMMS
XAAAMMMXAMXSAAMMMAMSMAXMMMMXMSMMXSMMAMXAASAAXSAMXXAAAAXXMAXMMXSSSXSMMMXSMMSSMSAAAMMMSMAAXXMSMXMSMMXSAMXSSSMSSSMSMMXSXAXAMXMMMAMAAXAAXMMXSAAX
MXMMSXXMXMXMMXSXSAMXMSMSAAMAAMASAMAMSMMSMMSASMMSMSMSMMMASMMMSMMAXAXMASMAXXXXMSXSMSAAAMSSMSXSMAMXSAMASXAMMXAAMMAMXSAMSSMMXASAMASXMSXSSXSAMMMS
AAMXMXMXAAXMMMXASXSAAAAMSAXXMSAMMSAMAXMXAAMXSAASAAMAXXAXMXAAMAMAMSMSASASMSXAXSXMASMSMMAAXXAXXMXAMXSAMMMSAMMSXMAMMMAXAMAMSASXSASMAMXMMAMASMXX
MMSAMMASMSMSSMMMMMMMMMXMMMSSMMMXMXXSXMXMMMSSXMMSXXMASXSMMSMMXMMSSMAMMMXAASXMMSAMMMXXMMXXMMSMASMMMAMAMMAMAXAMASXSASXMASXMAXXXMASMAMSMMAMXXXAS
SMSASAMMMAAAMSASASXSSSSMSAMXAAAMSAMMXSAAXASMMSXMMSMAMXAAXXASXSAMAMMMASMMMMAMAMAMMMASMSSMMAXMAMAXSXSMSMMMSMXSAMASASASAMAAMSXMSAXXAMSXSXSMXMMM
AMMAMXXXXMMMSSMMASMMMAAAMXMXMMXSMASAAMXSMMSAAMAAAMMSMSXMXMASAMXSAMAAMAXAASAMXSMMXMASXAAMMASMAXXMMASAAAAAXXMMAMXMAMMMASAMXMAMSASMSSMAMAAAXMAS
MSXSAMMSASXXXMAMSMXAMSMMMAMSMSXAXSMMSSMXASMMMSMMMSAXXSASMSAMXMMXAMAMXMMSXSMSMAASMMASMSMMMMMXAMAXMAMXMSMASASMSMSMSMMMAMAXMSAMSAMMXAMAMSMMXSAX
XAMMAAAMAMMMMMAMAAMMXAXXSXMAAXMXMMAMAAXSSMXMMAAMXMASAXAMMAMMMSSSSXSAAXAXAMAAMSMMAMASMXASAXMAXASAMMSAXAMXSXMAXSXMASXMASXMASMMMAMXSMMXXAAMXMMS
AMAMSMSMAMXAASMSMSMSAMXXMAMMSMSSSMAMSSMMXMASMXSMXMXMAMSMMASAAMAAAAMSXSAMAMSMXXXSSMMSASAXMSMASXMASAAXMMSMSAMXMMMSAMXSMXAAMMXAXAMXSAAMSMSMAAAA
SXSMXAXMAMMMMSAMAAAXXSXMMMAXAMAXAXXXXAASMMMAAXMMMSAMXMXASASMXSMMMMMAMMASXMXSAMXMAAXSXMAMSAMAAASXMXSMSXAAMSAMXXAMASXMSSXSASXXMAMXXMAMSAMMSMMX
AAAXMXMSMMMSMMAMSMSMMMXSAAXSSSMSSMSASXMMAMSMSMSAAXXXSASMMMSMXSAMAXMAXSAMAAMSXMASMSMSAMMMSASMMXMMMSAAXSMSMAMASMSSMMAAAXXMAMAAMSSMMXSXSASAXMAM
MXMXSAMMAAAAXSSMMAAAAXAMMXMAMXXXMAXASXMXAMAAAAXMMSSMSXSAAAMMAMASMMSAXMSSMMMMASXXAAASXMAAXXMXMMMSXSMSMXMMMXMAMSXAXSXMMSMMAMXMMAAAAXMAMAMXMMSA
XAMAXASMMMSXMAAAXSSSSSXMASMSMMSMMSMASASXXSMXMMMMXXXASMSXMSSMASAMAAMAMMAMAMXSAMXMSMMMSSMSSXMASAAAASXXXAAAXAMXMXXAMXMXXXXMASAAMXSMMSMAMAMMXAAA
SASASXMXAXXMMSSMMAAAAXMASXXMAMMAAXMXMAMAMXMASMMMSAMXMASMMXAXXSASMMSSMSASAMAMAMXAXAMXMMXXAASASMSMMMMXMSSXSSXMASXMXAMSSMMSAXMXSAMAXXMAMAMAMMSM
SXMXSAAMMMSXMAMXMMMMMMMMMXASMMMMMMSXMAMAMASASAAAMAMMMMMAMSMMMMMMMMAAASASMMMSMSMSSMXMASMMSMMAXAXXSASAAMAMAAAMASAMSASAAXMASMXXMASXMSSMSSSXMMAM
MXSASMMMXAASMMSXSAMXXASAMXXXXSXASXXASXSASXMASMMMSAMAAASAMXXAAMAAXMSSMMAMMAAAAAMAAXASAAAAMAMSMSMMSASMSMAXSSXMASAMSSMXSXMAMMXMSXMAAMMMAXXMASAS
MSMMSAMAMMSSMXMXSXXMASMMSAMXAMSAMXSXMASXSAMXMMAMXXSSSMSASXSSSSMSSXMAXMXMSXSMSMMSSMMMSSMMSSMAXXMAMXXMAXXMMMMMASAMXMMMMXMASAMXMASXSSSMMSMMMMMS
+73
View File
@@ -0,0 +1,73 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
resultXMAS := 0
resultMASX := 0
// word := []string{"X","M","A","S"}
table := [][]string{}
for scanner.Scan() {
line := scanner.Text()
// fmt.Println(line)
table = append(table, strings.Split(line, ""))
}
for i := range table {
for j := range table[i] {
//XMAS
if table[i][j] == "X" {
//HORIZONTAL DOWN
if i < len(table)-3 && table[i+1][j]+table[i+2][j]+table[i+3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL UP
if i >= 3 && table[i-1][j]+table[i-2][j]+table[i-3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL RIGHT
if j < len(table[i])-3 && table[i][j+1]+table[i][j+2]+table[i][j+3] == "MAS" {
resultXMAS++
}
//HORIZONTAL LEFT
if j >= 3 && table[i][j-1]+table[i][j-2]+table[i][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNRIGHT
if i < len(table)-3 && j < len(table[i])-3 && table[i+1][j+1]+table[i+2][j+2]+table[i+3][j+3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNLEFT
if i < len(table)-3 && j >= 3 && table[i+1][j-1]+table[i+2][j-2]+table[i+3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPLEFT
if i >= 3 && j >= 3 && table[i-1][j-1]+table[i-2][j-2]+table[i-3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPRIGHT
if i >= 3 && j < len(table[i])-3 && table[i-1][j+1]+table[i-2][j+2]+table[i-3][j+3] == "MAS" {
resultXMAS++
}
}
//MASX
if table[i][j] == "A" {
if i < len(table)-1 && i >=1 && j < len(table[i])-1 && j>=1 && (table[i-1][j-1]+table[i+1][j+1] == "MS" || table[i-1][j-1]+table[i+1][j+1] == "SM") && (table[i-1][j+1]+table[i+1][j-1] == "MS" || table[i-1][j+1]+table[i+1][j-1] == "SM") {
resultMASX++
}
}
}
}
fmt.Println("XMAS contained :",resultXMAS)
fmt.Println("MAS in X contained :",resultMASX)
}
+1374
View File
File diff suppressed because it is too large. Load diff
+109
View File
@@ -0,0 +1,109 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
)
func calcScore(s [][]string) int {
result := 0
for i := range s {
if len(s[i]) % 2 == 0 {
fmt.Println("The following valid update has an even length, so cannot calculate the middle page: ", s[i])
} else {
middle := (len(s[i]) + 1) / 2
middlePage, _ := strconv.Atoi(s[i][middle - 1])
result = result + middlePage
}
}
return result
}
func isValid(update []string, rules [][]string) bool {
valid := true
for i:=1; i<len(update); i++ { //FOR EACH NUMBER OF THE UPDATE
for j := range rules { //FOR EACH RULE
if update[i] != rules[j][0] {
continue
} else {
for k:=0; k<i; k++ { //FOR EACH
if update[k] == rules[j][1] {
valid = false
break
}
}
}
}
}
return valid
}
func makeValid(update []string, rules [][]string) []string {
for i:=1; i<len(update); i++ { //FOR EACH NUMBER OF THE UPDATE
for j := range rules { //FOR EACH RULE
if update[i] != rules[j][0] {
continue
} else {
for k:=0; k<i; k++ { //FOR EACH
if update[k] == rules[j][1] {
temp := update[k]
update[k] = update[i]
update[i] = temp
break
}
}
}
}
}
if ! isValid(update, rules) {
update=makeValid(update, rules)
}
return update
}
func main() {
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
ruleRegex := regexp.MustCompile(`[0-9]+\|[0-9]+`)
updateRegex := regexp.MustCompile(`^(\d+(,\d+)*)$`)
numberRegex := regexp.MustCompile(`[0-9]+`)
rules := [][]string{}
updates := [][]string{}
for scanner.Scan() {
line := scanner.Text()
ruleMatches := ruleRegex.FindAllString(line, -1)
updateMatches := updateRegex.FindAllString(line, -1)
rule := []string{}
update := []string{}
for i := range ruleMatches {
rule = append(rule, numberRegex.FindAllString(ruleMatches[i], -1)...)
}
for i := range updateMatches {
update = append(update, numberRegex.FindAllString(updateMatches[i], -1)...)
}
if len(rule) > 0 {
rules = append(rules, rule)
}
if len(update) > 0 {
updates = append(updates, update)
}
}
validUpdates := [][]string{}
invalidUpdates := [][]string{}
for i := range updates {
if isValid(updates[i], rules) {
validUpdates = append(validUpdates, updates[i])
} else {
valid:=makeValid(updates[i], rules)
invalidUpdates = append(invalidUpdates, valid)
}
}
validScore := calcScore(validUpdates)
fmt.Println("Score of valid updates: ", validScore)
invalidScore := calcScore(invalidUpdates)
fmt.Println(invalidScore)
}
+80
View File
@@ -0,0 +1,80 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
)
func calcScore(s [][]string) int {
result := 0
for i := range s {
if len(s[i]) % 2 == 0 {
fmt.Println("The following valid update has an even length, so cannot calculate the middle page: ", s[i])
} else {
middle := (len(s[i]) + 1) / 2
middlePage, _ := strconv.Atoi(s[i][middle - 1])
result = result + middlePage
}
}
return result
}
func main() {
file, _ := os.Open("test")
defer file.Close()
scanner := bufio.NewScanner(file)
rule := regexp.MustCompile(`[0-9]+\|[0-9]+`)
update := regexp.MustCompile(`^(\d+(,\d+)*)$`)
rules := []string{}
updates := []string{}
for scanner.Scan() {
line := scanner.Text()
ruleMatches := rule.FindAllString(line, -1)
updateMatches := update.FindAllString(line, -1)
rules = append(rules, ruleMatches...)
updates = append(updates, updateMatches...)
}
// fmt.Println("Rules: ", rules[0])
// fmt.Println("Updates: ", updates[0])
number := regexp.MustCompile(`[0-9]+`)
validUpdates := [][]string{}
invalidUpdates := [][]string{}
for i := range updates { //FOR EACH UPDATE
validUpdate := true
updateNumbers := number.FindAllString(updates[i], -1)
for j:=1; j<len(updateNumbers); j++ { //FOR EACH NUMBER OF THE UPDATE
for k := range rules { //FOR EACH RULE
ruleNumbers := number.FindAllString(rules[k], -1)
if updateNumbers[j] != ruleNumbers[0] {
continue
} else {
for l:=0; l<j; l++ { //FOR EACH NUMBER UNTIL THIS ONE IN THE REPORT
if updateNumbers[l] == ruleNumbers[1] {
validUpdate = false
break
}
}
}
}
if validUpdate == false {
break
}
}
if validUpdate {
validUpdates = append(validUpdates, updateNumbers)
} else {
invalidUpdates = append(invalidUpdates, updateNumbers)
}
// fmt.Println("Update numbers: ", updateNumbers)
// fmt.Println("updateNumbers length:", len(updateNumbers))
}
// fmt.Println("Valid Updates: ", validUpdates)
// fmt.Println("Valid updates number: ", len(validUpdates))
result := calcScore(validUpdates)
fmt.Println("Valid updates: ", validUpdates)
fmt.Println("Invalid updates: ", invalidUpdates)
fmt.Println("Result: ", result)
}
+28
View File
@@ -0,0 +1,28 @@
47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13
75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47
+130
View File
@@ -0,0 +1,130 @@
......#...........#..............................#..............................#...........................##...............#....
.............#..............#........#......##...................................................#............##...#..........#...
...#..................#..............#.........#...#.........................................................................#..#.
.....#..........#...................#.....................#..........#...........#......#..#...................#..................
...#...............................................##..................#............#.....#...................#...................
.#.#..#...................#.##.................#..........#................................#......#.........##..................#.
....................#...................#....#.........#....................#....................................................#
..........#......#...................................................................................................#....#.......
.#...............#.........#...........#...............#...................#......#...............................................
............#...........#........#..##.......#........#.....#................................##...................................
...................#.#.............###.................##.................#.......................#.....#..............##.........
.........................#...#............................#......#.......................#........................................
.....................#..............................................#.......#......##......................................#......
............................#.#............................................................................#.................#....
.#.....#.......................................................#..........#.......................................................
..............#..............................#.....#....#........#....................#....#.#...........#.#..................#...
........................#...#...##......#...........................#.............#............................#..................
...#........................................................#...#...........................#...#...............#........#........
.........#..#..........#.....................................#..................................................................#.
...........................................#.........#....#........................................#..#...........#...............
..#..........#...........................................................................................#..............#.........
...#.......#......................................#...............#...............................................................
.#........#......#.#....................................#...#...........#..........#........#.#.......#.......................#...
......................#...........#......##....................#..................#......#..............................#.......#.
..............#......................#..............#...#.#............................................................#.#........
..............#..................#...#..................#...#.....#...#...............#...........................................
.............#............................##..#...#...............................................................##..............
..#............................#.......#.#....................................#...................................................
.......#.....#..........#......#.....#...................................#...........................#......#....#..............#.
.#.................#.............................................#................#.............#.....#....................#......
..............#.........#..#.....#...........#..............................#.................................#............#......
....#.#............#............................................................#..........#......................................
.........................................#.......#......#....................................#.....................#...#......#...
....#.............................#....................................#..........#................................#..............
.........#..#......#..............................................................#....................#..........................
.......................................................##...#........#......................................................#.#..#
..........................#.......##..##................................................................................#.........
..................................##..................................................................#..........................#
.#..................................................#..............#.....................#.....#..................................
.......##........................#......................................................#..........#..............................
.........#....#....#.........#.#........................#...#.....................................................#.....#.........
....#.............................#....#....................#.....................#.....#......#.....................#..........#.
............................................................................................#..........#......#...................
..................................................................................#..........................#.#.....#.........#..
..................................................#...................................................#......#.....#............#.
..........................................^#................................................................................#.....
...............#..........#.............................................#.....#....#...................#................#.........
#..#....#........#........#.........#.......#.................#.......................#.#.............#...................#.......
..#................................................................#......................................#.......................
........#......................#.....................##.#..........#.............................#.............................#..
....#..........#........................#.........................................................................................
......#...#.#.#.........#.................#.....#.....#...#......#..................................................##........#...
...#....#....................#...................................................................#......#...............#.........
..#.......#.........................#..........#........#............................#......#....................#................
.................................#.......................................#....................................................#..#
......................#...#........................#.......................#.............#........................................
......#.......#...................................................................................................#...............
.............#............#......#............................#...........................................##......................
..........................#.....................................................................................#.................
....#..............................#......................#........................................#....#...........#.............
................#.......#.........................................................................................................
.............#............#........#.....#.........#.#.#............................#..........#..............#....#.......#.....#
..#.....#...............................................................................................#...............#.........
.......#...........#............#................#.......................................#..........................#......#......
..........#........................................#......................#............#....................................#..#..
.......#......#..............................#........................................................#.#.................#.......
.#.................#..#.....................................................................................#...........##........
#...................................#........................................#..............#.##........#..#.#.............#......
......#...............#........#....#.........#.........#...#.......................#...........................#............#....
...#...................................................................................#.......................................#..
.....#.......................................#................#...............................................................#...
.#................................................##................................#....................#...............#........
.................................................#..#..................#.......#........................#...............#.....#...
.....##.#.............................#.....................#................................................................#...#
...........#....................#...........#...............#.................................................#.......#.......#..#
........#....................................................#.....#....#.........................................#.....#.#.......
...............#..........................#............#.#.................................................#......................
...........#......#.....................#...................................................................#.#..............#....
......#...#.........................#..........................................................#..................................
.....................#................................................#..#........................................................
..............#.................#............#....................#.#.......................................#............#........
............#.....................#................#......#..........................#.#.........#............#...................
........................................................................#.....................#...................................
.............................#....................................................................................................
.........................#...#..........................................#............................................#............
..#...............................#.....#.....#.............#.......#..#.................##.#.......................#.........#.#.
......................................#...........................................................................................
...........#.....................................#................#...#.........................#........................#........
..#...#..#..........................#.......#....#......................................................#................#........
.....................................#...#.#........#...............#..#......#.....................................#...#.........
.#..............#..............................................................#.........................##......................#
..........#..................................#....#.........#...#.#..........#...#...................................##...........
...............#.....................................................................................................#............
.#.......#....................#...#..........................#.#...............#......................#........#.................#
.............#....................#........................#..................#......#....#....#..................................
........#..............................................................#.....................#....................................
.......................#..............#.............#......#.........................................#.........................#..
.......#.......#.#........#.......................#..#.......................................................#.#..................
...............#..#....#.......................#.....#..............................#..................#.....................#....
......#..............#...........................#............................##...........................#......................
.......................................#........#................................#..........................#.....................
.#.....................................#............#.............................................................#..#............
..................#..................#.........................#............#..........#.........................#...#............
.......................................................#..............#..........................................................#
...#....#..#...#..#...................##....................#.....................#...................#.....#..........#..........
.......................#........#....................##.................#.......................................................#.
........#.......#.......................#.#......##...##........#..##.........................................#...............##..
....#..........................#.........##..#......#...........................#........#........#...#...........................
...#..........................#.....#.....................................#.......................................................
....................................##.......#..............................#.............#...#......#.............#..............
.#..............................#...............................................................................................#.
.....#................................................................................##.....#..............#.#...................
...........................................................................................#....#................#................
...#..#...................................................#....#.......#.......#.................................#........#.......
.#....#....................#..............................................................................#.............#.......#.
.........#.................#.......................................#...........#......#.......#............#............#.........
........................................#...............................#.........................................................
..............#....#......................#..........#........#.....................................#...........#..........#......
......##....#.............#..........#......................#.........................................##..........................
....................#.............................#.....................##.#..........#..#......................###.........#.....
.#.......................................##........................#.....#.....#..#...............................................
..............................#............................#.......................................................##.............
.........#.............................#..............#......#.....#..............#.#............................#........#....#..
............#..............#.............................#..........................#.............................#...............
.................#...........#..............#.....#..............................#.............#................#.....#...........
........#.....................#........#.....................................#..........................#......#.#................
.....................................................#..#........................#.##..#.........#................................
......#..............................................#..........................#...............................#..........#......
.................................................#.................##.......................#...................................#.
....................#.....#.......#.............#................................#..........#...#.................................
+160
View File
@@ -0,0 +1,160 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func findPosition(layout [][]string) []int {
position := []int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == "^" {
position = append(position, i, j)
}
}
}
return position
}
func findObstacles(layout [][]string) [][]int {
positions := [][]int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == "#" {
positions = append(positions, []int{i,j})
}
}
}
return positions
}
func calcPath(layout [][]string) ([][]int, bool) {
circle := false
direction := "up"
guardPosition:=findPosition(layout)
inBound := true
currentPosition := guardPosition
path := [][]int{currentPosition}
for inBound && !circle {
if direction == "up" {
if currentPosition[0] == 0 {
inBound = false
break
} else if layout[currentPosition[0]-1][currentPosition[1]] == "#" {
direction = "right"
continue
} else {
currentPosition = []int{currentPosition[0]-1, currentPosition[1]}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "right" {
if currentPosition[1] == len(layout)-1 {
inBound = false
break
} else if layout[currentPosition[0]][currentPosition[1]+1] == "#" {
direction = "down"
continue
} else {
currentPosition = []int{currentPosition[0], currentPosition[1]+1}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "down" {
if currentPosition[0] == len(layout)-1 {
inBound = false
break
} else if layout[currentPosition[0]+1][currentPosition[1]] == "#" {
direction = "left"
continue
} else {
currentPosition = []int{currentPosition[0]+1, currentPosition[1]}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "left" {
if currentPosition[1] == 0 {
inBound = false
break
} else if layout[currentPosition[0]][currentPosition[1]-1] == "#" {
direction = "up"
continue
} else {
currentPosition = []int{currentPosition[0], currentPosition[1]-1}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
}
return path, circle
}
func checkCircle(path [][]int, position []int) bool {
result := false
for i:=1;i<len(path);i++ {
if path[i][0] == position[0] && path[i][1] == position[1] {
if i < len(path)-1 && path[i-1][0] == path[len(path)-1][0] && path[i-1][1] == path[len(path)-1][1] {
result = true
}
}
}
return result
}
func main() {
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
layout := [][]string{}
for scanner.Scan() {
line := scanner.Text()
layout = append(layout, strings.Split(line, ""))
}
// fmt.Println(path)
// fmt.Println(len(path))
path, _ := calcPath(layout)
pathOccurances := make(map[[2]int]int)
for _, tuple := range path {
key := [2]int{tuple[0],tuple[1]}
pathOccurances[key]++
}
fmt.Println(len(pathOccurances))
circleSpots := [][]int{}
for i:=1;i<len(path);i++ {
if path[i][0] == path[0][0] && path[i][1] == path[0][1] {
continue
} else {
tempValue := layout[path[i][0]][path[i][1]]
layout[path[i][0]][path[i][1]] = "#"
_, circle := calcPath(layout)
if circle {
circleSpots = append(circleSpots, path[i])
}
layout[path[i][0]][path[i][1]] = tempValue
}
}
uniqueCircles := make(map[[2]int]int)
for _, tuple := range circleSpots {
key := [2]int{tuple[0],tuple[1]}
uniqueCircles[key]++
}
fmt.Println(len(uniqueCircles))
}
+10
View File
@@ -0,0 +1,10 @@
....#.....
.........#
..........
..#.......
.......#..
..........
.#..^.....
........#.
#.........
......#...
+850
View File
@@ -0,0 +1,850 @@
5055314034: 10 1 489 35 44 14 16 4
108773: 18 1 121 2 6 38
22175: 1 73 45 2 35 5
4076637638: 338 1 6 1 191 7 3 4 34 4
479231839: 9 7 73 1 6 4 7 8 581 7 2 8
161312232: 761 852 11 4 8 28 6
6760600000: 220 40 7 5 878 25
601121975: 608 91 53 5 5 53 649
761: 79 2 6 558 42
84130: 65 90 8 6 9
52590888326: 7 3 9 3 8 543 1 673 8 4
21603: 9 80 3 1
6498240: 9 6 7 32 210
2420318475: 8 413 85 167 5 81
6368572316: 885 2 2 599 5 1 6 6 6 5 9
23428423: 870 8 1 308 581 5 34 9
17387502: 1 8 50 1 76 67 395
16073047995028: 9 8 2 6 2 282 5 507 954
1527631: 2 8 95 6 8 8 152 6 1 9 5 8
90086454: 32 593 2 1 4 1 6 4 6 45 7
516078606614: 8 60 6 7 860 59 7 14
145962: 2 86 847 269 3 6
81188: 9 8 7 3 386 37 82 2 8
159171: 50 1 764 817 12 4
9440342478: 866 326 50 499 67
177118: 77 846 845 3 18
389593323: 41 95 2 3 62 46 6 780 3
2318793: 3 74 9 8 792
6077575: 421 4 6 84 17 7
1513923281: 760 3 166 82 4 1
1368574: 950 17 520 460 2 534
2602638433: 6 506 58 1 346 262 4
324285404: 7 4 1 6 6 443 3 4 6 41 1 4
123419188: 831 275 4 1 8 9 7 9 5 6
7639222: 3 2 1 50 4 9 823 98 1 2 8
2165757141719: 93 575 4 8 498 81 5 5 6
32949456: 7 6 1 1 338 31 9 6 958 7
373015448: 7 1 8 86 146 2 8 6 545 5
58401: 50 1 74 9 7 3 672 7 59
321369974958: 3 5 380 7 3 3 2 5 801 3 9
1654884263287: 398 42 99 1 72 91 287
1497933556: 4 89 6 2 41 8 5 558
14538726514: 726 8 658 699 6 2 514
653959328: 63 519 95 2 3 27
12554226440: 8 4 46 8 8 912 828 58 7
24068829: 2 1 7 9 8 6 3 14 33 6 6 1
13716449: 1 37 16 449
70300416144: 1 9 61 300 406 2 8 1 44
12041328: 60 3 4 839 78
179748877650: 179 2 5 4 881 6 76 49
22666025380: 4 230 3 54 99 96 456 4
74741534: 747 4 14 33 40 61
194212880: 97 2 201 7 4 8 1 98 7 8 2
534529044: 7 7 673 8 4 680 7 9 28 9
688: 4 5 5 23 6
256747454: 8 3 6 9 9 3 76 266 9 5 2
61497991: 52 29 759 18 993
8046070: 4 35 2 833 36 70
19899933: 6 23 801 6 5 94 4 5 3 2 3
175019472155: 9 4 84 444 214 25 5 30
122: 2 12 8 5 5
7716862272: 8 6 1 9 1 9 782 49 8 4 3 7
292572: 7 3 314 36 21 1
9265739: 181 9 828 7 5 8 5 1 38 9
38166224456: 8 55 930 6 995 144 54
10633: 461 77 9 972 7
11448249: 11 359 89 2 51
6409: 3 2 5 6 252 8 4 3 352 3
144060624: 7 3 34 1 601 1 27 907 6
29213: 97 1 3 8 6
61614560278: 23 4 758 900 98 35 8
701009838: 786 93 959 2 13
170675: 51 1 4 446 34 27 6 5
3590981856: 2 6 77 7 3 6 6 12 99 77 7
159313258080: 20 933 158 9 79 76
13950095: 620 774 482 3 524 5
19276100: 3 828 1 95 773 519 53
91701711135: 58 300 704 2 527
19037065502: 29 69 9 1 90 5 46 955 9
4796722: 841 57 30 1 9
6491761244154: 9 689 19 5 83 5 68 67
2288734074: 3 20 351 81 11 35 7 2
51: 1 7 3
6703: 5 19 2 7 6 3 8 6 3 678 3 7
55285: 7 151 96 43 5 673
1345: 20 5 4 13 323 2
648683: 90 9 85 8
647351437: 1 79 2 8 7 568 12 2 3 5
496420640: 9 34 69 9 710 2 8
17707: 78 98 93 7 7
1322647: 1 6 4 7 4 2 8 8 9 8 50 283
13373109: 2 771 1 865 1 9 5 5 2 5 4
1771452188: 17 714 52 1 86
3876558518158: 3 6 5 6 9 2 3 4 271 5 53 8
121216672: 3 2 8 3 7 6 57 8 4 4 8 674
99709866569: 778 9 7 32 42 664 4 7
8132: 61 12 84 5 743
181628139355: 3 48 7 9 3 5 475 41 5 7 4
8137536: 2 3 5 7 8 3 7 31 7 2 6 9
125320123: 16 7 7 13 96 372 8 123
3928122: 7 3 5 97 4 4 6 389
16010345: 8 25 8 95 1 5 590 230 9
353033: 6 434 5 80 633
662454: 882 6 7 3 402 3 28 26
4623860913: 6 6 8 6 2 49 8 3 2 8 4 982
6223012578846: 70 889 125 788 46
1233252: 8 6 5 9 3 804 2 9 213 8 9
6377598: 7 5 7 11 692 3 2 9 3 1 2 6
851215538888: 9 5 4 7 4 1 9 42 8 2 890
652063806: 26 4 21 8 1 6 2 49 8 3 5 8
569651493608: 626 5 17 9 531 3 607 2
109564049: 5 4 4 2 622 5 501 5 50 1
108244890: 920 181 7 3 6 65
3064775: 6 3 1 7 1 6 7 9 65 9 581 5
2168098354: 4 479 73 6 40 4 29 53 6
2213354545: 9 1 212 335 38 87 656
113305647: 83 1 93 9 5 36 4 8 3
3648621: 45 2 9 6 4 3 4 1 76 1 7 6
39788761: 3 631 52 58 75 8
37988340: 996 882 389 3 52
105593616: 3 9 2 2 9 196 1 815 57 3
34732786878: 391 3 6 907 6 88 1
432317883: 273 791 11 182
485351797: 58 4 76 83 9 96
75514220688: 839 90 4 220 688
8989734402: 89 81 8 734 400 2
1560183: 7 48 54 4 1 84 1
1639799045: 116 589 8 9 2 5 3 8 8
52538: 29 78 3 736 62 86
943: 726 6 206 5 3
426657: 5 53 7 230 7
34098: 40 841 1 3 6 441 7
987900367: 6 4 6 8 98 8 2 6 36 4 1 3
3240: 7 2 16 6 9 81
167040619026129: 8 5 537 764 5 9 479 2 9
21896: 19 4 6 4 86 184
473: 364 1 95 7 6
231: 5 8 191
4095: 7 571 9 8 81
40921600: 20 37 92 816 4 50
39353184077: 99 835 3 9 1 585 8 79
224194610985: 9 552 4 190 3 999 2 9 2
81804625: 8 79 5 93 27 84 27
146: 9 6 8 15 9
793655568: 491 449 8 8 9 4
83314065: 462 8 559 18 6
364726: 40 87 27 26 4
1678449: 176 3 952 73
2423015: 5 76 99 6 8 8 501 3 8
171837368646: 94 1 609 33 1 3 68 648
686498: 8 8 78 95 2
504336092: 5 945 553 30 4 2 9 9 5 4
73304: 12 736 98
3458989639: 4 6 3 61 7 95 6 50 463 9
182: 1 4 90 83 5
2487563: 78 1 992 61 23 45
13836888716: 772 7 1 8 272 5 8 4 8 68
6288370: 29 7 180 77 7 137 207
10944097534206: 1 673 409 408 9 2 327
1195444320: 92 7 998 6 310
27360851258: 66 6 9 9 4 2 5 8 51 258
6317930: 986 63 70 9 982 30
68190208: 29 918 40 576 8 8 8 8
21470713: 1 7 2 3 200 5 2 11 359
309386: 3 72 3 1 6 41
88555437: 72 696 19 81 93
692826037754: 766 4 663 899 5 2 54
88288240327202: 6 6 65 539 57 61 7 20 4
6481223: 646 9 9 3 145 4 72
37018831358: 671 7 6 91 31 358
185508656: 2 14 9 371 4 14 5 93 1 4
60076539: 4 150 760 39 3 491 5
349331: 2 3 27 317 329
6527: 7 1 7 4 7 5 5 2 6 50 1 54
582802573: 321 516 6 284 2 245
12151573: 5 92 44 3 9 663 551 9 6
3265154989: 777 408 9 8 7 2 36 2 3 4
516041069541: 8 2 4 17 72 7 7 1 546 4
1695: 7 5 327 5
17171: 163 5 52 321
177861: 4 94 120 6 3
17432592: 9 870 573 716 12
420355623360: 1 213 7 23 98 19 33 61
572193: 9 26 3 902 655 6
417217: 46 2 27 2 58 83 4 55
2061628: 474 8 2 3 656 978 4
546001430: 6 8 391 637 8 80 22 65
281028055: 3 35 9 3 9 9 8 8 48 33 55
33580: 33 5 68 6 6
723642076: 467 7 973 2 8 412 5 18
47287138632892: 72 749 4 4 405 65 3 90
227860: 37 9 61 6 92 1 4
6571872443: 543 121 9 148 2 443
741867: 5 21 9 81 7
177518571: 8 53 611 1 6 17 862 5 3
3596: 44 299 7 78 79
360138: 9 4 1 665 1 2 497 42 3 9
42509: 23 495 82 6 27
28260834920: 785 36 834 79 7 5 118
263067760: 515 714 40 65 85 6 70
256447296093: 860 200 7 35 864 4 9 2
246840600711: 53 3 735 350 92 3 712
13192021941: 409 7 68 56 9 388 5
15576: 7 40 7 3 3 378 8 390 4
2189253: 46 8 73 4 53
1816444120: 605 4 6 3 6 3 4 2 4 1 2 10
46744143989399: 4 6 74 414 3 98 7 2 399
1255715008872: 9 872 2 3 5 8 69 7 8 87 2
118404: 885 12 941 279 4
404222: 1 9 5 389 2 21
154879: 1 580 72 79 39 3
3359259415: 646 26 29 7 2 15
4538379: 3 8 529 233 8 4 513
915: 4 1 640 5 265
581101: 978 3 2 99 8 161
83836120: 20 94 50 94 41 2 72 8
2033775: 38 539 61 99 9 9
692410: 692 3 60 48 5
194576: 304 4 8 8 2
620550: 2 5 5 8 64 9 3 562 9 7
7624704956: 3 93 64 264 8 96 958
964319157: 147 3 78 35 74 84
627487938: 8 2 7 641 7 938
162785716: 37 6 6 3 7 6 3 9 1 4
9445586101: 6 8 8 3 35 45 7 6 6 4 102
539240: 9 21 9 7 65
389898820815: 8 5 538 4 6 3 4 3 601 8 7
10363: 42 856 6 132 1
1039848290: 6 3 26 781 102 1 11
140532: 193 151 13 8 8 574 6
5068: 15 1 7 44 25 423
15985935: 81 8 3 1 9 665
1041709883: 4 795 8 7 1 7 2 2 9 6 646
1432651301: 102 194 724 99 4
4878: 7 114 523 99 5 6 390
4181369637: 4 79 43 880 203
31575685: 4 6 304 7 3 9 3 2 965 8 5
3622: 3 61 3 1 9
982: 99 93 791
27390952984: 22 67 5 5 7 944 980 6 4
184342: 71 88 25 329 14
3392818: 467 24 691 7
10248050597: 2 7 1 5 1 45 2 66 724 9 5
53172521: 870 10 4 61 781 19
11304: 98 3 4 80 9
104258902: 7 7 4 463 7 484 5 82 2 2
5613: 6 19 1 22 117
1148356567: 7 8 274 662 2 745 6 6 6
4084: 5 67 16 7 3
124533: 9 6 5 59 14 2 3 5 8 3 3
2057435762: 74 7 94 74 7 571
6509263: 62 563 280 871 55 37
264982: 325 1 8 42 7 6 2 10
50343: 2 2 44 52 5
28924499: 59 49 84 60 98
8914562171: 6 1 9 9 6 160 5 16 7 3
3969876: 62 8 8 867 946 63
577332: 774 4 492 70 812
7380856: 38 3 30 6 856
159862230: 2 2 8 2 71 46 3 343 7 5 9
103487100: 2 49 51 41 2 977 483 3
2547882725245: 483 5 1 4 145 8 9 524 3
1387400184215: 13 874 100 184 212
10146850566: 241 7 6 2 77 9 6 10 82 6
471205560: 7 89 164 40 49
304928495: 6 813 7 372 95
5476: 67 4 35 39 4 1 4
437171: 261 58 370 634 345
1544843589: 1 544 4 4 3 7 5 9 4 5 645
1148401434: 3 31 77 3 33 133 9 95
67822: 73 5 19 8 344 4 91 479
3534850086174: 72 243 233 3 8 5 739 7
479471892: 9 97 355 61 9
1858976: 592 4 608 4 386
200176098: 85 894 7 6 439
17579: 9 8 3 58 1 3
36768: 8 3 60 86 4 16 8 6
9500988: 579 1 780 28 21
1156896: 48 241 1 8 8
66078: 83 79 6 2 440 6
37342237806: 957 922 441 14 8 423
2135507316: 3 130 68 703 5 2 7 314
24622848: 3 206 2 2 384
517132446: 5 2 518 7 8 9 7 687 6 4 1
26297215017: 1 5 41 4 658 7 5 386 1 9
11323819355: 2 45 73 460 41 33
877788: 94 7 30 8 666
34923962: 9 588 1 60 5 303 972 1
2060156: 5 93 6 913 3 9 75 731
1010573: 4 897 516 604 5 7 2
1153373: 6 9 416 49 619 370
188237471616: 338 3 5 926 3 1 9 6 2 16
351420096: 77 386 3 7 22 8 563
28154770105: 554 8 50 7 25 2 33 1 55
797941714: 931 9 6 7 7 7 4 952 68
17307: 20 213 7 8 7 7 841
278861076: 31 562 2 85 1 3 4 468
939675870639: 989 5 366 945 638
3355236: 1 1 531 732 1 91 20 3 5
303636711: 94 3 41 427 73
4553356517: 417 79 36 30 85 5 3
119833217456: 149 79 152 18 2 8
8647858: 2 91 55 716 785 8
70791495: 6 9 5 1 3 9 1 5 9 385 89 5
58703112937: 3 7 592 1 4 73 2 949
1333781: 5 22 7 3 321 5 5
55088: 449 376 49 63 26
14704: 1 235 3 5 9 8 2 4 747 4 4
141818221948: 468 6 97 6 9 336 3 170
106725235: 275 66 6 98 323 4
935144558: 90 36 72 243 4 45 57
4783996: 4 760 23 993 1
7179142: 74 97 91 9 6 216
17860470: 337 9 14 312 10 9 530
82330587240: 56 4 5 56 7 2 810 4 4 5 6
7624624: 9 486 900 38 236 38
3117225: 7 7 52 32 8 9 89 723 5 4
4533781031: 70 6 86 9 4 742 933 17
1152: 62 5 5 190 287
202477780855: 5 278 6 251 2 97 265 7
33930789: 22 8 31 9 6 8 3 4 1
46868: 46 366 1 7 4 491
2234965: 9 9 253 10 9 8 8 9 6 76
56725: 725 78 7 2 513
413871: 5 17 25 8 68
4411739: 612 901 54 8 7 4
280019599: 62 497 5 4 1 3 9 80 599
139832: 4 9 965 2 343 7 7 79 2
6626869: 599 3 86 64 28 2
22108023: 854 2 9 258 5
149940: 80 69 462 480 1
2333364: 52 223 804 4 44
564496918: 5 748 658 4 9 6 918
7310688: 4 7 1 82 40 4 9 51 21 92
232322688: 6 74 64 9 24 84 32
472649: 2 28 8 20 45 606
4985: 980 2 13 2 5
173748825: 9 48 75 97 419
4032: 53 90 75 6 18
2819352: 73 3 16 711 77 6 19 37
956118: 557 3 5 570 786 8 4
16924517: 2 7 4 67 6 21 984 9 701
92: 9 4 1 57 1
812046062: 7 2 5 4 32 38 96 7 9 581
87867529187: 67 2 7 4 906 6 8 3 8 3 87
28749775: 2 4 2 61 5 82 32 11 49 5
6310651: 983 3 8 8 2 51
5014704: 4 2 747 839 753 2 7 78
15436752: 47 207 327 27 33 3
83562106762: 83 8 9 498 383 2 6 764
60877371: 37 5 688 42 41 17
310856: 677 5 25 6 91
116678676: 1 29 177 4 511
4599: 434 6 88 87 78
1737334: 159 43 4 7 53 657 2 22
512120: 441 3 719 15 9 836 7 4
18168384: 1 7 7 243 971
5436: 424 40 9 734 56
2853540: 30 948 95 39 1
207065: 414 13 5
1387710382: 14 11 9 2 8 6 2 77 9 79
95854: 93 51 3 5 6 8 216 4 4
11476: 98 2 4 110 36
88098: 89 790 1 91 6 3
4650: 77 6 1 22 7
320716: 6 82 41 234 61 82 670
912: 86 7 5 2 41 48 627
164961: 3 674 966 30 92 538 1
138616: 4 3 34 4 835 8 7 2 8
1965: 961 2 45
100926540962: 5 2 9 991 990 6 1 960
3194282223: 195 5 426 400 3 9 57
2377: 885 5 902 520 65
875172675: 2 485 3 9 4 8 6 84 3 2 3 5
3527088: 2 2 38 17 89 32 39 1 6
36414372: 9 749 25 4 1 6 917 8 7 2
1956972: 4 1 7 1 4 4 7 1 728 48 6 2
186714996: 891 7 3 3 7 99 8
8779120: 10 381 1 7 23 20
58735380: 97 89 220 10 6
1546053: 81 320 590 52 6 5 87 6
891089745: 9 521 946 38 5 4
18500736: 2 2 5 925 72 8 9
46556774: 9 33 499 77
506616547829: 7 79 2 5 152 9 1 3 6 2 6
9423: 32 2 9 27 1
249538843: 4 9 13 4 23 5 709 3 41
9677312192: 1 23 224 2 6 5 3 2 180 9
367662: 3 9 1 5 2 1 276 37 8 7 7 8
479671395840: 3 4 91 8 9 2 5 812 46 4 7
2408811: 96 305 11 9 340 4 5 6
16956800: 33 8 950 2 32
461607: 45 985 4 87 9 835 2
776: 1 97 8
13140615: 3 73 2 6 5 47 8 5 5 1 1 9
28824: 1 5 46 3 58 1 3 9 87 1
95810721: 1 94 791 1 18 665 58
117868923: 81 1 97 928 3 5
1068: 86 3 7 41 4 53 874
6282: 1 27 21 66 65 9
7620674: 5 71 20 487 94 93 2
7935824: 7 819 739 22 1 5 13 78
199809421: 694 64 75 9 499 335 5
30580: 305 4 3 36
13500687200: 68 3 266 180 572 7 5 2
127633711135: 1 99 7 8 7 4 8 555 2 8 5 3
194559682: 6 648 5 12 1 2 22 5 679
116522137: 82 19 59 44 1 35 34 4
19715: 98 2 9 7 16
101871: 38 991 99
258511840: 5 42 1 54 709 149 32
2391735493: 32 765 3 7 35 458 34
187570353992: 4 9 9 9 7 7 9 3 4 344 7 49
360374400018: 200 208 625 8 36 5 5 8
2230817787: 4 58 2 2 1 181 7 5 9 1 9 3
401494: 3 4 99 1 938 6 4 6
733544: 4 2 4 8 382 2 8 2 7 8 3 5
77590906330: 8 3 4 76 8 2 42 7 4 68 8
2004866958: 250 6 8 66 933 1 25
533045520: 5 6 6 6 6 3 7 521 8 5 7 6
5413: 8 4 451
3651758346: 942 546 71 10 1 45
1125824227545: 3 3 4 1 8 533 87 5 7 8 6
190513132: 6 24 9 49 6 5 9 3 5 5 4 99
934891: 9 7 26 4 2 8 2 8 82 1 90
1137: 8 43 20 86 688
17531: 89 84 10 221
118321967: 8 9 704 65 6 7 4 3 631 2
638843084623: 1 71 3 7 5 4 5 578 179 1
98230: 29 2 2 1 6 2 90 1 7 64 8
13444932444: 8 42 123 216 95 1 4 2
71659034: 626 1 2 9 25 9 95 8 114
32711009: 26 141 51 15 1 88
1684270: 1 280 7 794 92 1 7 59
29916: 1 86 82 339 6 4
4811820531: 4 82 1 3 4 2 2 90 611 8 4
9867762: 10 1 8 3 1 2 9 4 188 3 3 2
510: 457 24 30
3353882283: 3 93 490 2 2 757 3 1 3 8
61: 5 17 9 1 32
1727: 708 898 26 86 8
223611912: 7 7 3 1 451 86 231 9 3 8
116475838: 8 840 24 549
2156733: 7 8 7 2 4 533 8 1 37 730
49787: 4 8 645 883 258
771230164: 9 2 97 4 1 9 808 2 4 6 6
5275: 105 5 5
69778355889: 802 87 4 2 5 9 5 9 99 91
911554728: 4 5 2 3 9 4 236 93 7 8 5 6
704196331803: 704 1 963 31 802
472914541: 28 67 78 4 9 3 7 9 91 7 9
7257683: 93 868 6 817 89
36471370885: 300 770 3 47 6 2 86
33958632312: 19 992 99 99 248 73
2488243: 4 8 74 4 190
26913521521: 7 8 9 6 9 4 49 6 35 1 67 4
52685: 405 98 23 8 8
4406699117: 5 974 4 4 9 2 5 9 91
795088373103: 158 978 39 67 4 6 21 5
305130396: 9 5 1 59 3 347 9 67 12
531: 47 3 7 1 1 9
1192268044384: 3 871 88 35 4 435 4 31
6392322: 7 63 351 7 8 251 44 27
69739288: 8 71 7 4 8 84 4
523483: 87 2 3 5 2 91 2 692
802030: 6 2 81 86 22 30
626316838: 41 201 38 2 419 416
18023805: 969 31 6 60 42
2762443: 15 64 777 45 1 204 4
71441: 87 81 96 9
93838674: 6 7 55 7 155 70 9 97
7306479: 3 2 1 283 9 63 9 7 9 5 8
314885: 9 34 8 8 12 70 6
4845827: 484 5 102 697 31
22788228: 418 9 8 1 68
135358192800: 7 2 3 1 5 4 949 8 5 80 9
1546: 4 51 96 2 1 26 3 909 7
361176914: 3 848 2 49 7 2 2 8 2 914
9544257: 7 7 9 42 3 2 7 5 546 27
526: 65 8 2 4
1932693441: 53 67 7 8 9 4 29 9 780 1
821715: 33 83 3 14
1810654: 22 81 975 556 321
415368: 31 3 735 2 54
2650: 39 79 21 295 96 5
3277842795: 8 69 22 4 6 2 5 5 3 613
787763809: 692 4 8 363 53 6 35 49
140345412505: 296 4 947 24 43 58 5
397671263: 9 1 3 1 57 6 8 5 4 3 126 3
2875941: 4 603 5 44 47 8
4621566793294: 8 932 452 5 22 61 853
8968000: 467 8 59 32 3
6027428: 5 675 352 423 6
1724: 8 2 12 694 46
392769: 9 6 907 5 1 1 39 5 3 3 9
3925: 759 4 1 61 827
1486822: 82 594 5 9 17 3 2
2400: 6 7 143 90 8
4286544: 347 9 807 1 546
3307871: 3 4 4 4 6 6 72 2 285 23 7
398278260: 3 7 81 6 9 7 526
59250: 6 93 623 28 79
122906054: 30 884 64 3 92 7 53
32646: 3 1 627 9
2980467454: 8 8 9 9 3 3 4 46 7 440 5 9
55943811099: 530 535 758 770 2 9 9
2168287875: 6 86 257 2 42 7 5
481195320: 789 790 772
62339349: 4 1 8 930 8 9 3 16 9 3 2 4
7157155545: 3 15 3 973 5 4 3 5 55 48
210528982: 4 9 9 32 521 57 866 52
1545266035: 61 62 6 32 5 680 9 24
51739: 9 5 2 7 82 79
6102859: 60 181 756 90 8 3 76
10159693192: 4 27 33 114 721
214575225: 8 51 6 4 9 837 675 9 5 9
7028944: 47 7 4 3 9 7 1 51 2 376
23322867: 9 49 29 28 4 574 7
902118625817: 883 8 759 94 625 819
713256123099: 742 155 47 961 9 1 97
1755816105888: 698 3 776 796 351 3
396663497: 1 983 2 634 97
1348244080: 65 768 205 78 1
462274: 248 8 233
61266: 8 7 87 6 69
5882741765: 1 7 3 5 3 1 427 2 4 8 8 8
766181250: 485 29 811 771 15 50
1716743769: 58 8 701 754 7 308 69
21777: 2 9 3 5 65
1553336: 56 295 94 1 393 59
40332646896: 873 35 22 781 6 6
4110: 35 5 80 156 754
37564007116818: 93 910 8 5 7 1 116 818
26127012: 9 24 1 7 4 98 4 2 7 3 33 9
12548006988763: 979 1 1 4 2 86 149 763
636520546: 998 1 4 7 7 425 4 77 85
14145768: 829 4 7 4 651 4 889
8725165: 9 173 5 903 6 8 3 65
474882020: 448 53 101 5 4
124342128: 983 5 871 614 28 35 8
358665062: 5 3 80 8 1 1 8 8 337 3 6
669561657: 3 28 2 607 2 3 6 1 656
117632: 8 3 208 555 4
1220055: 217 56 7 40 39 119
205348861: 9 56 3 716 61
8410710: 5 64 4 8 98 7 363
7928792: 376 46 8 80 3 4 3 3 764
5799083120393: 3 5 6 47 4 7 170 7 7 83 5
107463712: 9 6 1 6 60 9 5 9 9 2 8 67
10207: 91 1 33 428 549
43330935: 8 9 53 7 68 947 82 3
19476019: 1 9 3 1 72 94 3 7 6 4 34
284580: 15 8 1 20 9
2144840841: 57 38 505 9 99
22349258705: 19 1 26 5 9 1 732 8 5 8
487325080187: 39 935 650 160 38 5
24929138: 1 395 91 18 932
65799405: 5 3 1 263 435
2216: 82 4 6 24 8
980777690: 954 220 584 835 50
561801738: 1 4 50 8 15 4 325 673 8
1490988: 93 2 8 2 987
7942059112: 7 9 1 1 3 8 5 5 4 582 9 12
4180933171: 830 6 5 93 260 54 3 27
330636: 715 387 13 3
1069672872524: 1 298 9 795 7 5 2 252 4
5186234: 5 1 794 18 50 37
5016205: 722 43 6 426 1 4 7 1 56
258833147: 4 8 7 6 548 513 23
28645434967: 203 1 61 14 25 9 967
9181353: 69 98 751 1 351
4124314800: 66 7 8 687 772 190 9 6
291900470: 6 7 3 6 2 525 2 2 61 9
4665835983: 170 296 58 35 983
30415786635: 713 864 927 394 108
346694957: 385 21 561 42 9 531
76864: 70 6 864
127218604: 18 7 8 3 96 14 8 5 2 2 6 2
98043728: 4 3 79 5 1 8 19 8 6 9 2 51
1125553: 29 83 55 52 3
142859: 9 51 150 3 205
8996988138: 493 389 943 8 65 5 4 7
32707052: 6 51 5 5 8 4 6 218 3 3 5 2
4186878922: 41 7 74 94 73 5 902 20
50607732: 3 3 132 3 57 9 113 43 3
1318255: 12 186 8 59 905
320484960: 6 1 707 6 1 914 487
2068225: 3 8 9 44 227
79076: 85 3 310 26
13952270: 29 979 64 137 2 95
106877774: 2 490 37 93 6 113 567
3846: 3 1 8 37 1 7 21 7 73 149
13619850960: 25 28 444 860 673
2074682368: 3 226 8 4 226 2 5 8 5 65
7226571570: 722 182 91 384 1 567
900282: 89 9 217 988 77
1127715: 6 97 5 787 4 76 816 3
16058952397: 35 608 392 741 394
26843: 886 8 4 3 3
35145018: 1 66 39 290 50 19
1278: 93 534 2 15 9
24038: 893 521 17
196530656: 4 1 721 784 3 956 8 7
47772498: 4 7 5 3 748 6 8 7 15 4 9 9
8610: 70 4 11 2 795 69
423060737457: 4 8 7 2 3 54 3 2 1 886 9 3
63375360: 75 109 77 16 96 5
128980522089: 8 475 3 2 8 418 2 829 2
7945: 5 5 6 843 8
8684275286: 1 784 83 421 6 52 88
3714: 33 4 11
110467308: 5 835 86 819 18 25 84
297205: 7 67 102 342 4
61361: 2 3 2 7 2 361
22550147294: 3 186 4 7 46 5 36 823 4
1052927614392: 2 1 5 564 4 3 3 718 393
3828: 3 58 417 8 7
9729036288: 656 4 16 314 82 9
5831042160: 915 619 3 834 4 5 514
10047756640: 8 301 4 2 7 6 8 11 8 388
34334730: 51 440 1 90 17
2355371884: 7 7 8 1 5 3 2 3 7 184 4 4
7720: 5 69 7 4 433 1 9 8
508919: 92 204 79 1 3 2 9 5
2749463626: 642 921 5 465
148277603765: 1 5 43 40 7 4 39 8 429 5
6912: 81 51 84 2 55 89 12
2519958: 7 304 32 8 253 3 9 66
68495: 42 634 7 38 95
37935797473371: 76 176 3 498 73 368
4088514: 20 460 1 85 14
42340486560: 727 7 104 4 2 1 6 5 57
93889045874: 7 7 3 3 722 4 7 9 8 5 873
111628894: 29 375 84 38 702
1836669: 5 4 34 602 68
127205: 9 10 8 4 3 893 8 3 5 8 1 5
10169671: 1 72 7 6 997 8 1 46 4 3 2
237605921214087: 62 52 7 874 38 140 87
37392: 1 5 276 175 82
33961623: 1 6 1 6 99 3 61 543 6 71
37304: 8 4 5 620 65 2 38
328923190: 876 126 113 7 4 415
9004522: 852 15 2 21 352 8 2
6277: 6 274 4
799: 18 5 3 7 5 3 4 8 4 7 7 305
815: 5 567 75 167 1
1907156: 7 55 29 4 2 4 3 733 5 6
54232722: 8 11 1 1 12 3 3 6 51 438
90356: 6 53 204 65 98
80393954535: 6 980 8 699 3 9 815
585333000: 81 1 6 8 557 1 4 7 6 3 7 3
1740698240: 1 89 16 4 1 8 19 8 944 5
27080469199: 147 5 997 177 196
397655: 4 80 674 4 54
32581186: 58 546 913 14 4 3
1411288: 329 6 788 5 1 50 5 7 5 3
686822508: 6 837 3 29 455 10
14329614: 37 387 10 540 74
900648672: 172 596 9 8 44 89 37
12010046: 6 8 72 100 47
51520200: 831 9 19 27 613 1
44168970: 72 20 6 8 1 2 77 67
53032: 529 796 8 1 4
88279: 5 38 7 293 86
37669257997338: 570 7 463 33 292 1 66
37263336: 423 4 47 22 4
1953126: 196 1 2 2 4 411 3 7 8 3
18262: 25 181 88 80 55
745577968: 9 31 27 70 2 4 5 8 7
325718593204: 3 1 6 3 7 1 8 3 9 35 132 2
70183: 7 5 92 597 83
292206: 8 528 2 973 5 31
35684388: 9 6 531 4 7 9 1 5 7 8 798
4518001568: 8 4 4 3 3 9 900 4 1 563 6
353907: 69 907 3 870 5 6
14174170: 141 735 60 582 28
4579: 89 80 9 5 3
905743293: 17 4 3 57 9 922 48
4721355: 3 4 6 13 6 8 7 2 8 15 853
28300777: 6 2 7 4 4 3 9 94 4 38 97 8
3059337317: 305 44 49 373 17
123832907: 800 5 7 762 8 412 5 2 6
189634: 9 9 9 624 7
53083923: 906 59 13 852 58 1
117861384016: 5 46 14 5 2 6 8 8 5 5 8 17
1670110: 25 95 542 6 25 54 53
18266750880: 8 28 98 20 86 69 478
846: 754 3 7 6 74
91230: 565 325 22 30
21602109: 878 1 82 6 3 833
383: 6 1 2 178 2 11
4640341196: 5 58 4 4 3 3 99 5 4 3 96
295: 2 7 35 7 5 15
25640: 60 7 42 146
2324: 7 2 7 4 852
2106855: 1 918 527 243 5 6 15
1096879615: 9 1 38 52 20 61 792
206838115: 2 7 2 7 42 7 94 1 7 9 2 5
892: 838 53 1
37042143372: 1 38 45 81 549 26 386
13608260: 9 7 9 3 63 260
10296568836: 260 11 15 801 6 6
1152012: 2 7 410 450 12
15670: 9 174 9
378879: 428 87 522 6 530 762
63217413002: 7 7 10 61 7 1 1 5 3 350 3
214357346: 9 9 2 3 3 9 527 5 9 5 2 6
6384: 1 5 860 5 42 7
3660322: 2 687 53 8 8 1 770 9 20
597992800: 59 79 878 49 1 8 8
2086695: 3 1 8 2 164 1 6 1 3 195 3
56275146474: 7 1 82 572 903 88 71
5878173: 9 97 2 615 9
256125: 69 157 24 3 57 13 112
63613676031: 345 710 62 53 49 17
6041746627: 6 65 6 3 180 1 6 77 25 5
445082: 50 9 4 7 75 92 141 9 5
3336568969: 11 93 3 1 605 537 7 9
14476045838: 720 220 154 45 8 3 8
25791150: 73 65 2 37 350
1770: 4 18 8 2 7
634521698: 96 816 81 89 9
766610: 7 35 29 2 609
165288: 99 8 89 88 6 97
122461717: 2 657 224 269 8 37 5
49274709: 8 61 4 71 709
156370725697: 1 771 2 9 3 3 2 75 5 6 9 6
135450075: 306 97 8 1 42 10 73
178096158: 7 471 686 391 54
37098919: 1 2 6 539 2 1 7 45 1 8 2 2
564755082: 829 68 103 508 2
15091: 84 7 590 978 7
5925156: 4 80 5 6 7 5 7 443 95 8
227132981304: 639 235 47 7 9 1 9 2 3 4
83734: 4 2 3 7 36
4764348248: 231 851 16 64 642 44
201359438581: 33 9 429 677 5 580 1
5382: 32 497 1 9 3
89850: 46 810 70 866 5 50
7095185620: 2 18 2 83 9 388 9 1 34
898628: 89 340 93 429 8
4521335: 2 988 456 2 691 4
825553: 527 522 3 216 56
1437: 6 7 492 737 196
6349783608: 2 98 268 522 216 63
26307: 47 42 204 4 36 79
2664689: 4 37 46 3 295 96 88
517476672: 699 24 5 28 74
906139989: 15 59 62 559 98 8 3
101621401: 3 4 99 29 42 6 841 7
174668041: 291 11 339 3 3 2 1
499516611066: 5 3 6 3 6 238 6 7 55 1 6 3
656734: 5 789 741 21 7 9 34
2964812: 3 4 7 2 36 1 11 813
457793: 526 17 130 8 791 39 5
324783326229: 32 474 9 34 32 62 29
714670: 42 17 552 60 9 46
174857716: 6 9 146 8 734 1 9 18 2 9
22400846: 350 64 843
9498234307: 4 12 966 709 23
16680905: 9 9 156 7 3 17 6 6 4 8 4
405: 9 9 5
4565438: 913 1 5 4 37
214448709: 670 13 423 7 318
2056320: 6 854 62 7 247 378
28709528: 3 580 8 550 57 75 9 8
12101046387: 5 1 86 7 4 3 7 3 638 5 2
9550: 52 7 992 7 58
8347014: 7 32 5 92 9 9 331 443
27345853945: 9 202 2 3 8 3 3 8 4 649 3
154494235766: 772 469 2 1 777 6 5 3 2
55637839247: 6 8 2 44 955 8 7 5 9 93 4
3395211904: 285 9 77 53 415 224
410136: 51 26 7 8
22526624126: 2 555 82 778 854 6
2985869706: 46 9 70 8 5 7 8 7 6 90 9
3423438677: 714 705 958 346 5
784310979: 784 310 89 8 9
2859878751: 3 96 3 36 48 8 37 9 305
900: 38 7 1 4 5
30425338: 30 4 25 33 8
567294: 4 702 3 12 8
33541379: 110 571 6 89 64 775
494363134: 555 4 620 12 89 886
71527: 3 6 5 3 8 6 1 7 12 5 8 7
46980046: 53 721 96 540 43
37206236963: 7 7 88 94 6 9 83 1 61 5 3
50976954: 5 2 2 80 45 37 11 87 14
5203315048: 1 63 2 74 61 27 3 5 50
1939803185: 969 901 59 2 6
1028599911631: 118 20 2 97 1 749 87 1
91641646160: 9 424 43 62 472 206
4808181291: 2 978 9 889 26 12 93
357338008: 706 3 504 8 3 2 9 6 789
81364559: 800 13 56 8 556
1517735009: 1 6 414 291 923 787
10942: 2 2 130 72
2927: 74 5 3 8 1 31 9 646
21363940: 72 22 73 3 49 829 260
1075962223: 21 512 7 615 53 670
91216741: 912 1 30 37 41
3020021513: 749 56 686 8 458 9 2
3412491525: 28 57 29 4 8 912 3 23
586986542: 34 36 81 832 2 7 8 7 68
3985200: 3 3 3 616 9 118 4 9 45
25153680: 82 71 3 1 60 8 3 39 24
5121: 557 3 8 1 9
4361404380: 9 72 779 4 9 6 6 2 5 12
4633574: 1 8 52 2 26 4 9 4 4 7 6 41
2500: 10 3 62 200 7 433
205765071: 237 599 5 866 4
475225461: 938 7 336 6 687 90 81
67637: 67 633 6
62118081357: 1 2 9 1 90 290 4 5 2 4 90
3666: 3 58 7 8 8
149245: 4 382 4 19 718 5 87 28
561006667: 82 5 68 66 6 6
83570460265375: 92 6 318 188 547 5 85
71579598: 29 75 67 329 55
108468786: 27 117 4 747 42
108885688319: 1 3 7 7 770 5 4 2 88 320
274800836: 5 60 2 6 49 4 47 435 7 9
161022283: 38 7 604 358 232 51
19692: 41 990 933 9 43
1814645: 9 270 89 7 85 695
5522958: 9 3 9 6 1 63 769
14581981: 11 9 6 9 6 8 2 7 4 60 63
150150: 5 4 90 3 69 5 18 6 72
34959356: 368 3 678 22 14 6 1 1 3
2325598: 48 57 850
13630671514: 1 45 3 4 9 526 31 171 3
83325934080: 8 7 8 9 7 182 7 6 32 9 1
37047437: 4 583 9 777 2 1 9 10 4 1
2664496: 98 65 9 7 9 3 709
2768330498: 1 893 31 30 498
865227: 50 2 57 167 33
5902050651: 843 1 487 1 7 7 1 48 54
7499664484: 832 694 602 9 4 84
7952436: 770 1 2 233 6 1 1 436
8294452: 2 9 3 8 66 5 1 5 41 8 7 2
6456627216: 4 3 9 26 4 86 3 8 544 1 8
2802: 255 2 169 9 4 48 2
699018: 2 7 2 6 6 353 7 5 4 39
2189890971124: 92 980 9 785 704 2 3 1
33192972: 646 99 519 826 20
6335442: 2 6 564 13 3 4 1 2 96 6
8535690: 1 866 1 2 9 6 2 9 5 9 3 90
5936091: 89 900 3 49 6
1429232: 79 7 8 626 9 500 112 7
12011121824: 15 8 11 12 1 824
+84
View File
@@ -0,0 +1,84 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
"regexp"
"strconv"
"strings"
)
func randomOperator(equation []int) [][]int {
combinationsTotal := math.Pow(3, float64(len(equation)-2))
combinations := [][]int{}
for i:=0;i<int(combinationsTotal);i++ {
combination := strconv.FormatInt(int64(i), 3)
combinationSSlice := strings.Split(combination, "")
prepend := len(equation) - 2 - len(combinationSSlice)
if prepend>0 {
for j:=1;j<=prepend;j++ {
combinationSSlice = append([]string{"0"}, combinationSSlice...)
}
}
combinationISlice := []int{}
for j:=range combinationSSlice {
combinationInt, _ := strconv.Atoi(combinationSSlice[j])
combinationISlice = append(combinationISlice, combinationInt)
}
combinations = append(combinations, combinationISlice)
}
return combinations
}
func calcResult(tillnow, next, operator int) int {
if operator == 0 {
return tillnow + next
} else if operator == 1 {
return tillnow * next
} else {
// find number of digits
digits := 0
helper := next
for helper > 0 {
helper = helper/10
digits++
}
return tillnow*int(math.Pow(10,float64(digits)))+next
}
}
func main() {
file, _ := os.Open("test")
defer file.Close()
scanner := bufio.NewScanner(file)
regexNumber := regexp.MustCompile(`[0-9]+`)
equations := [][]int{}
randomOperators := [][][]int{} // []equation []operators []operator
for scanner.Scan() {
line := scanner.Text()
equationStrings := regexNumber.FindAllString(line, -1)
equationInts := []int{}
for i := range equationStrings {
equationInt, _ := strconv.Atoi(equationStrings[i])
equationInts = append(equationInts, equationInt)
}
equations = append(equations, equationInts)
randomOperators = append(randomOperators,randomOperator(equationInts))
}
result := 0
for i := range equations { // for each equation
for j := range randomOperators[i] { // for each random operator corresponding to the equation
calculations := equations[i][1]
for k:=2;k<len(equations[i]);k++ {
calculations = calcResult(calculations,equations[i][k],randomOperators[i][j][k-2])
}
if calculations == equations[i][0] {
result = result + equations[i][0]
break
}
}
}
fmt.Println(result)
}
+9
View File
@@ -0,0 +1,9 @@
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
+50
View File
@@ -0,0 +1,50 @@
...........V..................b.g.................
..................................g...............
.............................c....................
............T........Z.......P....................
.x........................VP......................
..........................PH......................
.................H.....Z.......g.R................
......f............T.V....b......A................
......................P...........................
.......f..................A.............R.........
........x..............T.......l..H.....A.c.......
..k..x..............Z.............................
........5....S...............0.A..................
.............N....L...............................
.f............................T........s.....N....
..................l..........bH.......tc.R..N.....
......Z...6......n......l...k.N...0...............
...........g....S......l.r.................t..s...
..L................b.......K..t...................
................5....n........0.............c.....
.....L......n............................E........
.k.......L................m.....................Es
..............St.....5....Rm......................
............6..5...................3...0..........
...........k.................W........3...........
................n......K...E....2S..........3.....
....................................E....Q........
..........M.....x...............K.................
..h.............................1.................
.6............z..............4...e.........WY....y
........f............a.......Y..y...s.............
...h............r.............v....m..............
.....h.................v....m.....Y.Q.....W3......
.........................Yq....Q.................7
.........6..............7.................9.......
...................X..........y..q.....2..........
............r..............q.....y...........7.8..
..B..............M....4............9..............
...1.......M...X.......CGzp...4..B...2..K.........
.....................z...v....Q.....8...........9.
B.......X.F....rM...v...............2...8..D......
h1..............................7..D.....8....d...
...............F.....................9D....4....d.
..........a......p............F.........W.D......d
.........................G..C...........q.........
...B..................................C...........
.........w..........z....p.....................e..
.a............G....w........p........F........e...
........a...w.....................................
........w...............XC.......G................
+93
View File
@@ -0,0 +1,93 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strings"
)
func findAntennas(layout [][]string, antenna string) [][]int {
antenaPositions := [][]int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == antenna {
antenaPositions = append(antenaPositions, []int{i,j})
}
}
}
return antenaPositions
}
func calcAntiNodes(layout [][]string, node1, node2 []int) [][]int {
x := node1[0] - node2[0]
y := node1[1] - node2[1]
antinodes := [][]int{}
for i:=0;i<len(layout);i++ {
antinode1 := []int{node1[0] + i*x, node1[1] + i*y}
antinode2 := []int{node2[0] - i*x, node2[1] - i*y}
if ! (antinode1[0] >= 0 && antinode1[1] >= 0 && antinode1[0] < len(layout) && antinode1[1] < len(layout)) {
antinode1 = []int{}
}
if ! (antinode2[0] >= 0 && antinode2[1] >= 0 && antinode2[0] < len(layout) && antinode2[1] < len(layout)) {
antinode2 = []int{}
}
if len(antinode1) > 0 {
antinodes = append(antinodes, antinode1)
}
if len(antinode2) >0 {
antinodes = append(antinodes, antinode2)
}
}
return antinodes
}
func main() {
// file, _ := os.Open("test")
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
regexAntenna := regexp.MustCompile(`[^.]`)
antennas := []string{}
layout := [][]string{}
for scanner.Scan() {
line := scanner.Text()
layout = append(layout, strings.Split(line, ""))
// //fmt.Println(line)
foundAntennas := regexAntenna.FindAllString(line, -1)
if len(foundAntennas) > 0 {
antennas = append(antennas, foundAntennas...)
}
}
antennaMap := make(map[string][][]int)
for _, antenna := range antennas {
// //fmt.Println(antenna)
key := antenna
antennaMap[key] = findAntennas(layout,antenna)
}
//fmt.Println(antennaMap)
antinodelist := [][]int{}
for _,v := range antennaMap {
//fmt.Println("key: ", k, "value: ", v)
for i:=0;i<len(v);i++ {
for j:=0;j<len(v);j++ {
if j>i {
//fmt.Println(v[i],v[j])
antinodes := calcAntiNodes(layout, v[i], v[j])
antinodelist = append(antinodelist, antinodes...)
}
}
}
}
//fmt.Println(antinodelist)
antinodeMap := make(map[[2]int]int)
for i := range antinodelist {
if len(antinodelist[i]) > 0 {
key := [2]int{antinodelist[i][0], antinodelist[i][1]}
antinodeMap[key]++
}
}
fmt.Println(len(antinodeMap))
}
View File
Whitespace-only changes.
+12
View File
@@ -0,0 +1,12 @@
............
........0...
.....0......
.......0....
....0.......
......A.....
............
............
........A...
.........A..
............
............
+17
View File
@@ -0,0 +1,17 @@
package main
import "fmt"
func main() {
// Initialize the variable before the loop
value := 0
for i := 0; i < 5; i++ {
// Change its value within the loop
value += i
fmt.Println("Current Value:", value) // Use the variable here
}
fmt.Println("Final Value:", value) // Still accessible after the loop
}