NAME
int_vector_is_permutation - Test if input contains a permutation
SYNOPSIS
#include "l/l_int_vector.h"
Example compile flags (system dependent):
-DLINUX_X86_64 -DLINUX_X86_64_OPTERON -DGNU_COMPILER
-I/home/kobus/include
-L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
-lKJB -lfftw3 -lgsl -lgslcblas -ljpeg -lSVM -lstdc++ -lpthread -lSLATEC -lg2c -lacml -lacml_mv -lblas -lg2c -lncursesw
int int_vector_is_permutation
(
const Int_vector *vp,
int start_value,
int *result
);
DESCRIPTION
This is a predicate that tests whether the contents of the Int_vector
constitute a permutation (possibly with an offset value).
If the input pointer vp equals NULL or *vp contains zero elements, the
result is trivially true. Otherwise, suppose vp -> size equals N.
Informally, this tests whether the vector is a "shuffling" of the integers
start_value, start_value+1, . . ., start_value+N-1
without any repetitions or missing numbers.
To be more formal, this tests whether the function p is a
permutation (a.k.a. a bijection, a.k.a. a one-to-one mapping from D onto D)
where p and D are defined like so:
| p : D --> D
D = {0, 1, 2, . . ., N-1}
p(i) = vp -> elements[i] - start_value
RETURNS
This returns ERROR if we cannot allocate the auxiliary array this routine
needs, or if output parameter 'result' equals NULL. Otherwise this
returns NO_ERROR and sets *result to TRUE or FALSE. TRUE indicates that
the input is a permutation (relative to start_value) as defined
above.
RELATED
get_string_why_int_vector_is_not_permutation
DISCLAIMER
This software is not adequatedly tested. It is recomended that
results are checked independantly where appropriate.
AUTHOR
Andrew Predoehl
DOCUMENTER
Andrew Predoehl
SEE ALSO
get_zero_int_vector
,
get_unity_int_vector
,
get_initialized_int_vector
,
ra_get_target_int_vector
,
create_int_vector
,
free_int_vector
,
vp_get_indexed_int_vector
,
get_zero_indexed_int_vector
,
get_target_indexed_int_vector
,
add_int_vectors
,
subtract_int_vectors
,
ow_add_int_vectors
,
ow_subtract_int_vectors
,
get_random_index_vector
,
split_int_vector_vector
,
split_int_vector
,
copy_int_vector_vector
,
copy_int_vector
,
copy_int_vector_section
,
read_int_vector
,
fp_read_int_vector
,
fp_read_raw_int_vector
,
fp_read_int_vector_with_header
,
fp_read_ascii_int_vector
,
fp_read_vector_length_header
,
write_col_int_vector
,
fp_write_col_int_vector
,
fp_write_col_int_vector_with_title
,
write_col_int_vector_with_header
,
fp_write_col_int_vector_with_header
,
write_row_int_vector
,
fp_write_row_int_vector
,
fp_write_row_int_vector_with_title
,
fp_write_vector_length_header
,
write_raw_int_vector
,
fp_write_raw_int_vector
,
get_target_int_vector_vector
,
free_int_vector_vector
,
get_target_int_v3
,
free_int_v3
,
int_vector_binary_search
,
int_vector_linear_search
,
sum_int_vector_elements
,
read_int_vector_vector
,
fp_read_int_vector_vector
,
fp_read_raw_int_vector_vector
,
fp_read_formatted_int_vector_vector
,
write_int_vector_vector
,
fp_write_int_vector_vector
,
write_raw_int_vector_vector
,
fp_write_raw_int_vector_vector
,
fp_write_raw_int_vector_vector_header
,
sget_int_vector
,
sget_positive_int_vector
,
sget_non_negative_int_vector
,
ow_copy_int_vector
,
min_int_vector_element
,
max_int_vector_element
,
get_max_int_vector_element
,
get_min_int_vector_element
,
multiply_int_vector_by_int_scalar
,
ow_multiply_int_vector_by_int_scalar
,
add_int_scalar_to_int_vector
,
int_set_difference
,
is_element_in_int_vector
,
get_int_dot_product
,
int_vector_magnitude
,
sum_int_vector_squared_elements
,
check_same_int_vector_lengths
,
max_abs_int_vector_difference
,
get_string_why_int_vector_is_not_permutation