Task 2
This commit is contained in:
parent
a4099b9139
commit
97fa7bc7d7
|
@ -18,24 +18,24 @@ let tasksResults: any[] = ['N/A', 'N/A'];
|
||||||
|
|
||||||
describe('Day 02', () => {
|
describe('Day 02', () => {
|
||||||
|
|
||||||
|
let sample: PassEntry[];
|
||||||
|
before(() => {
|
||||||
|
sample = getData(example);
|
||||||
|
})
|
||||||
describe('task01', () => {
|
describe('task01', () => {
|
||||||
describe('parse', () => {
|
describe('parse', () => {
|
||||||
let rules: PassEntry[];
|
|
||||||
before(() => {
|
|
||||||
rules = getData(example);
|
|
||||||
})
|
|
||||||
it('matches a line', () => {
|
it('matches a line', () => {
|
||||||
assert.strictEqual(rules[0].min, 1);
|
assert.strictEqual(sample[0].min, 1);
|
||||||
assert.strictEqual(rules[0].max, 3);
|
assert.strictEqual(sample[0].max, 3);
|
||||||
assert.strictEqual(rules[0].letter, 'a');
|
assert.strictEqual(sample[0].letter, 'a');
|
||||||
assert.strictEqual(rules[0].pass, 'abcde');
|
assert.strictEqual(sample[0].pass, 'abcde');
|
||||||
});
|
});
|
||||||
it('makes a table', () => {
|
it('makes a table', () => {
|
||||||
let table = mkTable(rules[0]);
|
let table = mkTable(sample[0]);
|
||||||
assert.strictEqual(table.a, 1);
|
assert.strictEqual(table.a, 1);
|
||||||
})
|
})
|
||||||
it('validate rules', () => {
|
it('validate rules', () => {
|
||||||
let valid = checkRulesTask01(rules);
|
let valid = checkRulesTask01(sample);
|
||||||
assert.strictEqual(valid.length, 2);
|
assert.strictEqual(valid.length, 2);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
@ -46,8 +46,9 @@ describe('Day 02', () => {
|
||||||
});
|
});
|
||||||
describe('test02', () => {
|
describe('test02', () => {
|
||||||
it('Calculate', () => {
|
it('Calculate', () => {
|
||||||
// assert.strictEqual(task02(example), expect02);
|
assert.strictEqual(checkRulesTask02(sample).length, 1);
|
||||||
tasksResults[1] = task02(input);
|
let rules = getData(readFileSync('./input/2020-day-02.txt', 'utf-8'));
|
||||||
|
tasksResults[1] = checkRulesTask02(rules).length;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
after(() => {
|
after(() => {
|
||||||
|
@ -92,6 +93,18 @@ function checkRulesTask01(rules: PassEntry[]): PassEntry[] {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkRulesTask02(rules: PassEntry[]): PassEntry[] {
|
||||||
|
return rules.filter(rule => {
|
||||||
|
let p1 = rule.pass.charAt(rule.min - 1);
|
||||||
|
let p2 = rule.pass.charAt(rule.max - 1);
|
||||||
|
let m1 = (p1 === rule.letter);
|
||||||
|
let m2 = (p2 === rule.letter);
|
||||||
|
if (m1 && m2) return false;
|
||||||
|
if (!m1 && !m2) return false;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function mkTable(rule: PassEntry) {
|
function mkTable(rule: PassEntry) {
|
||||||
let table: any = {};
|
let table: any = {};
|
||||||
for (let i = 0; i < rule.pass.length; i++) {
|
for (let i = 0; i < rule.pass.length; i++) {
|
||||||
|
|
Loading…
Reference in New Issue