RosettaCodeData/Task/Non-continuous-subsequences/Nim/non-continuous-subsequences.nim
2016-12-05 23:44:36 +01:00

19 lines
481 B
Nim

import sequtils
proc ncsub[T](se: seq[T], s = 0): seq[seq[T]] =
result = @[]
if se.len > 0:
let
x = se[0..0]
xs = se[1 .. -1]
p2 = s mod 2
p1 = (s + 1) mod 2
for ys in ncsub(xs, s + p1):
result.add(x & ys)
result.add(ncsub(xs, s + p2))
elif s >= 3:
result.add(@[])
echo "ncsub(", toSeq 1.. 3, ") = ", ncsub(toSeq 1..3)
echo "ncsub(", toSeq 1.. 4, ") = ", ncsub(toSeq 1..4)
echo "ncsub(", toSeq 1.. 5, ") = ", ncsub(toSeq 1..5)