Advertisement
Btwonu

Secret String

Dec 9th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const recoverSecret = function (triplets) {
  2.   // const flattened = (arr) => [].concat(...arr);
  3.   let secretLetters = filterDublicates(triplets.flat());
  4.   const string = [];
  5.   const haveItems = (nested) => nested.length;
  6.  
  7.   console.log(secretLetters);
  8.  
  9.   while (triplets.some(haveItems)) {
  10.     let obj = returnObj(triplets);
  11.  
  12.     // filter last letter
  13.     let [last] = secretLetters.filter(
  14.       (l) => !Object.keys(obj).includes(l) && !string.includes(l)
  15.     );
  16.  
  17.     // add to arr
  18.     string.push(last);
  19.  
  20.     triplets.forEach((arr) => {
  21.       arr.forEach((l, index) => {
  22.         if (string.includes(l)) {
  23.           arr.splice(index, 1);
  24.           if (!arr.length) {
  25.             arr = null;
  26.           }
  27.         }
  28.       });
  29.     });
  30.   }
  31.  
  32.   return string.reverse().join('');
  33.  
  34.   // Declarations
  35.   function returnObj(triplets) {
  36.     const obj = {};
  37.  
  38.     triplets.forEach((triplet) => {
  39.       triplet.forEach((letter, index) => {
  40.         for (let i = 0, l = triplet.length; i < l; i++) {
  41.           if (i > index) {
  42.             if (!obj.hasOwnProperty(letter)) {
  43.               obj[letter] = [];
  44.             }
  45.  
  46.             obj[letter].push(triplet[i]);
  47.           }
  48.         }
  49.       });
  50.     });
  51.  
  52.     Object.keys(obj).forEach((key) => {
  53.       obj[key] = filterDublicates(obj[key]);
  54.     });
  55.  
  56.     return obj;
  57.   }
  58.  
  59.   function filterDublicates(arr) {
  60.     let filtered = [];
  61.  
  62.     arr.forEach((l) => {
  63.       if (!filtered.includes(l)) {
  64.         filtered.push(l);
  65.       }
  66.     });
  67.  
  68.     return filtered;
  69.   }
  70. };
  71.  
  72. let secret = 'whatisup';
  73. const triplets1 = [
  74.   ['t', 'u', 'p'],
  75.   ['w', 'h', 'i'],
  76.   ['t', 's', 'u'],
  77.   ['a', 't', 's'],
  78.   ['h', 'a', 'p'],
  79.   ['t', 'i', 's'],
  80.   ['w', 'h', 's'],
  81. ];
  82.  
  83. console.log(secret);
  84. let result = recoverSecret(triplets1);
  85. console.log('result:', result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement