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).
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_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 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 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.