Skip to content

Instantly share code, notes, and snippets.

@yosevu
Last active January 28, 2020 04:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yosevu/98d4fd57ca4983d15f473e37aa2ca312 to your computer and use it in GitHub Desktop.
Save yosevu/98d4fd57ca4983d15f473e37aa2ca312 to your computer and use it in GitHub Desktop.
getNumberOfStars
// Fixtures
const FILLED_STAR = '<filled/>';
const EMPTY_STAR = '<empty/>';
const MAX_STARS = 5;
const numberOfStars = 3;
// Version 1
R.join('',
R.concat(
R.times(R.always(FILLED_STAR), numberOfStars),
R.times(R.always(EMPTY_STAR), R.subtract(MAX_STARS, numberOfStars))
)
)
// Version 2
// getFilledStars :: Number -> [String]
const getFilledStars = R.times(R.always(FILLED_STAR));
// getEmptyStars :: Number -> [String]
const getEmptyStars = numberOfStars => R.times(
R.always(EMPTY_STAR),
R.subtract(MAX_STARS, numberOfStars)
);
// getNumberOfStars :: Number -> String
const getNumberOfStars = R.pipe(
R.converge(R.concat, [getFilledStars, getEmptyStars]),
R.join('')
);
getNumberOfStars(numberOfStars);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment