Skip to content

Commit 7ea7fc0

Browse files
committed
chore:(2020-14/angch): Cleanups
1 parent 0dd9118 commit 7ea7fc0

1 file changed

Lines changed: 15 additions & 63 deletions

File tree

2020-14/angch/main.go

Lines changed: 15 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -18,52 +18,34 @@ func do(fileName string) (int, int) {
1818
defer file.Close()
1919
scanner := bufio.NewScanner(file)
2020

21-
memory := make(map[int]uint64, 100)
22-
mask1 := 0
23-
mask2 := 0
21+
memory := make(map[int]uint64)
22+
mask1, mask2 := 0, 0
2423
for scanner.Scan() {
2524
l := scanner.Text()
2625

2726
tok := strings.Split(l, " ")
28-
mask := ""
29-
sp := 0
30-
dst := 0
27+
mask, sp, dst := "", 0, 0
3128

32-
if len(tok) < 2 {
33-
continue
34-
}
3529
if tok[0] == "mask" {
36-
mask = tok[2]
30+
mask, mask1, mask2 = tok[2], 0, 0
3731
// log.Println("mask", mask)
38-
mask1 = 0
39-
mask2 = 0
4032
for _, v := range mask {
33+
mask1 <<= 1
34+
mask2 <<= 1
4135
switch v {
4236
case 'X':
43-
mask1 <<= 1
44-
mask2 <<= 1
4537
mask2 |= 1
4638
case '1':
47-
mask1 <<= 1
48-
mask2 <<= 1
4939
mask1 |= 1
50-
case '0':
51-
mask1 <<= 1
52-
mask2 <<= 1
5340
}
5441
}
55-
// log.Println("masks ", mask1, mask2)
5642
} else {
5743
fmt.Sscanf(tok[0], "mem[%d]", &sp)
5844
fmt.Sscanf(tok[2], "%d", &dst)
59-
// log.Println(sp, dst)
6045
val := (dst & mask2) | mask1
6146
memory[sp] = uint64(val)
62-
// log.Println(val)
6347
}
64-
// fmt.Sscanf(l, "%s %d", &opcode.Op, &opcode.Arg)
6548
}
66-
// log.Println(memory)
6749

6850
for _, v := range memory {
6951
ret1 += int(v)
@@ -81,83 +63,53 @@ func do2(fileName string) (int, int) {
8163
defer file.Close()
8264
scanner := bufio.NewScanner(file)
8365

84-
memory := make(map[int]uint64, 100)
66+
memory := make(map[int]uint64)
8567
masks1 := make([]int, 0)
8668
masks2 := make([]int, 0)
8769
// masks3 := make([]int, 0)
8870
for scanner.Scan() {
8971
l := scanner.Text()
9072

9173
tok := strings.Split(l, " ")
92-
mask := ""
93-
sp := 0
94-
dst := 0
95-
96-
if len(tok) < 2 {
97-
continue
98-
}
74+
mask, sp, dst := "", 0, 0
9975
if tok[0] == "mask" {
10076
mask = tok[2]
101-
// log.Println("mask", mask)
10277
masks1 = make([]int, 1)
10378
masks2 = make([]int, 1)
104-
// masks3 = make([]int, 1)
10579

106-
for k, v := range mask {
80+
for _, v := range mask {
81+
for k := range masks1 {
82+
masks1[k] <<= 1
83+
masks2[k] <<= 1
84+
}
10785
switch v {
10886
case 'X':
109-
for k := range masks1 {
110-
masks1[k] <<= 1
111-
masks2[k] <<= 1
112-
// masks2[k] |= 1
113-
}
11487
masks1 = append(masks1, masks1...)
11588
masks2 = append(masks2, masks2...)
11689

117-
for k = len(masks1) / 2; k < len(masks1); k++ {
90+
for k := 0; k < len(masks1)/2; k++ {
11891
masks1[k] |= 1
119-
// masks2[k] &= 1
12092
}
121-
// for k = 0; k < len(masks1)/2; k++ {
122-
// // masks2[k] |= 1
123-
// }
12493
case '1':
12594
for k := range masks1 {
126-
masks1[k] <<= 1
127-
masks2[k] <<= 1
12895
masks1[k] |= 1
12996
}
13097
case '0':
13198
for k := range masks1 {
132-
masks1[k] <<= 1
133-
masks2[k] <<= 1
13499
masks2[k] |= 1
135100
}
136101
}
137102
}
138-
// for k := range masks1 {
139-
// log.Printf("mask %b %b\n", masks1[k]+1024, masks2[k]+1024)
140-
// }
141-
// log.Println("masks ", masks1, masks2)
142103
} else {
143104
fmt.Sscanf(tok[0], "mem[%d]", &sp)
144105
fmt.Sscanf(tok[2], "%d", &dst)
145-
// log.Println(sp, dst)
146-
// val := (sp & mask2) | mask1
147-
val := dst
148106

149-
// log.Println("sp is ", sp)
150-
// oldsp :=
151107
for k := range masks1 {
152108
sp2 := (sp & masks2[k]) | masks1[k]
153-
// log.Printf("sp %d %b %b\n", sp2, masks2[k], masks1[k])
154-
memory[sp2] = uint64(val)
109+
memory[sp2] = uint64(dst)
155110
}
156-
// log.Println(val)
157111
}
158-
// fmt.Sscanf(l, "%s %d", &opcode.Op, &opcode.Arg)
159112
}
160-
// log.Println(memory)
161113

162114
for _, v := range memory {
163115
ret1 += int(v)

0 commit comments

Comments
 (0)