[プログラマー]level 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例


パラメータ値
n: 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
出力[####],####;,####;,####;,#####;,#####]
パラメータ値
n: 6
arr1 [46, 33, 33 ,22, 31, 50]
arr2 [27 ,56, 19, 14, 14, 10]
出力[#####]、[###]、[###]、[####]、[####]、[#####]、[#####]

に答える

function solution(n, arr1, arr2) {

let temp = '';
let result = [];

for(let i =0; i<n ; i++){

  let nBitBinary1 = toBinary(arr1[i],n);
  let nBitBinary2 = toBinary(arr2[i],n);

    for(let i =0; i<n ; i++){
      nBitBinary1[i] === '1' || nBitBinary2[i] === '1' ? temp += '#' : temp += ' ';
    }
    result.push(temp);
     temp = '';
  }
  return result;
}

function toBinary(element,n){
  let binary = element.toString(2);
  binary = '0'.repeat(n-binary.length) + binary;
  return binary;
}
  • arr 1およびarr 2の各要素を計算し、各要素はtoString法を使用してバイナリに変換される.
  • 変換後のバイナリ数を1辺の大きさ(n)のビットにするには、0を加算する必要がある.
  • 1つの
  • 行において、nビットに変換されたarr 1およびarr 2の各要素は、1ビット加算される.
  • arr 1およびarr 2のいずれかのビットであれば、文字列に#を入れます.
  • でない場合は、空白を追加します.
  • の値を動作単位で配列にプッシュし、戻ります.