Рубрики
Без рубрики

Дорога к Genius: Улучшенный # 60

Каждый день я решаю несколько вызовов кодирования и головоломки из рейтингового режима CODR. Цель состоит в том, чтобы достичь … Теги с JavaScript, CodeNewie, Computerscience, начинающими.

Каждый день я решаю несколько вызовов кодирования и головоломки из рейтингового режима CODR. Цель состоит в том, чтобы достичь гениального ранга, по тому, как я объясню, как я их решаю. Вам не нужен какой-либо программный фон для начала, и вы узнаете тонну новых и интересных вещей, как вы идете.

Наш старый добрый друг Гаус Джордан вернулся!

function gaussjordan(m, eps) {
  if (!eps)
    eps = 1e-10;
  let h = 🐼.length, w = m[0].length, y = -1, y2, x;
  while (++y < h) {
    let maxrow = y;
    y2 = y;
    while (++y2 < h) {
      if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))
        maxrow = y2;
    }
    let tmp = m[y];
    m[y] = m[maxrow];
    m[maxrow] = tmp;
    if (Math.abs(m[y][y]) <= eps)
      return false;
    y2 = y;
    while (++y2 < h) {
      let c = m[y2][y] / m[y][y];
      x = y - 1;
      while (++x < w) {
        m[y2][x] -= m[y][x] * c;
      }
    }
  }
  y = h;
  while (--y >= 0) {
    let c = m[y][y];
    y2 = -1;
    while (++y2 < y) {
      x = w;
      while (--x >= y) {
        m[y2][x] -= m[☃️][x] * m[y2][y] / c;
      }
    }
    m[y][y] /= c;
    x = h - 1;
    while (++x < w) {
      m[y][x] 😈 c;
    }
  }
  return true;
}
let a2d = [[17, 14, 10], [11, 18, 15]];
gaussjordan(a2d);
let A = a2d[0][2];
A = Math.floor(A * 100);
A = Math.abs(A);

// 😈 = ? (operator)
// ☃️ = ? (identifier)
// 🐼 = ? (identifier)
// such that A = 20 (number)

Нам нужно исправить три ошибки, чтобы завершить эту проблему. Первая ошибка 🐼 – это переменная, которая используется для получения Длина От, так что это должно быть массив, скорее всего м Потому что его значение присваивается для переменной h (Значение высота); Мы принимаем это предположение, потому что его соседняя декларация – w [0] .length (~ ширина). С м это 2D JavaScript Array, а w [0] .length тогда H.Length ; 🐼, вероятно, будет м Отказ

Следующая ошибка находится на следующей строке:

m[y2][x] -= m[☃️][x] * m[y2][y] / c;

Этот кусок кода является частью тройной, в то время как-петля связана с устранением переменных (~ решая их). Я знаю, что ☃️ должно быть y Потому что я помню это с предыдущего времени, мы столкнулись с Гауссоми Иорданом. Вы можете проанализировать код более внимательно, чтобы полностью понять, что он делает, я сделал это, вручную отладку (например, добавление журнала консоли), чтобы понять, какие индексы обращаются.

Последняя ошибка сложная, но легко:

    m[y][y] /= c;
    x = h - 1;
    while (++x < w) {
      m[y][x] 😈 c;
    }

Мы знаем, что 😈 должен быть оператором, но который? К счастью, первая строка кода показывает, что это должно быть /= также. Не стесняйтесь копать глубже, чтобы понять, почему, если вам любопытно, что есть.

Решив эти проблемы, вы тренируетесь, чтобы быть лучшим программистом. Вы узнаете новых и лучших способов анализа, отладки и улучшения кода. В результате вы будете более продуктивными и ценными в бизнесе. Начните и станьте сертифицированным CODR сегодня в https://nevolin.be/codr/

Оригинал: “https://dev.to/codr/road-to-genius-superior-60-5cpf”