From 3a120930c5773eba4641d49e02ea5e58c12dcfcb Mon Sep 17 00:00:00 2001 From: Archargelod Date: Sat, 23 Mar 2024 13:33:35 +0800 Subject: weeks 41-47, 260, 261 in Nim --- challenge-261/archargelod/nim/ch_1.nim | 31 +++++++++++++++++++++++++++++++ challenge-261/archargelod/nim/ch_2.nim | 30 ++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100755 challenge-261/archargelod/nim/ch_1.nim create mode 100755 challenge-261/archargelod/nim/ch_2.nim (limited to 'challenge-261') 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] -- cgit