什麼,我試圖做的:196算法,在功能可選輸入
如果用戶指定
return_length=True
調用你的函數的時候,它應該返回一加步數達到迴文所需的算法數。例如,對於5280和return_length=True
的輸入,您的函數應返回4(請注意,這是序列[5280,6105,11121,23232]中的條目總數)。例如,輸入值爲11時,該函數應該返回1,因爲它已經是一個迴文數。如果用戶沒有指定
return_length
或指定的return_length=False
,你的函數應該返回算法終止的迴文數。例如,輸入5280時,算法應該返回23232(一個整數,而不是一個字符串)。類似地,與89的輸入端,它應該返回整數8813200023188.
在196算法一些背景資料:
取的兩個數字或多種任意正整數,扭轉數字,並加入到原始號碼。這是反向然後添加序列的操作。現在重複這樣得到的和的程序,直到獲得迴文數。這個程序很快爲大多數整數產生迴文數字。例如,從編號5280開始產生序列5280,6105,51221,23232。將算法應用於1,2,3,...的最終結果是1,2,3,4,5,6,7 ,8,9,11,11,33,44,55,66,77,88,99,121,...(Sloane的A033865)。 89的值是特別大,爲8813200023188.(從http://mathworld.wolfram.com/196-Algorithm.html)
我迄今爲止:我
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_36.py", line 10, in <module>
exec compile(u"print _support_.syseval(python, u'alg196(34)', __SAGE_TMP_DIR__)" + '\n', '', 'single')
File "", line 1, in <module>
File "/sagenb/sage_install/sage-5.3-sage.math.washington.edu-x86_64-Linux/devel/sagenb-git/sagenb/misc/support.py", line 487, in syseval
return system.eval(cmd, sage_globals, locals = sage_globals)
File "/sagenb/sage_install/sage-5.3-sage.math.washington.edu-x86_64-Linux/local/lib/python2.7/site-packages/sage/misc/python.py", line 56, in eval
eval(z, globals)
File "", line 1, in <module>
File "", line 3, in alg196
TypeError: 'int' object has no attribute '__getitem__'
不知道如何:
def alg196(x, y = false):
if y==False:
while x == x[::-1]:
x==x+x[::-1]
return x
else:
seq = [x]
while x == x[::-1]:
x==x+x[::-1]
seq.append(x)
return seq
我得到的錯誤完全解決這個問題或錯誤。
採取的一些信息的答案我有這個新的代碼:
def alg196(x, y = false):
if y==False:
while str(x) == str(x)[::-1]:
x=str(x)+str(x)[::-1]
return x
else:
seq = [x]
while str(x) == str(x)[::-1]:
x = str(x)+str(x)[::-1]
seq.append(x)
return seq
,但仍沒有得到迴文數或序列的迴文數..
基本上它使一個迴文數,要麼返回迴文或序列才能到迴文數。 – user1698174