Skip to content

Commit 4e95e88

Browse files
committed
WOrking on Day3. Not done with part 1 yet.
1 parent d313621 commit 4e95e88

File tree

9 files changed

+1872
-8
lines changed

9 files changed

+1872
-8
lines changed

day1/go.mod

Lines changed: 0 additions & 3 deletions
This file was deleted.

day1/main.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,4 @@ func main() {
189189
} else {
190190
exercise2(mychan, fs, lc)
191191
}
192-
// exercise1(mychan, fs, lc)
193-
// exercise2(mychan, fs, lc)
194192
}

day2/go.mod

Lines changed: 0 additions & 3 deletions
This file was deleted.

day3/input.txt

Lines changed: 140 additions & 0 deletions
Large diffs are not rendered by default.

day3/less

Lines changed: 1375 additions & 0 deletions
Large diffs are not rendered by default.

day3/less.txt

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
Exercise 1
2+
Line 0: 18, 0, 0, 748, 0, 0, 617, 0, 0, 476, |
3+
Line 1: 529, 0, 0, 0, 0, 939, 7, 606, 0, |
4+
Line 2: 0, 221, 0, 0, 0, 84, 0, 794, 589, 0, 41, 68, |
5+
Line 3: 380, 0, 0, 105, 749, 968, 908, 603, |
6+
Line 4: 0, 441, 833, 490, 366, 225, 488, 456, 224, |
7+
Line 5: 288, 896, 469, 0, 146, 790, 194, |
8+
Line 6: 730, 250, 359, 0, 138, 49, 713, 342, 604, 676, |
9+
Line 7: 907, 0, 274, 346, 0, 725, 376, 541, 600, 366, |
10+
Line 8: 747, 56, 10, 422, 86, 728, |
11+
Line 9: 486, 349, 696, 850, 906, 831, 539, 195, 202, |
12+
Line 10: 592, 592, 847, 676, 0, 469, |
13+
Line 11: 0, 0, 0, 0, 657, 0, 52, 352, |
14+
Line 12: 994, 0, 0, 48, 835, 791, 654, 75, 523, |
15+
Line 13: 0, 486, 954, 246, 203, 693, |
16+
Line 14: 0, 920, 248, 0, 289, 822, 530, 569, 256, 929, |
17+
Line 15: 0, 616, 462, 0, 757, |
18+
Line 16: 65, 764, 581, 0, 62, 0, 0, 280, 444, 807, 174, 20, 512, |
19+
Line 17: 877, 687, 187, 522, 853, 321, 345, 513, 849, |
20+
Line 18: 635, 380, 77, 44, 484, 65, 886, |
21+
Line 19: 153, 320, 96, 619, 0, 0, 139, 957, 977, 0, 232, 20, |
22+
Line 20: 397, 610, 479, 0, 144, 554, |
23+
Line 21: 0, 927, 384, 714, 286, 799, 733, 832, 815, 187, 0, |
24+
Line 22: 892, 0, 0, 0, 133, 442, 906, |
25+
Line 23: 803, 0, 0, 0, 957, 637, 97, 0, 83, 258, |
26+
Line 24: 55, 435, 930, 143, 475, 675, 709, |
27+
Line 25: 0, 841, 859, 640, 955, 903, |
28+
Line 26: 639, 803, 829, 877, 716, 873, 0, 857, 837, 390, |
29+
Line 27: 994, 749, 718, 174, 138, 697, 0, |
30+
Line 28: 697, 873, 435, 141, 914, 656, 414, 981, 0, |
31+
Line 29: 544, 524, 446, 397, 486, 603, 463, 497, |
32+
Line 30: 0, 412, 273, 218, 0, 708, 899, |
33+
Line 31: 435, 0, 401, 897, 214, 472, 499, 955, 0, 607, 491, 43, |
34+
Line 32: 666, 0, 653, 44, 152, 294, 313, 237, 580, |
35+
Line 33: 989, 954, 0, 488, 90, 495, 697, 0, 594, 981, |
36+
Line 34: 104, 773, 396, 959, 272, 433, 889, 821, 759, 469, |
37+
Line 35: 865, 318, 812, 267, 0, 0, 913, 0, |
38+
Line 36: 132, 699, 0, 468, 651, 424, 270, 765, 53, 965, 19, |
39+
Line 37: 725, 449, 337, 187, 862, 553, 282, 0, 779, 218, |
40+
Line 38: 0, 0, 203, 452, 846, 811, 0, 342, 891, 776, |
41+
Line 39: 567, 689, 619, 0, 847, 236, 833, 0, |
42+
Line 40: 0, 568, 375, 561, 270, 0, 0, |
43+
Line 41: 801, 0, 336, 493, 0, 81, 981, 449, 809, 239, |
44+
Line 42: 87, 510, 20, 684, 387, 132, |
45+
Line 43: 0, 364, 734, 141, 854, 290, 572, 878, 0, 0, 526, 919, 646, |
46+
Line 44: 980, 500, 229, 876, 220, 809, 522, |
47+
Line 45: 0, 374, 194, 660, 172, 774, 367, 452, 0, |
48+
Line 46: 918, 0, 776, 542, 0, 857, 0, |
49+
Line 47: 728, 951, 668, 0, 589, 857, 0, 0, 151, |
50+
Line 48: 262, 95, 878, 563, 642, 586, 638, 933, |
51+
Line 49: 0, 454, 540, 0, 531, 942, 632, 0, 0, |
52+
Line 50: 0, 357, 340, 0, 623, 707, 479, 36, 659, 149, 401, 117, |
53+
Line 51: 0, 0, 156, 747, 602, 748, 565, 93, |
54+
Line 52: 0, 60, 938, 615, 328, 818, 143, 118, 916, |
55+
Line 53: 0, 25, 32, 64, 813, 405, 802, 188, 246, 236, |
56+
Line 54: 0, 426, 74, 0, 0, 764, |
57+
Line 55: 920, 64, 437, 598, 0, 44, 625, 879, 879, 668, 509, 385, 123, 0, 553, 0, |
58+
Line 56: 0, 552, 534, 312, 819, |
59+
Line 57: 779, 0, 582, 264, 564, 561, 811, 943, 68, |
60+
Line 58: 915, 472, 918, 848, 943, 0, 386, |
61+
Line 59: 0, 668, 801, 0, 212, 613, |
62+
Line 60: 208, 302, 313, 0, 237, 11, 551, 569, 717, |
63+
Line 61: 742, 886, 15, 402, 806, 84, 527, 650, 56, 401, 276, 0, |
64+
Line 62: 411, 277, 722, 0, 915, 252, 356, 553, |
65+
Line 63: 2, 0, 922, 605, 403, 316, 0, |
66+
Line 64: 385, 893, 200, 150, 0, 548, 111, 70, 675, 895, |
67+
Line 65: 198, 532, 23, 349, 920, |
68+
Line 66: 387, 0, 0, 580, 397, 720, 0, 628, |
69+
Line 67: 816, 0, 36, 393, 848, 884, 676, 876, 341, 565, 914, 356, 210, |
70+
Line 68: 646, 0, 370, 686, 567, |
71+
Line 69: 94, 414, 18, 861, 0, 24, 875, 693, 320, 864, |
72+
Line 70: 665, 595, 0, 0, 784, 187, 237, |
73+
Line 71: 236, 126, 641, 486, 638, 242, 153, 0, 837, 723, 0, |
74+
Line 72: 0, 114, 661, 0, 626, 796, 28, 579, 367, 78, 929, |
75+
Line 73: 0, 271, 144, 5, 669, 533, 0, |
76+
Line 74: 635, 947, 290, 0, 707, 465, 632, 771, 0, 471, 380, |
77+
Line 75: 114, 89, 699, 416, 365, 131, |
78+
Line 76: 410, 64, 684, 15, 0, 340, |
79+
Line 77: 0, 0, 152, 94, 498, 26, 671, 221, 718, 824, 56, 0, |
80+
Line 78: 0, 707, 0, 839, 790, 192, 181, 836, 287, |
81+
Line 79: 937, 722, 378, 449, 226, 428, 341, |
82+
Line 80: 795, 185, 405, 60, 0, 159, 0, 996, 981, 710, 0, 528, 888, 641, 880, |
83+
Line 81: 806, 545, 467, 289, 681, 86, 326, 664, |
84+
Line 82: 221, 142, 860, 0, 0, 291, 52, 300, 811, |
85+
Line 83: 0, 149, 673, 762, 284, 588, 316, |
86+
Line 84: 373, 290, 665, 552, 51, 105, 162, |
87+
Line 85: 388, 772, 57, 163, 932, 0, 0, 116, 434, |
88+
Line 86: 489, 248, 395, 676, 835, 570, 199, 678, |
89+
Line 87: 0, 713, 952, 479, 379, 83, 0, 919, 486, 0, 0, 468, 720, |
90+
Line 88: 0, 380, 899, 118, |
91+
Line 89: 694, 382, 793, 668, 92, 747, 49, 284, 462, 303, 0, 50, 798, |
92+
Line 90: 146, 642, 880, 79, 0, 885, 0, 780, 663, |
93+
Line 91: 533, 0, 352, 619, 200, 142, 408, 634, 379, 491, 588, 183, |
94+
Line 92: 127, 970, 902, 943, 0, 909, 619, |
95+
Line 93: 640, 459, 446, 0, 313, 509, 473, 0, 0, |
96+
Line 94: 415, 805, 0, 12, 863, 674, 296, 474, 281, 326, |
97+
Line 95: 909, 136, 645, 961, 0, 554, |
98+
Line 96: 0, 0, 166, 429, 96, 568, 684, 186, 958, 678, 466, |
99+
Line 97: 759, 96, 658, 0, 0, 0, |
100+
Line 98: 54, 168, 592, 536, 8, 671, 753, 74, 564, |
101+
Line 99: 0, 728, 764, 804, 0, 0, 94, 27, 0, 644, 209, 485, |
102+
Line 100: 0, 792, 855, 169, 496, 615, 683, 225, 474, 395, |
103+
Line 101: 573, 206, 477, 158, 702, 298, 100, 714, |
104+
Line 102: 0, 769, 27, 691, 0, 0, 980, 28, 727, 201, 545, |
105+
Line 103: 223, 561, 261, 610, 0, 496, 408, |
106+
Line 104: 775, 195, 303, 141, 865, 629, 0, 855, 958, |
107+
Line 105: 407, 0, 22, 0, 605, 0, 160, 743, 163, |
108+
Line 106: 602, 668, 245, 731, 69, 213, |
109+
Line 107: 213, 903, 75, 0, 945, 221, 0, 739, 393, 301, 562, 53, 4, |
110+
Line 108: 164, 0, 580, 0, 0, 828, 536, |
111+
Line 109: 0, 185, 85, 0, 890, 204, |
112+
Line 110: 0, 422, 351, 0, 584, 263, 849, 639, |
113+
Line 111: 307, 897, 28, 49, 0, 72, 544, 974, 214, 55, 347, 0, |
114+
Line 112: 0, 67, 840, 343, 447, 400, |
115+
Line 113: 0, 498, 544, 347, 493, 612, 59, 741, 593, 416, |
116+
Line 114: 369, 577, 690, 770, 983, 160, 623, 248, 437, 0, 275, |
117+
Line 115: 603, 913, 609, 0, 62, 83, |
118+
Line 116: 538, 356, 117, 556, 920, 746, |
119+
Line 117: 483, 197, 0, 210, 92, 982, 0, 848, |
120+
Line 118: 0, 413, 556, 0, 902, 182, 933, 829, 402, |
121+
Line 119: 524, 0, 0, 163, 185, 0, 282, 774, 822, |
122+
Line 120: 340, 373, 649, 0, 289, 0, 0, 939, 0, 0, 0, 778, 550, 0, |
123+
Line 121: 699, 319, 170, 0, 61, 345, |
124+
Line 122: 0, 144, 849, 174, 219, 140, 0, 970, |
125+
Line 123: 0, 0, 819, 305, 413, 95, 589, 0, 0, 0, |
126+
Line 124: 0, 403, 548, 0, 0, 962, |
127+
Line 125: 0, 0, 429, 291, 881, 296, 163, 796, 0, 802, 138, |
128+
Line 126: 983, 809, 417, 999, 0, 322, |
129+
Line 127: 0, 921, 0, 731, 903, 638, 662, 495, 130, 0, |
130+
Line 128: 168, 353, 639, 349, 0, 914, 570, |
131+
Line 129: 695, 679, 958, 0, 369, 44, 964, 548, |
132+
Line 130: 826, 268, 0, 136, 0, 964, 0, 0, 403, 842, 983, |
133+
Line 131: 328, 519, 210, 0, 46, 241, 55, |
134+
Line 132: 855, 199, 0, 849, 764, 294, 0, 0, 885, 434, 0, |
135+
Line 133: 498, 936, 831, 462, 939, 0, 845, 0, |
136+
Line 134: 360, 842, 986, 902, 21, 307, 234, 324, 505, 315, |
137+
Line 135: 42, 474, 919, 0, 674, 713, 27, |
138+
Line 136: 249, 0, 448, 622, 228, 308, 0, 0, 594, 127, 0, |
139+
Line 137: 173, 817, 91, 649, 492, 0, 17, 878, 0, |
140+
Line 138: 0, 0, 402, 610, 549, 853, 96, 779, |
141+
Line 139: 885, 600, 456, 679, 16, 392, 0, |
142+
Sum: 486748

day3/main.go

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"flag"
6+
"fmt"
7+
"os"
8+
"strconv"
9+
)
10+
11+
const (
12+
fnum rune = '0'
13+
lnum rune = '9'
14+
period rune = '.'
15+
)
16+
17+
type Slice struct {
18+
first, last int
19+
}
20+
21+
func getNumbers(line []rune) []Slice {
22+
var slices []Slice
23+
cur := Slice{first: -1, last: -1}
24+
for i, char := range line {
25+
if char >= fnum && char <= lnum {
26+
if cur.first == -1 {
27+
cur.first = i
28+
} else {
29+
cur.last = i
30+
}
31+
} else {
32+
if cur.first > -1 && cur.last > -1 {
33+
tmp := Slice{first: cur.first, last: cur.last}
34+
slices = append(slices, tmp)
35+
cur.first = -1
36+
cur.last = -1
37+
} else if cur.first > -1 {
38+
tmp := Slice{first: cur.first, last: cur.first}
39+
slices = append(slices, tmp)
40+
cur.first = -1
41+
cur.last = -1
42+
}
43+
}
44+
}
45+
return slices
46+
47+
}
48+
49+
func stringToInt(slice string) int {
50+
res, err := strconv.Atoi(slice)
51+
if err != nil {
52+
fmt.Println("Error converting string to int: ", err)
53+
return 0
54+
}
55+
return res
56+
}
57+
58+
func isPartNumber(num Slice, curline []rune, preline []rune, nexline []rune) int {
59+
var lrange, rrange int
60+
if num.first >= 1 {
61+
lrange = num.first - 1
62+
} else {
63+
lrange = 0
64+
}
65+
if num.last < len(curline)-1 {
66+
rrange = num.last + 1
67+
} else {
68+
rrange = num.last
69+
}
70+
if preline != nil {
71+
for i := lrange; i <= rrange; i++ {
72+
if (preline[i] > lnum || preline[i] < fnum) && (preline[i] != period) {
73+
// symbol
74+
if num.first == num.last {
75+
return stringToInt(string(curline[num.first]))
76+
}
77+
return stringToInt(string(curline[num.first : num.last+1]))
78+
}
79+
}
80+
}
81+
if nexline != nil {
82+
for i := lrange; i <= rrange; i++ {
83+
if (nexline[i] > lnum || nexline[i] < fnum) && (nexline[i] != period) {
84+
// symbol
85+
if num.first == num.last {
86+
return stringToInt(string(curline[num.first]))
87+
}
88+
return stringToInt(string(curline[num.first : num.last+1]))
89+
}
90+
}
91+
}
92+
if lrange != num.first && rrange != num.last {
93+
if ((curline[lrange] > lnum || curline[num.first-lrange] < fnum) && (curline[lrange] != period)) || ((curline[rrange] > lnum || curline[rrange] < fnum) && (curline[rrange] != period)) {
94+
if num.first == num.last {
95+
return stringToInt(string(curline[num.first]))
96+
}
97+
return stringToInt(string(curline[num.first : num.last+1]))
98+
}
99+
100+
} else if num.first == lrange && num.last != rrange {
101+
if (curline[rrange] > lnum || curline[rrange] < fnum) && (curline[rrange] != period) {
102+
if num.first == num.last {
103+
return stringToInt(string(curline[num.first]))
104+
}
105+
return stringToInt(string(curline[num.first : num.last+1]))
106+
}
107+
} else if num.last == rrange && num.first != lrange {
108+
if (curline[lrange] > lnum || curline[lrange] < fnum) && (curline[lrange] != period) {
109+
if num.first == num.last {
110+
return stringToInt(string(curline[num.first]))
111+
}
112+
return stringToInt(string(curline[num.first : num.last+1]))
113+
}
114+
}
115+
return 0
116+
}
117+
118+
func Exercise1(input [][]rune) {
119+
fmt.Println("Exercise 1")
120+
var sum, cur int
121+
reader := bufio.NewReader(os.Stdin)
122+
for idx, line := range input {
123+
// fmt.Printf("Line %d:", idx)
124+
slices := getNumbers(line)
125+
fmt.Printf("Line %d: ", idx)
126+
for _, slice := range slices {
127+
// if slice.last != -1 {
128+
// fmt.Printf("%s, ", string(line[slice.first:slice.last+1]))
129+
// } else {
130+
// fmt.Printf("%s, ", string(line[slice.first]))
131+
// }
132+
if idx == 0 && len(input) > idx+1 {
133+
cur = isPartNumber(slice, line, nil, input[idx+1])
134+
} else if idx == len(input)-1 {
135+
cur = isPartNumber(slice, line, input[idx-1], nil)
136+
} else {
137+
cur = isPartNumber(slice, line, input[idx-1], input[idx+1])
138+
}
139+
fmt.Printf("%d, ", cur)
140+
sum += cur
141+
}
142+
143+
if idx > 0 {
144+
fmt.Printf("\n%s", string(input[idx-1]))
145+
}
146+
fmt.Printf("\n%s", string(line))
147+
if idx < len(input)-1 {
148+
fmt.Printf("\n%s", string(input[idx+1]))
149+
}
150+
fmt.Println("\nCheck line above: ")
151+
_, _ = reader.ReadString('\n')
152+
}
153+
fmt.Println("Sum: ", sum)
154+
}
155+
156+
func main() {
157+
var inputfile string
158+
var exercise1 bool
159+
flag.StringVar(&inputfile, "input", "input.txt", "Input file")
160+
flag.BoolVar(&exercise1, "exercise1", true, "Exercise 1 is True, Exercise 2 is False")
161+
flag.Parse()
162+
163+
file, err := os.Open(inputfile)
164+
if err != nil {
165+
fmt.Println(err)
166+
os.Exit(1)
167+
}
168+
defer file.Close()
169+
170+
scanner := bufio.NewScanner(file)
171+
scanner.Split(bufio.ScanLines)
172+
height, width := 0, 0
173+
for scanner.Scan() {
174+
height++
175+
if charlong := scanner.Text(); width != 0 && width < len(charlong) {
176+
width = len(charlong)
177+
} else if width == 0 {
178+
width = len(charlong)
179+
}
180+
}
181+
file.Seek(0, 0)
182+
scanner = bufio.NewScanner(file)
183+
scanner.Split(bufio.ScanLines)
184+
myrune := make([][]rune, 0)
185+
var counter int
186+
// fmt.Println("My Runes:")
187+
for scanner.Scan() {
188+
myrune = append(myrune, make([]rune, 0))
189+
temp := scanner.Text()
190+
// fmt.Println("Temp: ", temp)
191+
for _, char := range temp {
192+
myrune[counter] = append(myrune[counter], char)
193+
}
194+
counter++
195+
}
196+
197+
if exercise1 {
198+
Exercise1(myrune)
199+
} else {
200+
fmt.Println("Exercise 2")
201+
}
202+
}

day3/testinput.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
467..114..
2+
...*......
3+
..35..633.
4+
......#...
5+
617*......
6+
.....+.58.
7+
..592.....
8+
......755.
9+
...$.*....
10+
.664.598..

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/jakeecolution/adventofcode2023
2+
3+
go 1.21.1

0 commit comments

Comments
 (0)