add count to sequtils
This commit is contained in:
parent
aa96343f1d
commit
a897693395
1 changed files with 31 additions and 0 deletions
|
|
@ -43,6 +43,20 @@ proc concat*[T](seqs: varargs[seq[T]]): seq[T] =
|
||||||
result[i] = itm
|
result[i] = itm
|
||||||
inc(i)
|
inc(i)
|
||||||
|
|
||||||
|
proc count*[T](s: seq[T], x: T): int =
|
||||||
|
## Count the occurrences of the item `x` in the sequence `s`.
|
||||||
|
##
|
||||||
|
## Example:
|
||||||
|
##
|
||||||
|
## .. code-block::
|
||||||
|
## let
|
||||||
|
## s = @[1, 2, 2, 3, 2, 4, 2]
|
||||||
|
## c = count(s, 2)
|
||||||
|
## assert c == 4
|
||||||
|
for itm in items(s):
|
||||||
|
if itm == x:
|
||||||
|
inc result
|
||||||
|
|
||||||
proc cycle*[T](s: seq[T], n: Natural): seq[T] =
|
proc cycle*[T](s: seq[T], n: Natural): seq[T] =
|
||||||
## Returns a new sequence with the items of `s` repeated `n` times.
|
## Returns a new sequence with the items of `s` repeated `n` times.
|
||||||
##
|
##
|
||||||
|
|
@ -674,6 +688,23 @@ when isMainModule:
|
||||||
total = concat(s1, s2, s3)
|
total = concat(s1, s2, s3)
|
||||||
assert total == @[1, 2, 3, 4, 5, 6, 7]
|
assert total == @[1, 2, 3, 4, 5, 6, 7]
|
||||||
|
|
||||||
|
block: # count test
|
||||||
|
let
|
||||||
|
s1 = @[1, 2, 3, 2]
|
||||||
|
s2 = @['a', 'b', 'x', 'a']
|
||||||
|
r0 = count(s1, 0)
|
||||||
|
r1 = count(s1, 1)
|
||||||
|
r2 = count(s1, 2)
|
||||||
|
r3 = count(s2, 'y')
|
||||||
|
r4 = count(s2, 'x')
|
||||||
|
r5 = count(s2, 'a')
|
||||||
|
assert r0 == 0
|
||||||
|
assert r1 == 1
|
||||||
|
assert r2 == 2
|
||||||
|
assert r3 == 0
|
||||||
|
assert r4 == 1
|
||||||
|
assert r5 == 2
|
||||||
|
|
||||||
block: # duplicates test
|
block: # duplicates test
|
||||||
let
|
let
|
||||||
dup1 = @[1, 1, 3, 4, 2, 2, 8, 1, 4]
|
dup1 = @[1, 1, 3, 4, 2, 2, 8, 1, 4]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue