Google のコード チャレンジの一環として、基数 10 の正の整数を と の間0
でバランスの取れた 3 進数形式に変換する問題を解決しています。1000000000
制約の下でテストしたさまざまなケースで機能するようですが、何らかの理由でテスト 4 と 5 に失敗します。これで何が悪いのか分かりますか?
def answer(binary):
# Convert to ternary
ternary = convertToTernary(binary)
# Conver to balanced ternary
balancedTernary = balance(ternary)
return balancedTernary
def balance(tForm):
tForm.append(0)
bTernary = tForm
i = 0;
N = len(tForm)
for i in range(N - 1):
if tForm[i] == 2:
tForm[i] = 'L' # Convert to custom convention now
tForm[i+1] += 1
elif tForm[i] > 2:
tForm[i] = 0
tForm[i+1] += 1
# Apply custom convention to the rest of the coefficients
for i in range(len(tForm)):
if tForm[i] == 0:
tForm[i] = '-'
elif tForm[i] == 1:
tForm[i] = 'R'
else:
tForm[i] = 'L'
return bTernary
def convertToTernary(binary):
tForm = []
while binary > 0:
tForm.append(binary % 3)
binary /= 3
return tForm