diff options
| author | Archargelod <archargelod@gmail.com> | 2024-03-23 13:33:35 +0800 |
|---|---|---|
| committer | Archargelod <archargelod@gmail.com> | 2024-03-23 13:33:35 +0800 |
| commit | 3a120930c5773eba4641d49e02ea5e58c12dcfcb (patch) | |
| tree | 703beab5827accad694e4d0ae60c5edf8e69ecf9 /challenge-042/archargelod | |
| parent | 8e95e94de527f8344f979dbb45b935139b1ddeb7 (diff) | |
| download | perlweeklychallenge-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/README | 1 | ||||
| -rwxr-xr-x | challenge-042/archargelod/nim/ch_1.nim | 14 | ||||
| -rwxr-xr-x | challenge-042/archargelod/nim/ch_2.nim | 31 |
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 |
