Skip to content

Commit 64b0169

Browse files
committed
added case parser code.
1 parent 103e12c commit 64b0169

1 file changed

Lines changed: 47 additions & 11 deletions

File tree

2018/qualification/1-saving-the-universe/solution.js

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,41 @@
22

33
//////////////
44

5+
class CaseParser {
6+
constructor() {
7+
this.damage = 0
8+
this.sequence = []
9+
this.state = '1'
10+
}
11+
12+
readline(line) {
13+
let values = line.split(' ')
14+
this.damage = parseInt(values[0])
15+
this.sequence = Array.from(values[1])
16+
17+
this.state = 'done'
18+
}
19+
20+
isComplete() {
21+
return (this.state === 'done')
22+
}
23+
24+
getCase() {
25+
return {
26+
damage: this.damage,
27+
sequence: this.sequence
28+
}
29+
}
30+
}
31+
532
// call parse() to read the inputs and return list of problems / test cases.
633
function parse() {
734
const readline = require('readline');
835
let t = 0;
936
let currentT = 0;
1037
let readState = 't'
1138
let probs = []
39+
let caseParser = new CaseParser()
1240

1341
const rl = readline.createInterface({
1442
input: process.stdin,
@@ -23,12 +51,20 @@ function parse() {
2351
break
2452
}
2553
case 'case': {
26-
let values = line.split(' ')
27-
let prob = new Problem()
28-
prob.damage = parseInt(values[0])
29-
prob.sequence = Array.from(values[1])
30-
probs.push(prob)
31-
currentT += 1
54+
caseParser.readline(line)
55+
56+
if (caseParser.isComplete()) {
57+
probs.push(caseParser.getCase())
58+
currentT += 1
59+
caseParser = new CaseParser()
60+
}
61+
62+
// let values = line.split(' ')
63+
// let prob = new Problem()
64+
// prob.damage = parseInt(values[0])
65+
// prob.sequence = Array.from(values[1])
66+
// probs.push(prob)
67+
// currentT += 1
3268
break
3369
}
3470
}
@@ -108,7 +144,7 @@ function calculateMinSwap(prob) {
108144

109145
strengths[lastC + 1] = strengths[lastC]
110146
strengths[lastC] = strengths[lastC] / 2
111-
147+
112148
lastC += 1
113149
minSwap += 1
114150
currentTotalDamage = calculateTotalDamage(prob, strengths)
@@ -156,8 +192,8 @@ function main() {
156192
parse()
157193
}
158194

159-
if (!module.parent) {
160-
main()
161-
}
162-
195+
if (!module.parent) {
196+
main()
197+
}
198+
163199
module.exports = solve

0 commit comments

Comments
 (0)