Prime triangle: Difference between revisions
Content added Content deleted
(→{{header|J}}: more concise approach) |
|||
Line 599: | Line 599: | ||
=={{header|J}}== |
=={{header|J}}== |
||
Essentially, we're traversing a directed graph starting at 1, ending at y, with edges such that adjacent pairs sum to a prime number and intermediate values between 1 and y. |
|||
<lang J>is_prime=: 1&p:@(+/) |
|||
Implementation: |
|||
is_prime_triangle=: {{ |
|||
NB. y is index into L and thus analogous to *a |
|||
p=. is_prime L{~y+0 1 |
|||
if. N=y do. p return.end. |
|||
i=. Y=. y+1 |
|||
if. p do. if. is_prime_triangle Y do. 1 return.end.end. |
|||
⚫ | |||
if. is_prime L{~y,i do. |
|||
L=: (L{~Y,i) (i,Y)} L |
|||
if. is_prime_triangle Y do. 1 return.end. |
|||
L=: (L{~Y,i) (i,Y)} L |
|||
end. |
|||
end. |
|||
0 |
|||
}} |
|||
<lang J>add_plink=: [:;{{ <y,"1 0 x #~ 1 p:+/|:(x=. x-. y),"0/{: y }}"1 |
|||
prime_triangle_counter=: {{ |
|||
prime_pair_seqs=: {{ y add_plink (2}.i.y) add_plink^:(y-2) 1 }}</lang> |
|||
NB. y is index into L and thus analogous to *a |
|||
p=. is_prime L{~y+0 1 |
|||
Task example (displaying counts of number of valid sequences to the left, because that looks nice): |
|||
if. N=y do. |
|||
count=: count+p return. |
|||
⚫ | |||
⚫ | |||
N=. #seqs=. prime_pair_seqs j |
|||
⚫ | |||
end. |
end. |
||
i=. Y=. y+1 |
|||
if. p do. prime_triangle_counter Y end. |
|||
while. M>i=. i+2 do. |
|||
if. is_prime L{~y,i do. |
|||
L=: (L{~Y,i) (i,Y)} L |
|||
prime_triangle_counter Y |
|||
L=: (L{~Y,i) (i,Y)} L |
|||
end. |
|||
end. |
|||
count |
|||
}} |
}} |
||
task 20 |
|||
prime_triangles=: {{ |
|||
for_k. i.y-1 do. |
|||
L=: l=. 1+i.1+M=: 1+N=: k |
|||
count=: 0 |
|||
prime_triangle_counter 0 |
|||
L=: l |
|||
assert is_prime_triangle 0 |
|||
⚫ | |||
end. |
|||
}}</lang> |
|||
Task example: |
|||
⚫ | |||
prime_triangles 20 |
|||
1 | 1 2 |
1 | 1 2 |
||
1 | 1 2 3 |
1 | 1 2 3 |
||
Line 655: | Line 621: | ||
1 | 1 4 3 2 5 |
1 | 1 4 3 2 5 |
||
1 | 1 4 3 2 5 6 |
1 | 1 4 3 2 5 6 |
||
2 | 1 |
2 | 1 6 5 2 3 4 7 |
||
4 | 1 |
4 | 1 6 7 4 3 2 5 8 |
||
7 | 1 |
7 | 1 6 7 4 3 8 5 2 9 |
||
24 | 1 |
24 | 1 6 7 4 9 8 5 2 3 10 |
||
80 | 1 |
80 | 1 10 9 8 5 6 7 4 3 2 11 |
||
216 | 1 |
216 | 1 10 9 8 11 6 7 4 3 2 5 12 |
||
648 | 1 |
648 | 1 12 11 8 9 10 7 6 5 2 3 4 13 |
||
1304 | 1 |
1304 | 1 12 11 8 9 10 13 6 7 4 3 2 5 14 |
||
3392 | 1 |
3392 | 1 12 11 8 9 14 5 6 13 10 7 4 3 2 15 |
||
13808 | 1 |
13808 | 1 12 11 8 15 14 9 10 13 6 5 2 3 4 7 16 |
||
59448 | 1 |
59448 | 1 16 15 14 9 10 13 6 11 12 7 4 3 8 5 2 17 |
||
155464 | 1 |
155464 | 1 16 15 14 17 12 11 8 9 10 13 6 7 4 3 2 5 18 |
||
480728 | 1 |
480728 | 1 18 13 16 15 14 17 12 11 8 9 10 7 6 5 2 3 4 19 |
||
1588162 | 1 |
1588162 | 1 18 19 12 17 14 15 16 13 10 9 8 11 2 5 6 7 4 3 20</lang> |
||
=={{header|Java}}== |
=={{header|Java}}== |