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

BFE.DEV # 9. декодировать сообщение

https://bfe.dev похож на лецкод для разработчиков Frontend. Я использую его для практики моих навыков …. Помечено JavaScript, интервью, Facebook.

https://bfe.dev похоже на лецкоде для разработчиков Frontend. Я использую его, чтобы практиковать свои навыки.

Эта статья о проблеме кодирования BFE.DEV # 9. декодировать сообщение

Проблема

Ваши дают 2-D массив символов. В нем есть скрытое сообщение.

I B C A L K A
D R F C A E A
G H O E L A D 

Способ собирать сообщение выглядит следующим образом

  1. начать вверху слева
  2. Переместить по диагонали
  3. Когда больше не может перемещать, попробуйте переключиться на по диагонали правильно
  4. Когда больше не может переместить, попробуйте переключиться на диагонали вниз справа, повторите 3
  5. Остановитесь, когда нельзя и не двигаться прямо или вверх. то

Персонаж на пути это сообщение Для ввода выше, Отложен должно быть возвращено.

Анализ

Во время движения вперед направление меняется только вдоль оси Y, что означает Мы могли бы использовать флаг для удержания вертикального направления Отказ

Отслеживая текущую позицию х, у мы могли бы получить следующую позицию х + 1, y + 1 или х + 1, у - 1 Отказ

Когда граница встречается, мы изменяем вертикальное направление. Когда последний элемент пересекается, остановите и верните результат.

Давайте напишем какой-нибудь код

Код довольно прост.

/**
 * @param { string[][] } message
 * @returns { string }
 */
function decode(message) {
  // edge case
  const rows = message.length
  if (rows === 0) return ''
  const cols = message[0].length
  if (cols === 0) return ''

  let result = ''
  let i = 0
  let j = 0

  // keep track of the direction vertically
  let directionY = 1

  while (j < cols) {
    result += message[i][j]

    // switch direction at the border
    if (i === rows - 1) {
      directionY = -1
    }
    if (i === 0) {
      directionY = 1
    }

    i += directionY
    j += 1
  }

  return result
}

Я опубликовал выше решения здесь

Прошедший!

Если вы заинтересованы, попробуйте на BFE.DEV https://bigfrontend.dev/problem/decode-message.

Надеюсь, это поможет, увидимся в следующий раз!

Оригинал: “https://dev.to/jser_zanp/bfe-dev-9-decode-message-28dh”