Last active
August 1, 2017 12:05
-
-
Save dmitrykuznetsovdev/741b8428d5516f8160d7ea3d1ad96f21 to your computer and use it in GitHub Desktop.
Polindrom
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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