Open NeoxAzrot opened 1 year ago
Bonjour monsieur Stallone, Voici ma contribution pour distribuer vos coups de poings imaginaires.
Je suis néanmoins désolé, car je n'ai pas trouvé plus simple comme raisonnement...
/** * @name: movaicode.js * @description: Punch distribution function - Movaicode * @author: Sami Lafrance - contact@samilafrance.com * @version: 1.0.0 */ var sentence = "Synopsys : dans les quartiers populaires de Philadelphie, Rocky Balboa collecte des dettes non payées pour Tony Gazzo, un usurier ; il dispute de temps à autre, pour quelques dizaines de dollars, des combats de boxe sous l'appellation de l'étalon italien."; /* -------------------------------------------------------------------------- */ /* getAllCharPosition */ /* -------------------------------------------------------------------------- */ function getAllCharPosition(c) { var charPosition = []; for (var i = 0; i < sentence.length; i++) { if (sentence[i] === c) { charPosition.push(i); } } return charPosition; } /* -------------------------------------------------------------------------- */ /* setCharAt */ /* -------------------------------------------------------------------------- */ function setCharAt(s, i, c) { if (i > s.length - 1) return s; return s.substring(0, i) + c + s.substring(i + 1); } /* -------------------------------------------------------------------------- */ /* addCharAfter */ /* -------------------------------------------------------------------------- */ function addCharAfter(s, i, c) { if (i > s.length - 1) return s; return s.substring(0, i + 1) + c + s.substring(i + 1); } /* -------------------------------------------------------------------------- */ /* replaceAllChar */ /* -------------------------------------------------------------------------- */ function replaceAllChar(c, r) { var charPosition = getAllCharPosition(decodeHTMLChars(c)); var replacementSplit = r.split(''); for (var i = charPosition.length - 1; i >= 0; i--) { for (var j = 0; j < replacementSplit.length; j++) { if (j === 0) { sentence = setCharAt(sentence, charPosition[i], replacementSplit[j]); } else { sentence = addCharAfter( sentence, charPosition[i] + j - 1, replacementSplit[j] ); } } } return sentence; } /* -------------------------------------------------------------------------- */ /* encodeHTMLChars */ /* -------------------------------------------------------------------------- */ function encodeHTMLChars(c) { var buf = []; for (var i = c.length - 1; i >= 0; i--) { buf.unshift(['&#', c[i].charCodeAt(), ';'].join('')); } return buf.join(''); } /* -------------------------------------------------------------------------- */ /* decodeHTMLChars */ /* -------------------------------------------------------------------------- */ function decodeHTMLChars(c) { return c.replace(/&#(\d+);/g, (m, d) => { return String.fromCharCode(d); }); } /* -------------------------------------------------------------------------- */ /* main */ /* -------------------------------------------------------------------------- */ function main() { var chars = [ { char: encodeHTMLChars('p'), replacement: 'poing', order: 5, }, { char: encodeHTMLChars('P'), replacement: 'Poing', order: 4, }, { char: encodeHTMLChars('.'), replacement: 'poing', order: 1, }, { char: encodeHTMLChars(':'), replacement: 'deuxpoings', order: 3, }, { char: encodeHTMLChars(';'), replacement: 'poingvirgule', order: 2, }, ]; chars = chars.sort((a, b) => { return a.order - b.order; }); var newSentence = ''; for (var i = chars.length - 1; i >= 0; i--) { newSentence = replaceAllChar(chars[i].char, chars[i].replacement); } console.log(newSentence); } main();
you win this month ! \o/
Bonjour monsieur Stallone, Voici ma contribution pour distribuer vos coups de poings imaginaires.
Je suis néanmoins désolé, car je n'ai pas trouvé plus simple comme raisonnement...