goodwin64

Mirroring word's letters

Feb 11th, 2023
1,097
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * This script will decode words by mirroring each letter index
  3.  * in the alphabet, e.g.:
  4.  * word:            H   E   L   L   O
  5.  * index:           7   4   11  11  14
  6.  * reverted index:  19  22  15  15  12
  7.  * encoded word:    T   W   P   P   M
  8.  *
  9.  * Ukrainian alphabet is used. To use another alphabet,
  10.  * just replace the "alphabet" string.
  11. */
  12.  
  13.  
  14. const words = 'ОКЄЯЛЛА  УЗІИЇСД ЖЗИЮКН ЮЯЛО ЙКЧКЇКФ МКЇЦ ОЗЄЯЇ ЙСЬЦЛВ ЩНКЮЗІ ІКЛЦИ ЩКЇСНОЯ ЩЇЯЛВ ЬТІКИЯ ЙИЯЄ ИЇЗЮЯ ЙЦЧЯНВ ЧСЇОЯ  ЬКЇКЛЯ ЮКЇКҐЛК ЧЇСФЧФС ІСО ОЦИДЗЙ ДЯІЛТО МЗЧЇСІИВ МКЛСИКЇ ІИЇСНОЯ ІКЮЯОЯ ІЦІСА ЮЗЇАО ЙЯМЙЗҐОЯ МКІОЯНВ НКЙЯИЯ  '
  15.     .split(' ')
  16.     .filter(Boolean);
  17.  
  18. const alphabet = 'абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'
  19.  
  20. const letters = alphabet
  21.     .replace(/[,. ]/g, '') // clean non-letter chars
  22.     .toUpperCase()
  23.     .split('');
  24.  
  25. const letterToIndex = letters.reduce((acc, letter, i) => ({
  26.     ...acc,
  27.     [letter]: i,
  28. }), {});
  29.  
  30. const deciphered = words
  31.     .map(w => w
  32.             .split('')
  33.             .map(letter => letters[letters.length - letterToIndex[letter] - 1])
  34.             .join('')
  35.         );
  36.  
  37. console.log(deciphered);
  38. // ['КОХАННЯ', 'ЗУСТРІЧ', 'ФУТБОЛ', 'БАНК', 'ПОДОРОЖ', 'МОРЕ', 'КУХАР', 'ПІВЕНЬ', 'ГЛОБУС', 'СОНЕТ', 'ГОРІЛКА', 'ГРАНЬ', 'ВИСОТА', 'ПТАХ', 'ТРУБА', 'ПЕДАЛЬ', 'ДІРКА', 'ВОРОНА', 'БОРОШНО', 'ДРІЖДЖІ', 'СІК', 'КЕТЧУП', 'ЧАСНИК', 'МУДРІСТЬ', 'МОНІТОР', 'СТРІЛКА', 'СОБАКА', 'СЕСІЯ', 'БУРЯК', 'ПАМПУШКА', 'МОСКАЛЬ', 'ЛОПАТА']
  39.  
Advertisement
Add Comment
Please, Sign In to add comment