Python:アルゴリズム(ビット演算子)


Q.2018麦わら帽子問題ここを確認!

def getMap(n, arr1, arr2):
    answer = []
    for i in range(n):
        bin_str = bin(arr1[i] | arr2[i])[2:]
        answer.append(('0' * (n-len(bin_str)) + bin_str)
        .replace('1', '#').replace('0'," "))
    return answer
  • 2枚の地図を重ねる必要があるため|(or)演算子
  • bin()メソッドは前に0 bを加えて戻るので[2:]処理
  • replace()メソッドは1行連続使用可能
  • 💡モデルの答え
    def getMap(n, arr1, arr2):
          return [format(arr1[i] | arr2[i], f'0{n}b')
          .replace('1', '#').replace('0', ' ') for i in range(n)]