This commit is contained in:
Pilot 2020-12-02 00:41:49 -05:00 committed by pilot
parent a4099b9139
commit 97fa7bc7d7
1 changed files with 25 additions and 12 deletions

View File

@ -18,24 +18,24 @@ let tasksResults: any[] = ['N/A', 'N/A'];
describe('Day 02', () => {
let sample: PassEntry[];
before(() => {
sample = getData(example);
})
describe('task01', () => {
describe('parse', () => {
let rules: PassEntry[];
before(() => {
rules = getData(example);
})
it('matches a line', () => {
assert.strictEqual(rules[0].min, 1);
assert.strictEqual(rules[0].max, 3);
assert.strictEqual(rules[0].letter, 'a');
assert.strictEqual(rules[0].pass, 'abcde');
assert.strictEqual(sample[0].min, 1);
assert.strictEqual(sample[0].max, 3);
assert.strictEqual(sample[0].letter, 'a');
assert.strictEqual(sample[0].pass, 'abcde');
});
it('makes a table', () => {
let table = mkTable(rules[0]);
let table = mkTable(sample[0]);
assert.strictEqual(table.a, 1);
})
it('validate rules', () => {
let valid = checkRulesTask01(rules);
let valid = checkRulesTask01(sample);
assert.strictEqual(valid.length, 2);
})
});
@ -46,8 +46,9 @@ describe('Day 02', () => {
});
describe('test02', () => {
it('Calculate', () => {
// assert.strictEqual(task02(example), expect02);
tasksResults[1] = task02(input);
assert.strictEqual(checkRulesTask02(sample).length, 1);
let rules = getData(readFileSync('./input/2020-day-02.txt', 'utf-8'));
tasksResults[1] = checkRulesTask02(rules).length;
});
});
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) {
let table: any = {};
for (let i = 0; i < rule.pass.length; i++) {