mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Add combinations/0 and combinations/1
This commit is contained in:
committed by
Nicolas Williams
parent
8aecf82bfe
commit
ec7647c4ab
12
builtin.c
12
builtin.c
@@ -1486,7 +1486,17 @@ static const char* const jq_builtins[] = {
|
||||
"def first: .[0];",
|
||||
"def last: .[-1];",
|
||||
"def nth($n): .[$n];",
|
||||
// # transpose a possibly jagged matrix, quickly;
|
||||
"def combinations:"
|
||||
" if length == 0 then [] else"
|
||||
" .[0][] as $x"
|
||||
" | (.[1:] | combinations) as $y"
|
||||
" | [$x] + $y"
|
||||
" end;",
|
||||
"def combinations(n):"
|
||||
" . as $dot"
|
||||
" | [range(n) | $dot]"
|
||||
" | combinations;",
|
||||
// # transpose a possibly jagged matrix, quickly;
|
||||
// # rows are padded with nulls so the result is always rectangular.
|
||||
"def transpose:"
|
||||
" if . == [] then []"
|
||||
|
||||
@@ -1307,6 +1307,21 @@ sections:
|
||||
input: '["foobar", "barfoo"]'
|
||||
output: ['[false, true]']
|
||||
|
||||
- title: "`combinations`, `combinations(n)`"
|
||||
body: |
|
||||
|
||||
Outputs all combinations of the elements of the arrays in the
|
||||
input array. If given an argument `n`, it outputs all combinations
|
||||
of `n` repetitions of the input array.
|
||||
|
||||
examples:
|
||||
- program: 'combinations'
|
||||
input: '[[1,2], [3, 4]]'
|
||||
output: ['[1, 3]', '[1, 4]', '[2, 3]', '[2, 4]']
|
||||
- program: 'combinations(2)'
|
||||
input: '[0, 1]'
|
||||
output: ['[0, 0]', '[0, 1]', '[1, 0]', '[1, 1]']
|
||||
|
||||
- title: "`ltrimstr(str)`"
|
||||
body: |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user