Skip to content

Instantly share code, notes, and snippets.

@fersilva16
Last active May 28, 2022 19:07
Show Gist options
  • Save fersilva16/b0053b7e3d9b576d20603fb40ee84122 to your computer and use it in GitHub Desktop.
Save fersilva16/b0053b7e3d9b576d20603fb40ee84122 to your computer and use it in GitHub Desktop.
a*b parser with first and second
const assert = require('assert');
/**
* @param {string} str
*/
const asb = ([fst, scd, ...tail]) => {
if (fst === 'a' && scd === 'a') return asb([fst, ...tail]);
if (fst === 'b' && !scd) return true;
if (fst === 'a' && scd === 'b') return true;
return false;
};
assert(asb('b') === true);
assert(asb('ab') === true);
assert(asb('aab') === true);
assert(asb('aaab') === true);
assert(asb('aaaab') === true);
assert(asb('aaaaab') === true);
assert(asb('a') === false);
assert(asb('c') === false);
assert(asb('ba') === false);
assert(asb('bb') === false);
assert(asb('bc') === false);
assert(asb('cb') === false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment