Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function palindromeHunter([length, text]) {
- length = Number(length);
- let tokens = text.split(/[ \t_]+/g);
- let textToProcess = tokens.join("");
- let nonDelimiters = new Set();
- for(let ch of textToProcess) {
- nonDelimiters.add(ch);
- }
- let delimiterRegex = ("[" + Array.from(nonDelimiters).join("") + "]+").replace(/-/g, "\\-");
- let delimiters = text.split(new RegExp(delimiterRegex)).filter(d => d != "");
- for(let i =0; i<textToProcess.length; i++){
- let piece = textToProcess.substr(i,length);
- let validPieceRegex = /^[A-Za-z]+$/;
- let match = null;
- if(match = validPieceRegex.exec(piece)){
- if(match[0].length == length){
- if(match[0] == match[0].split("").reverse().join("")){
- textToProcess = textToProcess.replace(match[0], "*".repeat(match[0].length));
- }
- }
- }
- }
- let processedText = [];
- for(let token of tokens){
- processedText.push(textToProcess.substr(0, token.length));
- textToProcess = textToProcess.substr(token.length);
- }
- let output = "";
- if(processedText.length > delimiters.length){
- for(let i=0; i<delimiters.length; i++){
- output += processedText[i] + delimiters[i];
- }
- output += processedText[processedText.length - 1];
- } else if (processedText.length < delimiters.length){
- for(let i=0; i<processedText.length; i++){
- output += delimiters[i] + processedText[i];
- }
- output += delimiters[delimiters.length - 1];
- } else {
- for(let i=0; i<delimiters.length; i++){
- if(text[0] == " " || text[0] == "\t" || text[0] == "_") {
- output += delimiters[i] + processedText[i];
- } else {
- output += processedText[i] + delimiters[i];
- }
- }
- }
- console.log(output);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement