include node_modules so release .zip is deployable
This commit is contained in:
+116
@@ -0,0 +1,116 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.partition_copy = exports.stable_partition = exports.partition = exports.partition_point = exports.is_partitioned = void 0;
|
||||
var Pair_1 = require("../utility/Pair");
|
||||
var modifiers_1 = require("./modifiers");
|
||||
var global_1 = require("../iterator/global");
|
||||
/* =========================================================
|
||||
PARTITION
|
||||
========================================================= */
|
||||
/**
|
||||
* Test whether a range is partitioned.
|
||||
*
|
||||
* @param first Forward iterator of the first position.
|
||||
* @param last Forward iterator of the last position.
|
||||
* @param pred An unary function predicates partition. Returns `true`, if an element belongs to the first section, otherwise `false` which means the element belongs to the second section.
|
||||
*
|
||||
* @return Whether the range is partition or not.
|
||||
*/
|
||||
function is_partitioned(first, last, pred) {
|
||||
while (!first.equals(last) && pred(first.value))
|
||||
first = first.next();
|
||||
for (; !first.equals(last); first = first.next())
|
||||
if (pred(first.value))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
exports.is_partitioned = is_partitioned;
|
||||
/**
|
||||
* Get partition point.
|
||||
*
|
||||
* @param first Forward iterator of the first position.
|
||||
* @param last Forward iterator of the last position.
|
||||
* @param pred An unary function predicates partition. Returns `true`, if an element belongs to the first section, otherwise `false` which means the element belongs to the second section.
|
||||
*
|
||||
* @return Iterator to the first element of the second section.
|
||||
*/
|
||||
function partition_point(first, last, pred) {
|
||||
var n = (0, global_1.distance)(first, last);
|
||||
while (n > 0) {
|
||||
var step = Math.floor(n / 2);
|
||||
var it = (0, global_1.advance)(first, step);
|
||||
if (pred(it.value)) {
|
||||
first = it.next();
|
||||
n -= step + 1;
|
||||
}
|
||||
else
|
||||
n = step;
|
||||
}
|
||||
return first;
|
||||
}
|
||||
exports.partition_point = partition_point;
|
||||
/**
|
||||
* Partition a range into two sections.
|
||||
*
|
||||
* @param first Bidirectional iterator of the first position.
|
||||
* @param last Bidirectional iterator of the last position.
|
||||
* @param pred An unary function predicates partition. Returns `true`, if an element belongs to the first section, otherwise `false` which means the element belongs to the second section.
|
||||
*
|
||||
* @return Iterator to the first element of the second section.
|
||||
*/
|
||||
function partition(first, last, pred) {
|
||||
return stable_partition(first, last, pred);
|
||||
}
|
||||
exports.partition = partition;
|
||||
/**
|
||||
* Partition a range into two sections with stable ordering.
|
||||
*
|
||||
* @param first Bidirectional iterator of the first position.
|
||||
* @param last Bidirectional iterator of the last position.
|
||||
* @param pred An unary function predicates partition. Returns `true`, if an element belongs to the first section, otherwise `false` which means the element belongs to the second section.
|
||||
*
|
||||
* @return Iterator to the first element of the second section.
|
||||
*/
|
||||
function stable_partition(first, last, pred) {
|
||||
while (!first.equals(last) && pred(first.value)) {
|
||||
while (pred(first.value)) {
|
||||
first = first.next();
|
||||
if (first.equals(last))
|
||||
return first;
|
||||
}
|
||||
do {
|
||||
last = last.prev();
|
||||
if (first.equals(last))
|
||||
return first;
|
||||
} while (!pred(last.value));
|
||||
(0, modifiers_1.iter_swap)(first, last);
|
||||
first = first.next();
|
||||
}
|
||||
return last;
|
||||
}
|
||||
exports.stable_partition = stable_partition;
|
||||
/**
|
||||
* Partition a range into two outputs.
|
||||
*
|
||||
* @param first Bidirectional iterator of the first position.
|
||||
* @param last Bidirectional iterator of the last position.
|
||||
* @param output_true Output iterator to the first position for the first section.
|
||||
* @param output_false Output iterator to the first position for the second section.
|
||||
* @param pred An unary function predicates partition. Returns `true`, if an element belongs to the first section, otherwise `false` which means the element belongs to the second section.
|
||||
*
|
||||
* @return Iterator to the first element of the second section.
|
||||
*/
|
||||
function partition_copy(first, last, output_true, output_false, pred) {
|
||||
for (; !first.equals(last); first = first.next())
|
||||
if (pred(first.value)) {
|
||||
output_true.value = first.value;
|
||||
output_true = output_true.next();
|
||||
}
|
||||
else {
|
||||
output_false.value = first.value;
|
||||
output_false = output_false.next();
|
||||
}
|
||||
return new Pair_1.Pair(output_true, output_false);
|
||||
}
|
||||
exports.partition_copy = partition_copy;
|
||||
//# sourceMappingURL=partition.js.map
|
||||
Reference in New Issue
Block a user