19 lines
481 B
Nim
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)
|