кодесурса
«JavaScript

JavaScript: найдите все возможные варианты замены хеша в строке

script1adsense2code
script1adsense3code

Базовый JavaScript: упражнение 116 с решением

Напишите программу на JavaScript, чтобы найти все возможные варианты замены хеша в строке (состоит из цифр и одного хеша (#)) с цифрой, чтобы получить целое число, кратное 3.

Для строки "2 * 0" выходные данные должны быть: ["210", "240", "270"]

Пример решения:

HTML-код:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title> Find all the possible options to replace the hash in a string</title>
</head>
<body>
</body>
</html>

Код JavaScript:

function is_divisible_by3(mask_str) {
  var digitSum = 0,
    left ='0'.charCodeAt(),
    right ='9'.charCodeAt(),
    result = [],
    mask_data = mask_str.split(''),
    hash_pos = -1;
  for (var i = 0; i < mask_data.length; i++) {
    if (left <= mask_data[i].charCodeAt() && mask_data[i].charCodeAt() <= right)
    {
      digitSum += mask_data[i].charCodeAt() - left;
    } 
    else 
    {
      hash_pos = i;
    }
  }
  for (var i = 0; i < 10; i++) {
    if ((digitSum + i) % 3 === 0) {
      mask_data[hash_pos] = String.fromCharCode(left + i);
      result.push(mask_data.join(''));
    }
  }
  return result;
}
console.log(is_divisible_by3("2#0"))
console.log(is_divisible_by3("4#2"))

Пример вывода:

 [ "210", "240", "270"]
[ "402", "432", "462", "492"]

Блок - схема:

«Блок-схема:

Версия ES6:

function is_divisible_by3(mask_str) {
  let digitSum = 0;
  const left ='0'.charCodeAt();
  const right ='9'.charCodeAt();
  const result = [];
  const mask_data = mask_str.split('');
  let hash_pos = -1;
  for (var i = 0; i < mask_data.length; i++) {
    if (left <= mask_data[i].charCodeAt() && mask_data[i].charCodeAt() <= right)
    {
      digitSum += mask_data[i].charCodeAt() - left;
    } 
    else 
    {
      hash_pos = i;
    }
  }
  for (var i = 0; i < 10; i++) {
    if ((digitSum + i) % 3 === 0) {
      mask_data[hash_pos] = String.fromCharCode(left + i);
      result.push(mask_data.join(''));
    }
  }
  return result;
}
console.log(is_divisible_by3("2#0"))
console.log(is_divisible_by3("4#2"))

Демонстрация в реальном времени:

См. Pen javascript-basic-упражнение-116 от w3resource ( @ w3resource ) в CodePen .


Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите программу на JavaScript, чтобы проверить, является ли матрица диагональной или нет.
Далее: Напишите программу на JavaScript, чтобы проверить, является ли данная матрица единичной матрицей.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code