diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-28 00:33:56 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-28 00:33:56 +0000 |
| commit | e233d3a019dda275d8d790076d25ec92e47b4ffe (patch) | |
| tree | 48516daf26833baca8695204a4d83c81d58a6dd7 /challenge-003/paulo-custodio/python/ch-1.py | |
| parent | 022a9f62eda3b5e188b9f6719a63566d9d7efc8b (diff) | |
| download | perlweeklychallenge-club-e233d3a019dda275d8d790076d25ec92e47b4ffe.tar.gz perlweeklychallenge-club-e233d3a019dda275d8d790076d25ec92e47b4ffe.tar.bz2 perlweeklychallenge-club-e233d3a019dda275d8d790076d25ec92e47b4ffe.zip | |
Add Basic, C, C++, Forth, Lua and Python to challenge 003
Diffstat (limited to 'challenge-003/paulo-custodio/python/ch-1.py')
| -rw-r--r-- | challenge-003/paulo-custodio/python/ch-1.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-003/paulo-custodio/python/ch-1.py b/challenge-003/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..413228bd57 --- /dev/null +++ b/challenge-003/paulo-custodio/python/ch-1.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +# Challenge 003 +# +# Challenge #1 +# Create a script to generate 5-smooth numbers, whose prime divisors are less +# or equal to 5. They are also called Hamming/Regular/Ugly numbers. For more +# information, please check this wikipedia. + +import sys + +# return an iterator to generate the sequence +# the sequence is a merge of all multiples of 2, 3 and 5 +def hamming_gen(): + seq = [[1], [1], [1]] + base = [2, 3, 5] + + while True: + # get the smallest of the multiples + n = min(seq[0][0], seq[1][0], seq[2][0]) + + for i in range(0, 3): + # shift used multiples + if seq[i][0] == n: + seq[i].pop(0) + + # push next multiple + seq[i].append(n*base[i]) + + yield n + + +# main +iter = hamming_gen() +for i in range(0, int(sys.argv[1])): + print(next(iter)) |
