Есть ли лучший способ решить эту проблему программирования «Россета Стоун» в javascript? - PullRequest
0 голосов
/ 27 февраля 2020

Здравствуйте, я недавно столкнулся с этой проблемой программирования и сумел найти работоспособное решение. Задача содержит ввод данных различного типа, и мой код, кажется, имеет работоспособное решение, которое полностью удовлетворяет потребности в данных, однако код кажется более жестко закодированным, чем generi c. Мне интересно, есть ли способ избавиться от условия if..else в следующем коде и объединить решение для ввода данных цифр c и не цифр c. В каждой части есть значение для l oop, и оно выглядит несколько избыточным. Кто-нибудь знает, как код может быть написан более эффективно? В программе есть СОВЕТ, однако я не уверен, что использовал ее правильно.

Описание задачи по программированию Розеттского камня: Розеттский камень - это древний указ, написанный в камне, который использовался археологами для перевода между греческим и древнеегипетским языками.

Напишите программу для декодирования сообщений с использованием Rosetta для перевода. «Розетта» будет набором символов, соединенным с английскими sh словами или символами. Если вы переведете зашифрованное сообщение правильно, вы найдете скрытое сообщение.

СОВЕТ: пробелы, которые не являются частью фрагмента, должны быть сохранены

Ввод: будет введено несколько строк ввода. Первой строкой ввода будет сообщение для перевода на Engli sh.

Все остальные строки ввода будут Rosetta, необходимыми для перевода. Фрагменты каждой пары будут разделены символом трубы, по одной паре на строку ввода.

Например:

Hola Mundo
Mundo|World
Lunes|Monday
Hola|Hello

Переводит: Hola Mundo

на: Hello World

Вывод: переведенный текст, который будет настоящей английской sh фразой

Тест 1 Тестовый ввод

Hola Mundo
Mundo|World
Lunes|Monday
Hola|Hello

Ожидаемый вывод: Hello World

Test 2 Test Input

mieux vaut prévenir que guérir
merci|thank you
que|than
malade|sick
mieux|better
guérir|to heal
chien|dog
vaut prévenir|to prevent
beurre|butter
s'il vous plaît|please

Ожидаемый результат: лучше предотвратить, чем лечить

Test 3 Test Input

5748494348 574159 544845 57494E44 424C4F5753
41|A
42|B
43|C
44|D
45|E
46|F
47|G
48|H
49|I
4A|J
4B|K
4C|L
4D|M
4E|N
4F|O
50|P
51|Q
52|R
53|S
54|T
55|U
56|V
57|W
58|X
59|Y
5A|Z

Ожидаемый результат: ПОЧЕМУ СПОСОБ WIND BLOWS

Код

Запустите это как JS файл & комментарии / раскомментируйте массивы для использования различных входных данных.

function Solve() {
  /* var arr3 = [ 'Hola', 'Mundo' ]
    var arr4= [ 'Mundo', 'World', 'Lunes', 'Monday', 'Hola', 'Hello' ] */

  /*  var arr3 = [ 'mieux', 'vaut', 'prévenir', 'que', 'guérir' ]
     var arr4 = [ 'merci','thank you','que','than','malade','sick','mieux','better','guérir',
    'to heal','chien','dog','vaut prévenir','to prevent','beurre','butter', 's\'il vous plaît','please' ] */

  var arr3 = [ '5748494348', '574159', '544845', '57494E44', '424C4F5753' ]
  var arr4 = [ '41','A','42','B','43','C','44','D','45','E','46','F','47','G','48','H','49','I',
  '4A','J','4B','K','4C','L','4D','M','4E','N','4F','O','50','P','51','Q','52','R','53','S','54',
  'T','55','U','56','V','57','W','58','X','59','Y','5A','Z' ]

    var newarr = [];
    var hasNumber = /\d/;

    for (var i = 0; i < arr3.length; i++) {            

        if (hasNumber.test(arr3[i])== true){
            var char = '';
            for (k=0; k< arr3[i].toString().length; k++){

                for (var j=0; j<arr4.length; j++) {
                    //value = arr4[j].toString();
                   // var spl =  value.split(" ");
                    if(arr3[i].toString().substr(k,2) === arr4[j]){
                        char = char + arr4[j+1] ;                       
                    }
                } k= k+1;
            }  newarr.push(char.toString()); 

        } else {

            for (var j=0; j<arr4.length; j++) {
                value = arr4[j].toString();
                var spl =  value.split(" ");
                //console.log(spl);
                if (spl[0] === arr3[i]) {
                    newarr.push(arr4[j+1]) ;            
                }     
            }    

    }        



} console.log(newarr.toString().replace(/,/g, ' ')); 

}

console.log(Solve());
...