秘密の地図


説明する

function solution(n, arr1, arr2) {
  var answer = [];

  let b_arr1 = toBinary(arr1, n);
  let b_arr2 = toBinary(arr2, n);

  for (let i = 0; i < n; i++) {
    let line = ""
    for (let j = 0; j < n; j++) {
      if (b_arr1[i][j] === '0' && b_arr2[i][j] === '0') {
        line += " "
      } else {
        line += "#"
      }
    }
    answer.push(line)
  }

  return answer;
}

function toBinary(arr, n) {
  let b_arr = []
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].toString(2).length < n) {
      let plus_z = n - arr[i].toString(2).length;
      let p_z = ""
      for (let j = 0; j < plus_z; j++) {
        p_z += "0"
      }
      b_arr[i] = p_z + arr[i].toString(2);
    } else {
      b_arr[i] = arr[i].toString(2)
    }
  }
  return b_arr;
}
とても長いです.

他人解答(gyim 1345)


人の解答を見たらやっぱり1~2行で終わる人がいました
モジュール形式で作られている人もいて、とてもきれいに見えます.
まずきれいなモジュールフォーマットを作成したほうがいいと思います.だから、まず見てから、コードを修正するのに時間がかかります.

私が学びたい解答

const solution = (n, arr1, arr2) => {
    const binaryStringArray1 = decimalToBinary(arr1, n);
    const binaryStringArray2 = decimalToBinary(arr2, n);
    const map1 = binaryStringArray1.map(splitToNumbers)
    const map2 = binaryStringArray2.map(splitToNumbers)
    const combinedMap = sumArray(map1, map2);

    return numberToSharpAndEmpty(combinedMap).map(v => v.join(''));
}

const numberToSharpAndEmpty = (arr) => {    
    return arr.map((v1, i1) => {
        return v1.map((v2, i2) => {
            return (v2 === 0) ? ' ' : '#';  
        }
    )})

    console.log(x)
};


const sumArray = (arr1, arr2) => arr1.map((v1, i1) => v1.map((v2, i2) => v2 + arr2[i1][i2]));

const decimalToBinary = (array, n) => array.map(item => item.toString(2).padStart(n, '0'));

const splitToNumbers = (str) => str.split('').map(e => Number(e));

どうしたんですか。

  • モジュールの形でよく区切られているようです.
  • padStartは、地図の運用に優れています.△短期間で地図を使うことはできませんが、どんどん見たり書いたりするしかないと思います.