aboutsummaryrefslogtreecommitdiff
path: root/challenge-261/archargelod/nim/ch_2.nim
blob: 36d8badb5d740dc02d3b2b385c6ca94fcabc5498 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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]