-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path07.js
More file actions
36 lines (30 loc) · 1.08 KB
/
07.js
File metadata and controls
36 lines (30 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const fs = require('fs')
const { TestContext } = require('node:test')
const args = process.argv.slice(2)
const data = fs.readFileSync(args[0], 'utf8')
const lines = data.split('\n')
let sum = 0
let sum2 = 0
lines.forEach((line, y) => {
if (line.length == 0) return
const match = line.match(/(\d+):(.*)/)
const test = parseInt(match[1])
const values = match[2].trim().split(' ').map(x => parseInt(x))
sum += check(test, values) ? test : 0
sum2 += check(test, values, true) ? test : 0
})
console.log('Del 1', sum)
console.log('Del 2', sum2)
function check(test, values, concat = false) {
if (values[0] > test) return false
if (values.length === 1) return values[0] === test
const rem = values.slice(2)
const valp = [values[0] + values[1], ...rem]
const valm = [values[0] * values[1], ...rem]
if(concat) {
// älskar javascript
const valc = [+`${values[0]}${values[1]}`, ...rem]
return check(test, valp, true) || check(test, valm, true) || check(test, valc, true)
}
return check(test, valp) || check(test, valm)
}