Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,19 @@
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)

View file

@ -0,0 +1,18 @@
func non_continuous(min, max, subseq=[], has_gap=false) {
static current = [];
range(min, max).each { |i|
current.push(i);
has_gap && subseq.append([current...]);
i < max && non_continuous(i.inc, max, subseq, has_gap);
current.pop;
has_gap = current.len;
}
subseq;
}
say non_continuous(1, 3);
say non_continuous(1, 4);
say non_continuous("a", "d");

View file

@ -0,0 +1,16 @@
# Generate a stream of subsets of the input array
def subsets:
if length == 0 then []
else .[0] as $first
| (.[1:] | subsets)
| ., ([$first] + .)
end ;
# Generate a stream of non-continuous indices in the range 0 <= i < .
def non_continuous_indices:
[range(0;.)] | subsets
| select(length > 1 and length != 1 + .[length-1] - .[0]) ;
def non_continuous_subsequences:
(length | non_continuous_indices) as $ix
| [.[ $ix[] ]] ;

View file

@ -0,0 +1,3 @@
def count(f): reduce f as $i (0; . + 1);
count( [range(0;20)] | non_continuous_subsequences)