Skip to content

Commit 361ee50

Browse files
committed
13 part1
1 parent 920406e commit 361ee50

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/13/solve.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const parse = (input: string): Packet => {
5252
return packet
5353
}
5454

55-
const compare = (packet1: Packet | undefined, packet2: Packet | undefined, iterator1: number = 0, iterator2: number = 0): boolean | undefined => {
55+
const compare = (packet1: Packet | undefined, packet2: Packet | undefined, iterator1: number = 0, iterator2: number = 0, single1: boolean = false, single2: boolean = false): boolean | undefined => {
5656
const data1 = packet1?.data
5757
const data2 = packet2?.data
5858
if (data1 === undefined) {
@@ -61,29 +61,33 @@ const compare = (packet1: Packet | undefined, packet2: Packet | undefined, itera
6161
return false
6262
}
6363
console.log('compare levels', packet1?.level, packet2?.level)
64-
const len1 = data1.length
65-
const len2 = data2.length
64+
const len1 = single1 ? 1 : data1.length
65+
const len2 = single2 ? 1 : data2.length
6666
let it1 = iterator1
6767
let it2 = iterator2
6868
let result: boolean | undefined = undefined;
6969
while (true) {
70+
console.log(it1, len1, it2, len2, result)
7071
if (it1 === len1 && it2 === len2) {
7172
return result
7273
}
73-
if (it1 === len1) {
74-
return true
74+
if (it1 === len1 && it2 < len2) {
75+
return result === undefined ? true : false
7576
}
76-
if (it2 === len2) {
77+
if (it1 < len1 && it2 === len2) {
7778
return false
7879
}
7980
const tmp1 = data1[it1]
8081
const tmp2 = data2[it2]
8182
if (tmp1 instanceof Packet && tmp2 instanceof Packet) {
83+
console.log('next packet', 'next packet')
8284
result = compare(tmp1, tmp2)
8385
} else if (tmp1 instanceof Packet && !(tmp2 instanceof Packet)) {
84-
result = compare(tmp1, packet2, 0, it2)
86+
console.log('next packet', it2)
87+
result = compare(tmp1, packet2, 0, it2, false, true)
8588
} else if (!(tmp1 instanceof Packet) && tmp2 instanceof Packet) {
86-
result = compare(packet1, tmp2, it1, 0)
89+
console.log(it1, 'next packet')
90+
result = compare(packet1, tmp2, it1, 0, false, false)
8791
} else if (typeof tmp1 === 'number' && typeof tmp2 === 'number') {
8892
console.log('\t', tmp1, tmp2)
8993
if (tmp1 < tmp2) {
@@ -95,8 +99,8 @@ const compare = (packet1: Packet | undefined, packet2: Packet | undefined, itera
9599
throw 'something went wrong'
96100
}
97101

98-
if (!!result) {
99-
return true
102+
if (result === true || result === false) {
103+
return result
100104
}
101105

102106
it1 += 1
@@ -134,6 +138,10 @@ class Solve13 extends FileReader {
134138
pair.part1 = parse(data[rowIndex])
135139
} else if (+rowIndex % 3 === 1) {
136140
pair!.part2 = parse(data[rowIndex])
141+
if (pairs.length === 60) {
142+
console.log(data[+rowIndex-1])
143+
console.log(data[rowIndex])
144+
}
137145
}
138146
}
139147

@@ -144,8 +152,8 @@ class Solve13 extends FileReader {
144152
let result = 0
145153
pairs.forEach((p: Pair, index: number) => {
146154
const cmp = compare(p.part1, p.part2)
147-
console.log('*** ', index + 1, cmp)
148-
if (cmp) {
155+
console.log(index + 1, cmp)
156+
if (cmp === true) {
149157
result += index + 1
150158
}
151159
})

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy