aboutsummaryrefslogtreecommitdiff
path: root/challenge-050/archargelod
diff options
context:
space:
mode:
authorArchargelod <archargelod@gmail.com>2024-04-07 22:49:46 +0800
committerArchargelod <archargelod@gmail.com>2024-04-07 22:49:46 +0800
commitf0a59983d7ca27d1303de7ace94007491afc60a2 (patch)
treeee7050d14b0af506b084c67490b2ae05cb921e20 /challenge-050/archargelod
parent0495c7534995083a63370f8e93d3834bbe1f054d (diff)
downloadperlweeklychallenge-club-f0a59983d7ca27d1303de7ace94007491afc60a2.tar.gz
perlweeklychallenge-club-f0a59983d7ca27d1303de7ace94007491afc60a2.tar.bz2
perlweeklychallenge-club-f0a59983d7ca27d1303de7ace94007491afc60a2.zip
weeks 49-52, 263 in Nim
Diffstat (limited to 'challenge-050/archargelod')
-rw-r--r--challenge-050/archargelod/README1
-rwxr-xr-xchallenge-050/archargelod/nim/ch_1.nim23
-rwxr-xr-xchallenge-050/archargelod/nim/ch_2.nim22
3 files changed, 46 insertions, 0 deletions
diff --git a/challenge-050/archargelod/README b/challenge-050/archargelod/README
new file mode 100644
index 0000000000..6cd57e1074
--- /dev/null
+++ b/challenge-050/archargelod/README
@@ -0,0 +1 @@
+Solution by archargelod
diff --git a/challenge-050/archargelod/nim/ch_1.nim b/challenge-050/archargelod/nim/ch_1.nim
new file mode 100755
index 0000000000..439b04cf27
--- /dev/null
+++ b/challenge-050/archargelod/nim/ch_1.nim
@@ -0,0 +1,23 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/algorithm
+
+proc merge*(intervals: openarray[HSlice[int, int]]): seq[HSlice[int, int]] =
+ var intervals = intervals.sortedByIt(it.a)
+
+ result.add intervals[0]
+ for interval in intervals.toOpenArray(1, intervals.high):
+ if interval.a <= result[^1].b:
+ result[^1].b = interval.b
+ else:
+ result.add interval
+
+when isMainModule:
+ import std/unittest
+
+ const
+ Test = [2..7, 3..9, 10..12, 15..19, 18..22]
+ Expected = [2..9, 10..12, 15..22]
+
+ suite "Merge Intervals":
+ test "Example 1":
+ check merge(Test) == Expected
diff --git a/challenge-050/archargelod/nim/ch_2.nim b/challenge-050/archargelod/nim/ch_2.nim
new file mode 100755
index 0000000000..37525108db
--- /dev/null
+++ b/challenge-050/archargelod/nim/ch_2.nim
@@ -0,0 +1,22 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/[algorithm, options]
+
+proc findNoble*(numbers: openArray[int]): Option[int] =
+ let numbers = numbers.sorted()
+ for i in 1..numbers.len:
+ let num = numbers[^i]
+ if num == i - 1:
+ return some(num)
+ none(int)
+
+
+when isMainModule:
+ import std/unittest
+
+ const
+ Test = [2, 1, 6, 3]
+ Expected = 2
+
+ suite "Noble Integer":
+ test "Example 1":
+ check findNoble(Test).get == Expected