diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-01-05 21:01:57 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-01-05 21:02:25 +0100 |
| commit | bbc66927a06a44a3e4c4223ef4d159b597734a5b (patch) | |
| tree | 6f4cc0d3aafd152db0c2d6e2ca28cb38b6aa3990 | |
| parent | ada8b466f3fe8efcf3b85f22495c744517df42ca (diff) | |
| download | perlweeklychallenge-club-bbc66927a06a44a3e4c4223ef4d159b597734a5b.tar.gz perlweeklychallenge-club-bbc66927a06a44a3e4c4223ef4d159b597734a5b.tar.bz2 perlweeklychallenge-club-bbc66927a06a44a3e4c4223ef4d159b597734a5b.zip | |
Week 3, part 1: different algorithm for bc solution.
| -rw-r--r-- | challenge-003/abigail/bc/ch-1.bc | 39 | ||||
| -rw-r--r-- | challenge-003/abigail/t/ctest.ini | 3 |
2 files changed, 36 insertions, 6 deletions
diff --git a/challenge-003/abigail/bc/ch-1.bc b/challenge-003/abigail/bc/ch-1.bc index d3336b509d..bbbbdf3a2e 100644 --- a/challenge-003/abigail/bc/ch-1.bc +++ b/challenge-003/abigail/bc/ch-1.bc @@ -1,8 +1,35 @@ -max = read () -for (base2 = 1; base2 <= max; base2 *= 2) { - for (base3 = base2; base3 <= max; base3 *= 3) { - for (base5 = base3; base5 <= max; base5 *= 5) { - base5 - } +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-003 +# + +# +# Run as: bc ch-1.bc < input-file +# + +while (1) { + n = read () + if (n == 0) { + break } + ugly [0] = 1 + next_2 = 0 + next_3 = 0 + next_5 = 0 + index = 1 + while (index < n) { + u2 = 2 * ugly [next_2] + u3 = 3 * ugly [next_3] + u5 = 5 * ugly [next_5] + if ((u2 <= u3) && (u2 <= u5)) {min = u2} + if ((u3 <= u2) && (u3 <= u5)) {min = u3} + if ((u5 <= u2) && (u5 <= u3)) {min = u5} + ugly [index] = min + if (2 * ugly [next_2] <= ugly [index]) {next_2 = next_2 + 1} + if (3 * ugly [next_3] <= ugly [index]) {next_3 = next_3 + 1} + if (5 * ugly [next_5] <= ugly [index]) {next_5 = next_5 + 1} + index = index + 1 + } + ugly [index - 1] } diff --git a/challenge-003/abigail/t/ctest.ini b/challenge-003/abigail/t/ctest.ini index a3434f63d2..71b4641536 100644 --- a/challenge-003/abigail/t/ctest.ini +++ b/challenge-003/abigail/t/ctest.ini @@ -8,3 +8,6 @@ 1-2 = Larger Numbers
2-1 = Minimal triangle
2-2 = 15 row triangle
+
+[1-1,1-2/bc]
+add_to_input = 0
|
