EKG sequence convergence: Difference between revisions

m
Line 255:
=={{header|J}}==
<lang j>
Until =: 2 :'u^:(0-:v)^:_' NB. unused but so fun
prime_factors_of_tail =: ~.@:q:@:{:
numbers_not_in_list =: -.~ >:@:i.@:(>./)
 
 
ekg =: 3 :0 NB. return sequence with next term appendedsequence
if. 1 = # y do. NB. initialize prepend
1 , y
return.
Line 272:
return.
end.
NB. otherwise extend the list's range
yb , >:Until(1 e=. a e. q:) >: >./ y
while. 1 -.@:e. a e. q: b do.
b =. >: b
end.
y , b
)
 
 
ekg^:9&>2 5 7 9 10
Line 283 ⟶ 286:
1 9 3 6 2 4 8 10 5 15
1 10 2 4 6 3 9 12 8 14
 
 
 
Line 289 ⟶ 291:
assert (,2) -: prime_factors_of_tail 6 8 NB. (nub of)
assert 3 4 5 -: numbers_not_in_list 1 2 6
</lang>
Somewhat shorter is ekg2,
<lang j>
index_of_lowest =: [: {. _ ,~ [: I. 1 e."1 prime_factors_of_tail e."1 q:@:numbers_not_in_list
 
g =: 3 :0 NB. return sequence with next term appended
a =. prime_factors_of_tail y
(, (index_of_lowest { numbers_not_in_list)`(([: >:Until(1 e. a e. q:) [: >: >./))@.(_ = index_of_lowest)) y
)
 
ekg2 =: (1&,)`g@.(1<#)
 
assert (3 -: index_of_lowest { numbers_not_in_list)1 2 4 6
 
assert (ekg^:9&> -: ekg2^:9&>) 2 5 7 9 10
</lang>
 
Anonymous user