diff options
| author | Archargelod <archargelod@gmail.com> | 2024-03-08 19:02:07 +0800 |
|---|---|---|
| committer | Archargelod <archargelod@gmail.com> | 2024-03-08 19:02:07 +0800 |
| commit | c45f2d8a7ae3836921747c832d2bfe9db7cc9aa9 (patch) | |
| tree | cea6fb0f51440f00210ab68d018e334c92bc7ef5 /challenge-030/archargelod | |
| parent | 510484bb98b0d2413f8c09c0a827e91b992d2533 (diff) | |
| download | perlweeklychallenge-club-c45f2d8a7ae3836921747c832d2bfe9db7cc9aa9.tar.gz perlweeklychallenge-club-c45f2d8a7ae3836921747c832d2bfe9db7cc9aa9.tar.bz2 perlweeklychallenge-club-c45f2d8a7ae3836921747c832d2bfe9db7cc9aa9.zip | |
weeks 27-40, 259 in Nim
Diffstat (limited to 'challenge-030/archargelod')
| -rw-r--r-- | challenge-030/archargelod/README | 1 | ||||
| -rwxr-xr-x | challenge-030/archargelod/nim/ch_1.nim | 11 | ||||
| -rwxr-xr-x | challenge-030/archargelod/nim/ch_2.nim | 44 |
3 files changed, 56 insertions, 0 deletions
diff --git a/challenge-030/archargelod/README b/challenge-030/archargelod/README new file mode 100644 index 0000000000..6cd57e1074 --- /dev/null +++ b/challenge-030/archargelod/README @@ -0,0 +1 @@ +Solution by archargelod diff --git a/challenge-030/archargelod/nim/ch_1.nim b/challenge-030/archargelod/nim/ch_1.nim new file mode 100755 index 0000000000..f81c8d6381 --- /dev/null +++ b/challenge-030/archargelod/nim/ch_1.nim @@ -0,0 +1,11 @@ +#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off +import std/times + +proc main() = + for year in 2019..2100: + let weekDay = getDayOfWeek(31, mDec, year) + let day = 31 - (weekDay.ord + 1) mod 7 + echo day, " ", mDec, " ", year, " is Sunday" + +when isMainModule: + main() diff --git a/challenge-030/archargelod/nim/ch_2.nim b/challenge-030/archargelod/nim/ch_2.nim new file mode 100755 index 0000000000..69c01c6a55 --- /dev/null +++ b/challenge-030/archargelod/nim/ch_2.nim @@ -0,0 +1,44 @@ +#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off + +proc sorted(a: array[3, int]): array[3, int] = + result = a + if result[1] < result[0]: + swap(result[1], result[0]) + + if result[2] < result[1]: + swap(result[2], result[1]) + if result[1] < result[0]: + swap(result[1], result[0]) + +proc possibleSeriesOf3(val: int): seq[array[3, int]] = + for n1 in countUp(2, val, 2): + var n = [n1, val - n1, 0] + while n[1] > n[2]: + inc n[2] + dec n[1] + let newSeries = n.sorted() + if newSeries notin result: + result.add newSeries + +when isMainModule: + import std/unittest + + const + Expected = [ + [1, 2, 9], + [2, 2, 8], + [2, 3, 7], + [2, 4, 6], + [2, 5, 5], + [1, 4, 7], + [3, 4, 5], + [4, 4, 4], + [1, 5, 6], + [3, 3, 6], + [1, 3, 8], + [1, 1, 10], + ] + + suite "Sums of 3 numbers equal to 12": + test "12 possible series": + check possibleSeriesOf3(12) == Expected |
