Skip to content

Commit 840d76b

Browse files
feat(2018 day-03): parses claim strings into claim objects
1 parent 2fff5b7 commit 840d76b

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

2018/day-03/claims.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Parses a claim into a usable object
3+
* @param {String} str formatted claim
4+
* @returns {Object} Claim object with named properties
5+
*/
6+
const parseClaim = (str) => {
7+
let claim = {}
8+
let vals = str.split(' @ ')
9+
claim.id = vals[0].replace(/#/g, '')
10+
vals = vals[1].split(',')
11+
claim.x = vals[0]
12+
vals = vals[1].split(': ')
13+
claim.y = vals[0]
14+
vals = vals[1].split('x')
15+
claim.width = vals[0]
16+
claim.height = vals[1]
17+
18+
Object.keys(claim).forEach((key) => {
19+
claim[key] = parseInt(claim[key])
20+
})
21+
22+
return claim
23+
}
24+
25+
module.exports = {
26+
parseClaim
27+
}

2018/day-03/claims.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/* eslint-env mocha */
22
const expect = require('chai').expect
3+
const { parseClaim } = require('./claims')
34
let {
45
cloth,
56
conflicts,
67
isClaimed,
78
logConflict,
8-
makeClaim,
9-
parseClaim
9+
makeClaim
1010
} = require('./claims')
1111

1212
function _randomInt (min, max) {
@@ -32,7 +32,7 @@ describe('--- Day 3: No Matter How You Slice It ---', () => {
3232
height: 4
3333
}
3434
const actual = parseClaim(claim)
35-
expected(actual).to.deep.equal(expected)
35+
expect(actual).to.deep.equal(expected)
3636
})
3737
})
3838

0 commit comments

Comments
 (0)