diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-10 18:31:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-10 18:31:57 +0000 |
| commit | ea660d1fd8df468cb05ea02c26c8af9d8a51b160 (patch) | |
| tree | bad4987ce5d530b1b7be774db7f2714cb3527c77 /challenge-147/roger-bell-west/python | |
| parent | e9411bdc7658179af3f23d3ada7970323547a7d7 (diff) | |
| parent | 8580bd80aa9245695b20c075a18dfac2061f7579 (diff) | |
| download | perlweeklychallenge-club-ea660d1fd8df468cb05ea02c26c8af9d8a51b160.tar.gz perlweeklychallenge-club-ea660d1fd8df468cb05ea02c26c8af9d8a51b160.tar.bz2 perlweeklychallenge-club-ea660d1fd8df468cb05ea02c26c8af9d8a51b160.zip | |
Merge pull request #5497 from Firedrake/rogerbw-challenge-147
Solutions for challenge #147
Diffstat (limited to 'challenge-147/roger-bell-west/python')
| -rwxr-xr-x | challenge-147/roger-bell-west/python/ch-1.py | 53 | ||||
| -rwxr-xr-x | challenge-147/roger-bell-west/python/ch-2.py | 39 |
2 files changed, 92 insertions, 0 deletions
diff --git a/challenge-147/roger-bell-west/python/ch-1.py b/challenge-147/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..18f827e01c --- /dev/null +++ b/challenge-147/roger-bell-west/python/ch-1.py @@ -0,0 +1,53 @@ +#! /usr/bin/python3 + +import unittest + +from math import sqrt,floor +from collections import deque + +def genprimes(mx): + primesh=set(range(2,4)) + for i in range(6,mx+2,6): + for j in range(i-1,i+2,2): + if j <= mx: + primesh.add(j) + q=deque([2,3,5,7]) + p=q.popleft() + mr=floor(sqrt(mx)) + while p <= mr: + if p in primesh: + for i in range(p*p,mx+1,p): + primesh.discard(i) + if len(q) < 2: + q.append(q[-1]+4) + q.append(q[-1]+2) + p=q.popleft() + primes=list(primesh) + primes.sort() + return primes + +def ltruncprimes(count): + out=[] + lt=0 + p=[str(i) for i in genprimes(500)] + pp=set(p) + for pc in p: + l=len(pc) + c=True + for i in range(1,l): + if not pc[i:l] in pp: + c=False + break + if c: + out.append(int(pc)) + lt += 1 + if lt >= count: + break + return out + +class TestLtruncprimes(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(ltruncprimes(20),[2, 3, 5, 7, 13, 17, 23, 37, 43, 47, 53, 67, 73, 83, 97, 113, 137, 167, 173, 197],'example 1') + +unittest.main() diff --git a/challenge-147/roger-bell-west/python/ch-2.py b/challenge-147/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..b524b7e5e5 --- /dev/null +++ b/challenge-147/roger-bell-west/python/ch-2.py @@ -0,0 +1,39 @@ +#! /usr/bin/python3 + +def pentagon(n): + return int(n*(3*n-1)/2) + +def pentpair(): + fpent=[0] + rpent=dict() + mx=0 + a=1 + while 1: + while mx < a: + mx += 1 + fpent.append(pentagon(mx)) + rpent[fpent[mx]]=mx + for b in range(1,a): + d=fpent[a]-fpent[b] + if d in rpent: + s=fpent[a]+fpent[b] + while s > fpent[mx]: + mx += 1 + fpent.append(pentagon(mx)) + rpent[fpent[mx]]=mx + if s in rpent: + print("P({:d}) + P({:d}) = {:d} + {:d} = {:d} = P({:d})".format( + a, b, + fpent[a], fpent[b], + s, + rpent[s])) + print("P({:d}) - P({:d}) = {:d} - {:d} = {:d} = P({:d})".format( + a, b, + fpent[a], fpent[b], + d, + rpent[d])) + quit() + a += 1 + + +pentpair() |
