[アルゴリズム問題]秘密地図


質問する


ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
地図は、エッジ長nの正方形の配列形式で、各セルは「空白」(")または「壁」("#")の2種類で構成されています.
地図全体を2枚の地図で重ねることができます.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1も地図2も空白の部分であり、地図全体においても空白である.
「地図1」と「地図2」はそれぞれ整数配列で暗号化されている.
暗号化された配列は,地図の横線ごとに壁部分を1に符号化し,空白部分を0に符号化したときのバイナリ値の配列である.

ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.

コード#コード#

function solution(n, arr1, arr2) {
    let answer = [];
    for (let i = 0; i < n; i++)
        answer.push(arr1[i] | arr2[i]);

    answer = answer.map(el => el.toString(2).padStart(n, '0'));
    return answer.map(el => el.replace(/1/g, '#').replace(/0/g, ' '));
}

に答える

  • ビット演算子orによりarr 1とarr 2が位置する配列
  • を作成する.
  • バイナリに変換後、0を充填してビット数
  • を調整する.
  • 1を0に置き換え、
  • に戻る.
    出典:プログラマーコードテスト練習、https://programmers.co.kr/learn/challenges