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-261 | |
| 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-261')
| -rwxr-xr-x | challenge-261/archargelod/nim/ch_1.nim | 31 | ||||
| -rwxr-xr-x | challenge-261/archargelod/nim/ch_2.nim | 30 |
2 files changed, 61 insertions, 0 deletions
diff --git a/challenge-261/archargelod/nim/ch_1.nim b/challenge-261/archargelod/nim/ch_1.nim new file mode 100755 index 0000000000..f73a60dca6 --- /dev/null +++ b/challenge-261/archargelod/nim/ch_1.nim @@ -0,0 +1,31 @@ +#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off +import std/sequtils + +proc diffElementDigitSums(numbers: openArray[int]): int = + for num in numbers: + if num < 10: continue + let digitSum = ($num).mapIt(it.ord - '0'.ord).foldl(a+b) + result += num - digitSum + + +when isMainModule: + import std/unittest + + const + Test = [ + @[1,2,3,45], + @[1,12,3], + @[1,2,3,4], + @[236, 416, 336, 350], + ] + Expected = [36, 9, 0, 1296] + + suite "Element Digit Sum": + test "Example 1": + check diffElementDigitSums(Test[0]) == Expected[0] + test "Example 2": + check diffElementDigitSums(Test[1]) == Expected[1] + test "Example 3": + check diffElementDigitSums(Test[2]) == Expected[2] + test "Example 4": + check diffElementDigitSums(Test[3]) == Expected[3] diff --git a/challenge-261/archargelod/nim/ch_2.nim b/challenge-261/archargelod/nim/ch_2.nim new file mode 100755 index 0000000000..36d8badb5d --- /dev/null +++ b/challenge-261/archargelod/nim/ch_2.nim @@ -0,0 +1,30 @@ +#!/usr/bin/env -S nim r -d:release --verbosity:0 --hints:off + +proc searchThenDoubleRepeat(numbers: openarray[int], value: int): int = + result = value + while true: + block lookingForValue: + for num in numbers: + if num == result: + result *= 2 + break lookingForValue + return + +when isMainModule: + import std/unittest + + const + Test: array[3, tuple[arr: seq[int], value: int]] = [ + (@[5,3,6,1,12], 3), + (@[1,2,4,3], 1), + (@[5,6,7], 2), + ] + Expected = [24, 8, 2] + + suite "Multiply by Two": + test "Example 1": + check Test[0].arr.searchThenDoubleRepeat(Test[0].value) == Expected[0] + test "Example 2": + check Test[1].arr.searchThenDoubleRepeat(Test[1].value) == Expected[1] + test "Example 3": + check Test[2].arr.searchThenDoubleRepeat(Test[2].value) == Expected[2] |
