リストに 1 がある場合は結果が 1 になり、それ以外の場合は 0 になるように、すべてゼロまたは 1 を含むリストの要素を合計する必要があります。
def binary_search(l, low=0,high=-1):
if not l: return -1
if(high == -1): high = len(l)-1
if low == high:
if l[low] == 1: return low
else: return -1
mid = (low + high)//2
upper = [l[mid:high]]
lower = [l[0:mid-1]]
u = sum(int(x) for x in upper)
lo = sum(int(x) for x in lower)
if u == 1: return binary_search(upper, mid, high)
elif lo == 1: return binary_search(lower, low, mid-1)
return -1
l = [0 for x in range(255)]
l[123] = 1
binary_search(l)
テストに使用しているコード
u = sum(int(x) for x in upper)
インタープリターでは正常に動作しますが、エラーが発生します
TypeError: int() 引数は、'list' ではなく、文字列または数値でなければなりません
Python を使い始めたばかりで、何が問題なのかわかりません (私が C++ で書いたバージョンも動作しません)。
誰にも指針がありますか?
また、単純な10進数の加算ではなく、2進数のxorになるように合計するにはどうすればよいですか?