Module Bap_strings_unscrambler.Make

Make(Alphabet) creates an unscrambler for the given alphabet.

The unscrambler will build all words from the provided sequence of characters, essentially it is the same as playing scrabble. For example, from characters h,e,l,l,o it will build words "hell", "hello", "ell", "hoe", and so on, provided that they are known to the unscrambler, i.e., present in its dictionary.

The unscrambler requires to know the alphabet of the language beforehand, because it uses efficient trie-like representation of the dictionary that enables O(1) search for words (O(1) in terms of the dictionary size).

Parameters

module A : Alphabet

Signature

type t
include Core_kernel.Bin_prot.Binable.S with type t := t
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
val bin_shape_t : Bin_prot.Shape.t
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_t : t Bin_prot.Type_class.t
val compare : t -> t -> int
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
val empty : t

an empty unscrambler that doesn't know any words

val of_file : string -> t

of_file name reads the dictionary from file name, each word is on a separate line. (the standard linux dictionary file format)

val of_files : string list -> t

of_files names reads the dictionary from all provided file names, each file should be a sequence of newline separated words.

val add_word : t -> string -> t

add_word d x extends the dictionary d with the new word x.

val build : t -> string -> string Core_kernel.Sequence.t

build d chars returns a sequence of all words in the dictionary d that could be built from the sequence of characters chars

val is_buildable : t -> string -> bool

is_buildable d chars returns true if in the dictionary d exists a word that can be built from the given characters.