Расшифровать любую переданную строку - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь ответить на этот вопрос по Codewars. Я не уверен, правильно ли я это делаю. Вот вопрос:

Вам дано секретное сообщение, которое нужно расшифровать. Вот что вам нужно знать, чтобы его расшифровать:

Для каждого слова:

the second and the last letter is switched (e.g. Hello becomes Holle)
the first letter is replaced by its character code (e.g. H becomes 72)

Примечание: не используются специальные символы, только буквы и пробелы:

decipherThis('72olle 103doo 100ya'); // 'Hello good day'
decipherThis('82yade 115te 103o'); // 'Ready set go'

Теперь я написал этот фрагмент кода:

function decipherThis(str)
{
  var msg = [];
  msg.push(str.charCodeAt(0));
  for (var i = 0; i<str.length; i++) 
  {
    if (str[1] == true && str[1] != str[str.length]) 
    {
      msg.push(str[str.length]);
      //str[1] = str[str.length]);
      var news = str;
      for (var j = 0; j<news.length; j++) 
      {
        news[1] = news[news.length];
        const newNew = delete news[0][1];

        msg.push(newNew);
      }
    }
  }
  return msg;
}; 

var google = "hello"

decipherThis(google)


Я получаю сообщение об ошибке и думаю, что создал его для одного слова. Он не понимает слов после пробелов. Пожалуйста, помогите мне это исправить. Это трассировка ошибки:

  Response received but no data was written to STDOUT or STDERR. 

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Пожалуйста, измените characterCodeAt на charCodeAt, и он будет работать.

characterCodeAt не является допустимым методом класса String

0 голосов
/ 28 мая 2020

Ошибка не связана с Javascript. Это может произойти из-за того, что функция decipherThis() возвращает массив вместо строки.

Вы можете oop исходную строку назад до второго символа и объединить ее с символьным кодом первого символа, как это :

function decipherThis(str)
{
  var cipher = '',
      words = str.split(' ');

  for(var w = 0; w < words.length; w++) {
    cipher += ' '+words[w].charCodeAt(0);
    for(var i = words[w].length-1; i > 0; i--) {
      cipher += words[w][i];
    }
  }
  return cipher.trim();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...