Goodstein Sequence: Difference between revisions

Python example
(Added Wren)
(Python example)
Line 153:
Term 16 of Goodstein(16): 2771517379996516970665566613559367879596937714713289695169887161862950129194382447127464877388711781205972046374648603545513430106433206876557475731408608398953667881600740852227698037876781766310900319669456854530159244376159780346700931210394158247781113134808720678004134212529413831368888355854503034587880113970541681685966414888841800498150131839091463034162026108960280455620621355407543489960326268155088833218122810217973039385643494213235664908254695964740257569988152978579630435471016976693529875691083071137361386386918409765002837648351746984484967203877495399596876291343126699827442908994036031608979805166915596436929638418152127561722561465793969723556331679336828840983098559789555364076924597258115780567651772009250336359472037679350612341393780002377587368649157608579801815531133644879180066181854487069796160774056572568941004114162614925
</pre>
 
=={{header|Python}}==
{{trans|Julia}}
<stntaxhighlight lang="python">def decompose(n, b):
if n < b:
return n
decomp = []
e = 0
while n != 0:
n, r = divmod(n, b)
if r > 0:
decomp.append([r, decompose(e, b)])
e += 1
 
return decomp
 
 
def evaluate(d, b):
if type(d) is int:
return d
return sum(j * b ** evaluate(k, b) for j, k in d)
 
 
def goodstein(n, maxlen=10):
seq = []
b = 2
while len(seq) < maxlen:
seq.append(n)
if n == 0:
break
d = decompose(n, b)
b += 1
n = evaluate(d, b) - 1
 
return seq
 
 
def A266201(n):
"""Get the Nth term of Goodstein(n) sequence counting from 0, see https://oeis.org/A266201"""
return goodstein(n, n + 1)[-1]
 
 
if __name__ == "__main__":
 
print("Goodstein(n) sequence (first 10) for values of n from 0 through 7:")
for i in range(8):
print(f"Goodstein of {i}: {goodstein(i)}")
 
print(
"\nThe Nth term of Goodstein(N) sequence counting from 0, for values of N from 0 through 16:"
)
for i in range(17):
print(f"Term {i} of Goodstein({i}): {A266201(i)}")
</syntaxhighlight>{{out}}
<pre>
Goodstein(n) sequence (first 10) for values of n from 0 through 7:
Goodstein of 0: [0]
Goodstein of 1: [1, 0]
Goodstein of 2: [2, 2, 1, 0]
Goodstein of 3: [3, 3, 3, 2, 1, 0]
Goodstein of 4: [4, 26, 41, 60, 83, 109, 139, 173, 211, 253]
Goodstein of 5: [5, 27, 255, 467, 775, 1197, 1751, 2454, 3325, 4382]
Goodstein of 6: [6, 29, 257, 3125, 46655, 98039, 187243, 332147, 555551, 885775]
Goodstein of 7: [7, 30, 259, 3127, 46657, 823543, 16777215, 37665879, 77777775, 150051213]
 
The Nth term of Goodstein(N) sequence counting from 0, for values of N from 0 through 16:
Term 0 of Goodstein(0): 0
Term 1 of Goodstein(1): 0
Term 2 of Goodstein(2): 1
Term 3 of Goodstein(3): 2
Term 4 of Goodstein(4): 83
Term 5 of Goodstein(5): 1197
Term 6 of Goodstein(6): 187243
Term 7 of Goodstein(7): 37665879
Term 8 of Goodstein(8): 20000000211
Term 9 of Goodstein(9): 855935016215
Term 10 of Goodstein(10): 44580503598539
Term 11 of Goodstein(11): 2120126221988686
Term 12 of Goodstein(12): 155568095557812625
Term 13 of Goodstein(13): 6568408355712901455
Term 14 of Goodstein(14): 295147905179358418247
Term 15 of Goodstein(15): 14063084452070776884879
Term 16 of Goodstein(16): 2771517379996516970665566613559367879596937714713289695169887161862950129194382447127464877388711781205972046374648603545513430106433206876557475731408608398953667881600740852227698037876781766310900319669456854530159244376159780346700931210394158247781113134808720678004134212529413831368888355854503034587880113970541681685966414888841800498150131839091463034162026108960280455620621355407543489960326268155088833218122810217973039385643494213235664908254695964740257569988152978579630435471016976693529875691083071137361386386918409765002837648351746984484967203877495399596876291343126699827442908994036031608979805166915596436929638418152127561722561465793969723556331679336828840983098559789555364076924597258115780567651772009250336359472037679350612341393780002377587368649157608579801815531133644879180066181854487069796160774056572568941004114162614925
</pre>
 
 
=={{header|Wren}}==
4,105

edits