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
Способ собирать сообщение выглядит следующим образом
- начать вверху слева
- Переместить по диагонали
- Когда больше не может перемещать, попробуйте переключиться на по диагонали правильно
- Когда больше не может переместить, попробуйте переключиться на диагонали вниз справа, повторите 3
- Остановитесь, когда нельзя и не двигаться прямо или вверх. то
Персонаж на пути это сообщение Для ввода выше, Отложен должно быть возвращено.
Анализ
Во время движения вперед направление меняется только вдоль оси 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”