Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const recoverSecret = function (triplets) {
- // const flattened = (arr) => [].concat(...arr);
- let secretLetters = filterDublicates(triplets.flat());
- const string = [];
- const haveItems = (nested) => nested.length;
- console.log(secretLetters);
- while (triplets.some(haveItems)) {
- let obj = returnObj(triplets);
- // filter last letter
- let [last] = secretLetters.filter(
- (l) => !Object.keys(obj).includes(l) && !string.includes(l)
- );
- // add to arr
- string.push(last);
- triplets.forEach((arr) => {
- arr.forEach((l, index) => {
- if (string.includes(l)) {
- arr.splice(index, 1);
- if (!arr.length) {
- arr = null;
- }
- }
- });
- });
- }
- return string.reverse().join('');
- // Declarations
- function returnObj(triplets) {
- const obj = {};
- triplets.forEach((triplet) => {
- triplet.forEach((letter, index) => {
- for (let i = 0, l = triplet.length; i < l; i++) {
- if (i > index) {
- if (!obj.hasOwnProperty(letter)) {
- obj[letter] = [];
- }
- obj[letter].push(triplet[i]);
- }
- }
- });
- });
- Object.keys(obj).forEach((key) => {
- obj[key] = filterDublicates(obj[key]);
- });
- return obj;
- }
- function filterDublicates(arr) {
- let filtered = [];
- arr.forEach((l) => {
- if (!filtered.includes(l)) {
- filtered.push(l);
- }
- });
- return filtered;
- }
- };
- let secret = 'whatisup';
- const triplets1 = [
- ['t', 'u', 'p'],
- ['w', 'h', 'i'],
- ['t', 's', 'u'],
- ['a', 't', 's'],
- ['h', 'a', 'p'],
- ['t', 'i', 's'],
- ['w', 'h', 's'],
- ];
- console.log(secret);
- let result = recoverSecret(triplets1);
- console.log('result:', result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement