competitive/string/
mod.rs

1//! string algorithems
2
3use crate::algebra::{Gf2_63, Invertible, Mersenne61, Monoid, Ring, SemiRing};
4use crate::algorithm::binary_search;
5use crate::math::{Convolve, ConvolveSteps};
6use crate::num::{Zero, montgomery};
7use crate::tools::Xorshift;
8
9#[codesnip::entry("KnuthMorrisPratt")]
10pub use self::knuth_morris_pratt::KnuthMorrisPratt;
11#[codesnip::entry("RollingHash")]
12pub use self::rolling_hash::{
13    Gf2_63x1, Gf2_63x2, Gf2_63x3, HashedRangeChained, Mersenne61x1, Mersenne61x2, Mersenne61x3,
14    RollingHasher,
15};
16#[codesnip::entry("SuffixArray")]
17pub use self::suffix_array::SuffixArray;
18#[codesnip::entry("wildcard_pattern_matching")]
19pub use self::wildcard_pattern_matching::wildcard_pattern_matching;
20#[codesnip::entry("ZAlgorithm")]
21pub use self::z_algorithm::Zarray;
22
23#[cfg_attr(nightly, codesnip::entry("KnuthMorrisPratt"))]
24mod knuth_morris_pratt;
25#[cfg_attr(
26    nightly,
27    codesnip::entry(
28        "RollingHash",
29        include("Xorshift", "algebra", "ring", "Gf2_63", "Mersenne61")
30    )
31)]
32pub mod rolling_hash;
33#[cfg_attr(nightly, codesnip::entry("SuffixArray", include("binary_search")))]
34mod suffix_array;
35#[cfg_attr(nightly, codesnip::entry(include("NumberTheoreticTransform")))]
36mod wildcard_pattern_matching;
37#[cfg_attr(nightly, codesnip::entry("ZAlgorithm"))]
38mod z_algorithm;