Blum integer: Difference between revisions

Content added Content deleted
(→‎{{header|J}}: considerably faster)
Line 297: Line 297:
=={{header|J}}==
=={{header|J}}==


Implementation: <syntaxhighlight lang=J>blumseq=: {{
Implementation: <syntaxhighlight lang=J>isblum=: {{
b=. 1e3
ab=. q: y
p=. (#~ 1 p: ])<.3 4 p.i.b
if. 2= #ab do.
r=. /:~ (</~ #&, */~) p
if. </ab do.
*./3=4|ab
L=. done=. 0
while. -.done do.
else. 0 end.
L0=. L
else. 0 end.
}}"0
P=. (#~ 1 p: ])<.3 4 p. b+i.1e3

R1=. p (</ #&, */) P
blumseq=: {{
R2=. (</~ #&, */~) P
b=. b+1e3
r=. (#~ isblum) }.i.b=. 1e4
p=. p,P
while. y>#r do.
r=. /:~ r, R1, R2
r=. r, (#~ isblum) b+i.1e4
L=. r I. {.R2
b=. b+1e4
if. y<L do.
L=. y{r
done=. (L=L0)*0=#$L0
r=. (y+1){.r
end.
end.
end.
y{.r
y{.r
}}</syntaxhighlight>
}}</syntaxhighlight>

In other words, generate some blum numbers and keep adding to them until the smallest number being added to the sequence exceeds the largest value within the desired sequence length.


Task examples:
Task examples: