[Lv 1]秘密の地図


秘密の地図

問題の説明


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

    入力フォーマット


    地図に入るエッジサイズnと2つの整数配列arr 1とarr 2を入力します.
  • 1 ≦ n ≦ 16
  • arr 1,arr 2は長さnの整数配列である.
  • 整数配列の各要素xがバイナリ数に変換されたときの長さはn以下である.すなわち、0≦x≦2 n−1を満たす.
  • 出力フォーマット


    元の秘密地図を復号し,'#',공백からなる文字列配列で出力する.

    I/O例



    function solution(n, arr1, arr2) {
      let result = arr1.map((a, i) =>
        (a | arr2[i])	// 비밀지도는 arr1[i] or arr2[i]
          .toString(2)	// 10진수는 2진수로
          .padStart(n, 0)	// 맨 앞 0 제거되지 않도록
          .replace(/0/g, " ")	// 0은 공백으로
          .replace(/1/g, "#")	// 1은 #으로
      );
      return result;