diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-07-03 00:19:10 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-07-03 00:19:10 +0200 |
commit | dc65f9a5f787a14c8aef615104050d938dfa77f2 (patch) | |
tree | f6cc6969bd5ee441ebd0729dded2dda7701b7735 | |
parent | 024c9cde35b87c92aeece9f67bbb56ff5e452871 (diff) | |
parent | 101e78df3bc3c90644a9c2aa797e043b3164fcf3 (diff) | |
download | Nim-dc65f9a5f787a14c8aef615104050d938dfa77f2.tar.gz |
Merge pull request #3043 from takaomag/fix_algorithm_reversed
Fix algorithm.reversed to accept non-zero 'first' arg
-rw-r--r-- | lib/pure/algorithm.nim | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/pure/algorithm.nim b/lib/pure/algorithm.nim index e087b5ac9..76531dac4 100644 --- a/lib/pure/algorithm.nim +++ b/lib/pure/algorithm.nim @@ -50,12 +50,12 @@ proc reverse*[T](a: var openArray[T]) = proc reversed*[T](a: openArray[T], first, last: Natural): seq[T] = ## returns the reverse of the array `a[first..last]`. - result = newSeq[T](last - first + 1) + var i = last - first var x = first.int - var y = last.int - while x <= last: - result[x] = a[y] - dec(y) + result = newSeq[T](i + 1) + while i >= 0: + result[i] = a[x] + dec(i) inc(x) proc reversed*[T](a: openArray[T]): seq[T] = @@ -361,4 +361,10 @@ when isMainModule: assert srt3.isSorted(cmp) == true var srtseq = newSeq[int]() assert srtseq.isSorted(cmp) == true + # Tests for reversed + var arr1 = @[0,1,2,3,4] + assert arr1.reversed() == @[4,3,2,1,0] + for i in 0 .. high(arr1): + assert arr1.reversed(0, i) == arr1.reversed()[high(arr1) - i .. high(arr1)] + assert arr1.reversed(i, high(arr1)) == arr1.reversed()[0 .. high(arr1) - i] |