處理計算任何基數(基數在2到10之間,包括2和10之間)的和的問題,例如基於10基數的「10」+「20」導致30,以及「10 「+」20「基於基數3導致100.基於Python中基數的總和2.7
我發佈我的代碼和測試用例來驗證它的工作原理,我的問題是如果有任何性能改進或任何想法使代碼更優雅(我有一些重複代碼在我下面的實現)?謝謝。
順便說一句,如果代碼有任何問題,請隨時指出。
def radixSum(x, y, radix):
if not x:
return y
if not y:
return x
# make x longer than y
if (len(y) > len(x)):
tmp = x
x = y
y = tmp
lenCommon = min(len(x), len(y))
count = 0
remaining = 0
i = -1
result=''
# deal with common part
while count < lenCommon:
value = int(x[i]) + int(y[i]) + remaining
if value >= radix:
remaining = 1
else:
remaining = 0
if value >= radix:
value = value - radix
result = str(value) + result
count += 1
i -= 1
# deal with longer string part
while count < len(x):
value = int(x[i]) + remaining
if value >= radix:
remaining = 1
else:
remaining = 0
if value >= radix:
value = value - radix
result = str(value) + result
count += 1
i -= 1
if remaining > 0:
result = str(remaining) + result
return result
if __name__ == "__main__":
print radixSum("10", "10", 2) #100
print radixSum("10", "20", 10) #30
print radixSum("10", "20", 3) #100
print radixSum("100", "20", 10) #120
我投票關閉這一問題作爲題外話,因爲它是「工作規範」,屬於對http://codereview.stackexchange.com –
基數20數字包括字母和數字,如「3f」 – Andomar
@Andomar:是的,但我們不必擔心:「(基數在2到10之間,包括2和10)」。 –