summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-08-09 20:28:49 +0200
committerAraq <rumpf_a@web.de>2015-08-09 20:29:03 +0200
commitcf4879bc48f39a7fbdd030431be4ffe968e2a555 (patch)
tree72ee7755be4e43483bfeea9a569d348cf43c12a5
parent35f8cc0bdde8e923eaca8830676f1b2ad6ffe300 (diff)
downloadNim-cf4879bc48f39a7fbdd030431be4ffe968e2a555.tar.gz
added sequtils.reversed; refs #3148
-rw-r--r--lib/pure/collections/sequtils.nim23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim
index 5fac1f0af..1e75376df 100644
--- a/lib/pure/collections/sequtils.nim
+++ b/lib/pure/collections/sequtils.nim
@@ -451,6 +451,21 @@ template newSeqWith*(len: int, init: expr): expr =
     result[i] = init
   result
 
+proc reversed*[T](s: seq[T]): seq[T] =
+  ## Takes a sequences and returns a new reversed one
+  ##
+  ## Example:
+  ##
+  ## .. code-block::
+  ##
+  ##   let s1 = @[1, 2, 3, 4, 5]
+  ##   let s2 = @[5, 4, 3, 2, 1]
+  ##   assert s2 == s1.reversed()
+  ##
+  result = s
+  let ln = result.len
+  for i in 0..(ln div 2)-1: swap(result[i], result[ln-i-1])
+
 when isMainModule:
   import strutils
   block: # concat test
@@ -615,5 +630,13 @@ when isMainModule:
     #doAssert a.repeat(-1) == @[] # will not compile!
     doAssert b.repeat(3) == @[]
 
+  block: # reversed tests:
+    let
+      a = @[1, 2, 3]
+      b: seq[int] = @[]
+
+    doAssert a.reversed == @[3, 2, 1]
+    doAssert b.reversed == @[]
+
   when not defined(testing):
     echo "Finished doc tests"