Skip to content

Instantly share code, notes, and snippets.

@dmitrykuznetsovdev
Last active August 1, 2017 12:05
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 dmitrykuznetsovdev/741b8428d5516f8160d7ea3d1ad96f21 to your computer and use it in GitHub Desktop.
Save dmitrykuznetsovdev/741b8428d5516f8160d7ea3d1ad96f21 to your computer and use it in GitHub Desktop.
Polindrom
const polindrom = 'Я не !! , !!!стар, брат Сеня';
let polindromPrepare = '';
let comparePolindrom = '';
function compose(...funcs) {
return [].reduceRight.bind(funcs, (prev, func) => func(prev));
}
/**
*
* @param str
* @returns {Array|*}
*/
function splitPolindrom(str){
return str.split(/[\s]|[\,\.\!\?]/gi)
}
/**
*
* @param polindromArr
* @returns {Array.<T>|*}
*/
function exceptEmptyProperty(polindromArr) {
return polindromArr.filter(s => s.length);
}
/**
*
* @param polindromArr
* @returns {*}
*/
function joinPolindrom(polindromArr) {
return polindromArr.join('').toLowerCase();
}
/**
*
* @param str
* @returns {string}
*/
function reversePolindrom(str) {
return str.split('').reverse().join('');
}
polindromPrepare = compose(
joinPolindrom,
exceptEmptyProperty,
splitPolindrom
)(polindrom);
comparePolindrom = compose(
reversePolindrom,
joinPolindrom,
exceptEmptyProperty,
splitPolindrom
)(polindrom);
console.log(polindromPrepare === comparePolindrom);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment