Skip to content

Instantly share code, notes, and snippets.

@c-j-j
Last active November 21, 2018 09:31
Show Gist options
  • Save c-j-j/3bd4479b5bef7d38fd85309eb2d8047c to your computer and use it in GitHub Desktop.
Save c-j-j/3bd4479b5bef7d38fd85309eb2d8047c to your computer and use it in GitHub Desktop.
Counting Valleys - ReasonML
let countingValleys = (~s) => {
let rec iter = (~numberOfValleys, ~level, ~s) =>
if (String.length(s) === 0) {
numberOfValleys;
} else {
let next = s.[0];
let rest = String.sub(s, 1, String.length(s) - 1);
switch (next, level) {
| ('U', (-1)) => iter(~numberOfValleys=numberOfValleys + 1, ~level=level + 1, ~s=rest)
| ('U', _) => iter(~numberOfValleys, ~level=level + 1, ~s=rest)
| ('D', _) => iter(~numberOfValleys, ~level=level - 1, ~s=rest)
| (_, _) => iter(~numberOfValleys, ~level, ~s=rest)
};
};
iter(~s, ~numberOfValleys=0, ~level=0);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment