aboutsummaryrefslogtreecommitdiff
path: root/challenge-030/archargelod
diff options
context:
space:
mode:
authorArchargelod <archargelod@gmail.com>2024-03-08 19:02:07 +0800
committerArchargelod <archargelod@gmail.com>2024-03-08 19:02:07 +0800
commitc45f2d8a7ae3836921747c832d2bfe9db7cc9aa9 (patch)
treecea6fb0f51440f00210ab68d018e334c92bc7ef5 /challenge-030/archargelod
parent510484bb98b0d2413f8c09c0a827e91b992d2533 (diff)
downloadperlweeklychallenge-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/README1
-rwxr-xr-xchallenge-030/archargelod/nim/ch_1.nim11
-rwxr-xr-xchallenge-030/archargelod/nim/ch_2.nim44
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