Lv.1秘密の地図


🤖質問する


👍 2022年1月27日

マイコード

<script>
const binaryChange = (num) => {
    let binaryStr = "";
    while (num !== 0) {
        binaryStr = String(num%2).concat(binaryStr)
        num = parseInt(num/2);
    }
    return binaryStr;
}

const encoding = (binary, n) => {
    if (binary.length < n) {
        let zero = "0".repeat(n-binary.length);
        binary = zero.concat(binary);
    }
    let encodedBinary = "";
    for (let v of binary) {
        v === "0" ? encodedBinary += " " : encodedBinary += "#"
    }
    return encodedBinary
}


function solution(n, arr1, arr2) {
    var answer = [];
    let arr1Encode = [];
    let arr2Encode = [];
    
    arr1Encode = arr1.map((v, i) => {
        return encoding(binaryChange(v), n)
    })
    arr2Encode = arr2.map((v,i) => {
        return encoding(binaryChange(v), n)
    })
    
    for (let i=0; i<n; i++) {
        let NthLine = "";
        for (let j=0; j<n; j++) {
            if (arr1Encode[i][j] === "#" || arr2Encode[i][j] === "#") {
                NthLine += "#"
            } else NthLine += " "
        }
        answer.push(NthLine);
    }
    return answer;
}
</script>

ショートコード

<script>
  function solution(n, arr1, arr2) {
      var answer = [];
      let arr1Encode = [];
      let arr2Encode = [];

      arr1Encode = arr1.map((v, i) => {
          return v.toString(2).padStart(n,0).replace(/0/g," ").replace(/1/g, "#")
      })
      arr2Encode = arr2.map((v,i) => {
          return v.toString(2).padStart(n,0).replace(/0/g," ").replace(/1/g, "#")
      })

      for (let i=0; i<n; i++) {
          let NthLine = "";
          for (let j=0; j<n; j++) {
              if (arr1Encode[i][j] === "#" || arr2Encode[i][j] === "#") {
                  NthLine += "#"
              } else NthLine += " "
          }
          answer.push(NthLine);
      }
      return answer;
  }
</script>
だから復習は大切だ.三進法を使うのは数日前にTOStringを習っただけで忘れたのではないでしょうか.値変換も正規表現とreplaceで簡単に...😑