diff options
| author | Lucas Ransan <lucas@ransan.tk> | 2021-07-31 15:15:46 +0200 |
|---|---|---|
| committer | Lucas Ransan <lucas@ransan.tk> | 2021-07-31 18:53:01 +0200 |
| commit | 9e306daa9f2883883b3b47bb0ddd4f819cd3c305 (patch) | |
| tree | 05da0de5d9647f56a5949f4ff76d5bf5fa213a87 | |
| parent | 65a2ff6db1e19cc1bd28f2f73aa9b44336a80256 (diff) | |
| download | perlweeklychallenge-club-9e306daa9f2883883b3b47bb0ddd4f819cd3c305.tar.gz perlweeklychallenge-club-9e306daa9f2883883b3b47bb0ddd4f819cd3c305.tar.bz2 perlweeklychallenge-club-9e306daa9f2883883b3b47bb0ddd4f819cd3c305.zip | |
C3 week 123 task 1
| -rw-r--r-- | challenge-123/luc65r/c3/ch-1.c3 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/challenge-123/luc65r/c3/ch-1.c3 b/challenge-123/luc65r/c3/ch-1.c3 new file mode 100644 index 0000000000..44dea486b3 --- /dev/null +++ b/challenge-123/luc65r/c3/ch-1.c3 @@ -0,0 +1,38 @@ +import std::io; + +extern func ulong strtoull(char* str, char** str_end, int base); + +/** + * @require n > 0 + * @pure + **/ +func bool ugly(ulong n) { + while (n != 1) { + /* That's ugly, but compile-time $foreach isn't implemented yet, + and a labelled continue segfaults the compiler… */ + if (n % 2 == 0) { + n /= 2; + } else if (n % 3 == 0) { + n /= 3; + } else if (n % 5 == 0) { + n /= 5; + } else { + return false; + } + } + return true; +} + +func int main(int argc, char** argv) { + if (argc != 2) return 1; + + ulong n = strtoull(argv[1], null, 10); + ulong i; + while (n > 0) { + i++; + if (ugly(i)) n--; + } + io::printf("%u\n", i); + + return 0; +} |
