aboutsummaryrefslogtreecommitdiff
path: root/challenge-254/archargelod
diff options
context:
space:
mode:
authorArchargelod <archargelod@gmail.com>2024-02-01 19:47:08 +0800
committerArchargelod <archargelod@gmail.com>2024-02-01 19:47:08 +0800
commitd9d99d0c3e7f15f7dd9d403a720dbf7e0972f67b (patch)
tree5ea7a24cbef785b42722d4e29f12e40a5e0ac8c5 /challenge-254/archargelod
parente717eee8ff6764a61aabbc1c6b449ee36c195a32 (diff)
downloadperlweeklychallenge-club-d9d99d0c3e7f15f7dd9d403a720dbf7e0972f67b.tar.gz
perlweeklychallenge-club-d9d99d0c3e7f15f7dd9d403a720dbf7e0972f67b.tar.bz2
perlweeklychallenge-club-d9d99d0c3e7f15f7dd9d403a720dbf7e0972f67b.zip
solution for week 254
Diffstat (limited to 'challenge-254/archargelod')
-rw-r--r--challenge-254/archargelod/README1
-rwxr-xr-xchallenge-254/archargelod/nim/ch_1.nim17
-rwxr-xr-xchallenge-254/archargelod/nim/ch_2.nim31
3 files changed, 49 insertions, 0 deletions
diff --git a/challenge-254/archargelod/README b/challenge-254/archargelod/README
new file mode 100644
index 0000000000..6cd57e1074
--- /dev/null
+++ b/challenge-254/archargelod/README
@@ -0,0 +1 @@
+Solution by archargelod
diff --git a/challenge-254/archargelod/nim/ch_1.nim b/challenge-254/archargelod/nim/ch_1.nim
new file mode 100755
index 0000000000..c908c6d54a
--- /dev/null
+++ b/challenge-254/archargelod/nim/ch_1.nim
@@ -0,0 +1,17 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/math
+
+proc isPower(n, power: Natural): bool =
+ let root = round pow(n.float, 1 / power)
+ almostEqual(n.float, pow(root, power.float))
+
+when isMainModule:
+ import std/unittest
+
+ suite "required tests":
+ test "27 is power of 3":
+ check 27.isPower(3)
+ test "0 is power of 3":
+ check 0.isPower(3)
+ test "6 is not a power of 3":
+ check not 6.isPower(3)
diff --git a/challenge-254/archargelod/nim/ch_2.nim b/challenge-254/archargelod/nim/ch_2.nim
new file mode 100755
index 0000000000..74dba95da4
--- /dev/null
+++ b/challenge-254/archargelod/nim/ch_2.nim
@@ -0,0 +1,31 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/[strutils, sugar]
+
+const Vowels = {'a','e','i','o','u'}
+
+proc reversedVowels*(s: string): string =
+ let vowels = collect:
+ for i in countDown(s.high, 0):
+ let c = s[i].toLowerAscii
+ if c in Vowels: c
+
+ result = s
+
+ var ind = 0
+ for c in result.mItems:
+ if c.toLowerAscii in Vowels:
+ c = if c.isUpperAscii: vowels[ind].toUpperAscii else: vowels[ind]
+ inc ind
+
+when isMainModule:
+ import std/unittest
+
+ suite "required tests":
+ test "Raku":
+ check reversedVowels("Raku") == "Ruka"
+ test "Perl":
+ check reversedVowels("Perl") == "Perl"
+ test "Julia":
+ check reversedVowels("Julia") == "Jaliu"
+ test "Uiua":
+ check reversedVowels("Uiua") == "Auiu"