Merge pull request #3043 from takaomag/fix_algorithm_reversed
Fix algorithm.reversed to accept non-zero 'first' arg
This commit is contained in:
commit
dc65f9a5f7
1 changed files with 11 additions and 5 deletions
|
|
@ -50,12 +50,12 @@ proc reverse*[T](a: var openArray[T]) =
|
||||||
|
|
||||||
proc reversed*[T](a: openArray[T], first, last: Natural): seq[T] =
|
proc reversed*[T](a: openArray[T], first, last: Natural): seq[T] =
|
||||||
## returns the reverse of the array `a[first..last]`.
|
## returns the reverse of the array `a[first..last]`.
|
||||||
result = newSeq[T](last - first + 1)
|
var i = last - first
|
||||||
var x = first.int
|
var x = first.int
|
||||||
var y = last.int
|
result = newSeq[T](i + 1)
|
||||||
while x <= last:
|
while i >= 0:
|
||||||
result[x] = a[y]
|
result[i] = a[x]
|
||||||
dec(y)
|
dec(i)
|
||||||
inc(x)
|
inc(x)
|
||||||
|
|
||||||
proc reversed*[T](a: openArray[T]): seq[T] =
|
proc reversed*[T](a: openArray[T]): seq[T] =
|
||||||
|
|
@ -361,4 +361,10 @@ when isMainModule:
|
||||||
assert srt3.isSorted(cmp) == true
|
assert srt3.isSorted(cmp) == true
|
||||||
var srtseq = newSeq[int]()
|
var srtseq = newSeq[int]()
|
||||||
assert srtseq.isSorted(cmp) == true
|
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]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue