Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
2
Task/Set/Jq/set-1.jq
Normal file
2
Task/Set/Jq/set-1.jq
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"a":true, "b":true } == {"b":true, "a":true}.
|
||||
{"a":true} + {"b":true } == { "a":true, "b":true}
|
||||
19
Task/Set/Jq/set-10.jq
Normal file
19
Task/Set/Jq/set-10.jq
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# If A and B are sets, then A-B is emitted
|
||||
def difference(A;B):
|
||||
(A|length) as $al
|
||||
| (B|length) as $bl
|
||||
| if $al == 0 then [] elif $bl == 0 then A
|
||||
else
|
||||
reduce range(0; $al + $bl) as $k
|
||||
( [0, 0, []];
|
||||
.[0] as $i | .[1] as $j
|
||||
| if $i < $al and $j < $bl then
|
||||
if A[$i] == B[$j] then [ $i+1, $j+1, .[2] ]
|
||||
elif A[$i] < B[$j] then [ $i+1, $j, .[2] + [A[$i]] ]
|
||||
else [ $i , $j+1, .[2] ]
|
||||
end
|
||||
elif $i < $al then [ $i+1, $j, .[2] + [A[$i]] ]
|
||||
else .
|
||||
end
|
||||
) | .[2]
|
||||
end ;
|
||||
22
Task/Set/Jq/set-11.jq
Normal file
22
Task/Set/Jq/set-11.jq
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# merge input array with array x by comparing the heads of the arrays in turn;
|
||||
# if both arrays are sorted, the result will be sorted:
|
||||
def merge(x):
|
||||
length as $length
|
||||
| (x|length) as $xl
|
||||
| if $length == 0 then x
|
||||
elif $xl == 0 then .
|
||||
else
|
||||
. as $in
|
||||
| reduce range(0; $xl + $length) as $z
|
||||
# state [ix, xix, ans]
|
||||
( [0, 0, []];
|
||||
if .[0] < $length and ((.[1] < $xl and $in[.[0]] <= x[.[1]]) or .[1] == $xl)
|
||||
then [(.[0] + 1), .[1], (.[2] + [$in[.[0]]]) ]
|
||||
else [.[0], (.[1] + 1), (.[2] + [x[.[1]]]) ]
|
||||
end
|
||||
) | .[2]
|
||||
end ;
|
||||
|
||||
def union(A;B):
|
||||
A|merge(B)
|
||||
| reduce .[] as $m ([]; if length == 0 or .[length-1] != $m then . + [$m] else . end);
|
||||
10
Task/Set/Jq/set-12.jq
Normal file
10
Task/Set/Jq/set-12.jq
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
def subset(A;B):
|
||||
# TCO
|
||||
def _subset:
|
||||
if .[0]|length == 0 then true
|
||||
elif .[1]|length == 0 then false
|
||||
elif .[0][0] == .[1][0] then [.[0][1:], .[1][1:]] | _subset
|
||||
elif .[0][0] < .[1][0] then false
|
||||
else [ .[0], .[1][1:] ] | _subset
|
||||
end;
|
||||
[A,B] | _subset;
|
||||
11
Task/Set/Jq/set-13.jq
Normal file
11
Task/Set/Jq/set-13.jq
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
def intersect:
|
||||
.[0] as $A | .[1] as $B
|
||||
| ($A|length) as $al
|
||||
| ($B|length) as $bl
|
||||
| if $al == 0 or $bl == 0 then false
|
||||
else
|
||||
($B | bsearch($A[0])) as $b
|
||||
| if $b >= 0 then true
|
||||
else [$A[1:], $B[- (1 + $b) :]] | intersect
|
||||
end
|
||||
end;
|
||||
2
Task/Set/Jq/set-2.jq
Normal file
2
Task/Set/Jq/set-2.jq
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
def is_stringset:
|
||||
. as $in | type == "object" and reduce keys[] as $key (true; . and $in[$key] == true);
|
||||
1
Task/Set/Jq/set-3.jq
Normal file
1
Task/Set/Jq/set-3.jq
Normal file
|
|
@ -0,0 +1 @@
|
|||
T | has(m)
|
||||
4
Task/Set/Jq/set-4.jq
Normal file
4
Task/Set/Jq/set-4.jq
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Set-intersection: A ∩ B
|
||||
def stringset_intersection(A;B):
|
||||
reduce (A|keys)[] as $k
|
||||
({}; if (B|has($k)) then . + {($k):true} else . end);
|
||||
4
Task/Set/Jq/set-5.jq
Normal file
4
Task/Set/Jq/set-5.jq
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# stringset_difference: A \ B
|
||||
def stringset_difference(A;B):
|
||||
reduce (A|keys)[] as $k
|
||||
({}; if (B|has($k)) then . else . + {($k):true} end);
|
||||
4
Task/Set/Jq/set-6.jq
Normal file
4
Task/Set/Jq/set-6.jq
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# A ⊆ B iff string_subset(A;B)
|
||||
def stringset_subset(A;B):
|
||||
reduce (A|keys)[] as $k
|
||||
(true; . and (B|has($k)));
|
||||
5
Task/Set/Jq/set-7.jq
Normal file
5
Task/Set/Jq/set-7.jq
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
def is_set:
|
||||
. as $in
|
||||
| type == "array" and
|
||||
reduce range(0;length-1) as $i
|
||||
(true; if . then $in[$i] < $in[$i+1] else false end);
|
||||
1
Task/Set/Jq/set-8.jq
Normal file
1
Task/Set/Jq/set-8.jq
Normal file
|
|
@ -0,0 +1 @@
|
|||
def is_member(m): bsearch(m) > -1;
|
||||
11
Task/Set/Jq/set-9.jq
Normal file
11
Task/Set/Jq/set-9.jq
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# If A and B are sets, then intersection(A;B) emits their intersection:
|
||||
def intersection($A;$B):
|
||||
def pop:
|
||||
.[0] as $i
|
||||
| .[1] as $j
|
||||
| if $i == ($A|length) or $j == ($B|length) then empty
|
||||
elif $A[$i] == $B[$j] then $A[$i], ([$i+1, $j+1] | pop)
|
||||
elif $A[$i] < $B[$j] then [$i+1, $j] | pop
|
||||
else [$i, $j+1] | pop
|
||||
end;
|
||||
[[0,0] | pop];
|
||||
Loading…
Add table
Add a link
Reference in a new issue