aboutsummaryrefslogtreecommitdiff
path: root/challenge-042/archargelod
diff options
context:
space:
mode:
authorArchargelod <archargelod@gmail.com>2024-03-23 13:33:35 +0800
committerArchargelod <archargelod@gmail.com>2024-03-23 13:33:35 +0800
commit3a120930c5773eba4641d49e02ea5e58c12dcfcb (patch)
tree703beab5827accad694e4d0ae60c5edf8e69ecf9 /challenge-042/archargelod
parent8e95e94de527f8344f979dbb45b935139b1ddeb7 (diff)
downloadperlweeklychallenge-club-3a120930c5773eba4641d49e02ea5e58c12dcfcb.tar.gz
perlweeklychallenge-club-3a120930c5773eba4641d49e02ea5e58c12dcfcb.tar.bz2
perlweeklychallenge-club-3a120930c5773eba4641d49e02ea5e58c12dcfcb.zip
weeks 41-47, 260, 261 in Nim
Diffstat (limited to 'challenge-042/archargelod')
-rw-r--r--challenge-042/archargelod/README1
-rwxr-xr-xchallenge-042/archargelod/nim/ch_1.nim14
-rwxr-xr-xchallenge-042/archargelod/nim/ch_2.nim31
3 files changed, 46 insertions, 0 deletions
diff --git a/challenge-042/archargelod/README b/challenge-042/archargelod/README
new file mode 100644
index 0000000000..6cd57e1074
--- /dev/null
+++ b/challenge-042/archargelod/README
@@ -0,0 +1 @@
+Solution by archargelod
diff --git a/challenge-042/archargelod/nim/ch_1.nim b/challenge-042/archargelod/nim/ch_1.nim
new file mode 100755
index 0000000000..96ca785d38
--- /dev/null
+++ b/challenge-042/archargelod/nim/ch_1.nim
@@ -0,0 +1,14 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/math
+
+proc toBase(dec, base: int): string =
+ var dec = dec
+ while dec > 0:
+ var rem = 0
+ (dec, rem) = divmod(dec, base)
+ result.insert($rem, 0)
+
+when isMainModule:
+ for i in 0..50:
+ echo "Decimal ", i, " = Octal ", i.toBase(8)
+
diff --git a/challenge-042/archargelod/nim/ch_2.nim b/challenge-042/archargelod/nim/ch_2.nim
new file mode 100755
index 0000000000..57a722e222
--- /dev/null
+++ b/challenge-042/archargelod/nim/ch_2.nim
@@ -0,0 +1,31 @@
+#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off
+import std/random
+
+const
+ OpeningBracket = '('
+ ClosingBracket = ')'
+ Brackets = [OpeningBracket, ClosingBracket]
+
+proc genRandomBrackets: string =
+ result = newString(rand(1..60) * 2)
+ for c in result.mItems:
+ c = Brackets[rand(Brackets.low..Brackets.high)]
+
+proc isBalanced(brackets: string): bool =
+ var stack: seq[char]
+ for c in brackets:
+ if c == OpeningBracket:
+ stack.add ClosingBracket
+ else:
+ if stack.len < 1: return false
+ discard stack.pop()
+ stack.len == 0
+
+when isMainModule:
+ randomize()
+
+ while true:
+ let brackets = genRandomBrackets()
+ if brackets.isBalanced():
+ echo brackets, " is balanced!"
+ break