Здравствуйте, я недавно столкнулся с этой проблемой программирования и сумел найти работоспособное решение. Задача содержит ввод данных различного типа, и мой код, кажется, имеет работоспособное решение, которое полностью удовлетворяет потребности в данных, однако код кажется более жестко закодированным, чем 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());