Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
49
Task/Prime-triangle/Python/prime-triangle.py
Normal file
49
Task/Prime-triangle/Python/prime-triangle.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
from numpy import array
|
||||
# for Rosetta Code by MG - 20230312
|
||||
def is_prime(n: int) -> bool:
|
||||
assert n < 64
|
||||
return ((1 << n) & 0x28208a20a08a28ac) != 0
|
||||
|
||||
def prime_triangle_row(a: array, start: int, length: int) -> bool:
|
||||
if length == 2:
|
||||
return is_prime(a[0] + a[1])
|
||||
for i in range(1, length - 1, 1):
|
||||
if is_prime(a[start] + a[start + i]):
|
||||
a[start + i], a[start + 1] = a[start + 1], a[start + i]
|
||||
if prime_triangle_row(a, start + 1, length - 1):
|
||||
return True
|
||||
a[start + i], a[start + 1] = a[start + 1], a[start + i]
|
||||
return False
|
||||
|
||||
def prime_triangle_count(a: array, start: int, length: int) -> int:
|
||||
count: int = 0
|
||||
if length == 2:
|
||||
if is_prime(a[start] + a[start + 1]):
|
||||
count += 1
|
||||
else:
|
||||
for i in range(1, length - 1, 1):
|
||||
if is_prime(a[start] + a[start + i]):
|
||||
a[start + i], a[start + 1] = a[start + 1], a[start + i]
|
||||
count += prime_triangle_count(a, start + 1, length - 1)
|
||||
a[start + i], a[start + 1] = a[start + 1], a[start + i]
|
||||
return count
|
||||
|
||||
def print_row(a: array):
|
||||
if a == []:
|
||||
return
|
||||
print("%2d"% a[0], end=" ")
|
||||
for x in a[1:]:
|
||||
print("%2d"% x, end=" ")
|
||||
print()
|
||||
|
||||
for n in range(2, 21):
|
||||
tr: array = [_ for _ in range(1, n + 1)]
|
||||
if prime_triangle_row(tr, 0, n):
|
||||
print_row(tr)
|
||||
print()
|
||||
for n in range(2, 21):
|
||||
tr: array = [_ for _ in range(1, n + 1)]
|
||||
if n > 2:
|
||||
print(" ", end="")
|
||||
print(prime_triangle_count(tr, 0, n), end="")
|
||||
print()
|
||||
Loading…
Add table
Add a link
Reference in a new issue