/markov-chains-zig

a markov chain implementation in zig

Primary LanguageZigMIT LicenseMIT

about

a markov chain implementation in zig. this tool is useful for generating pseudo-random text based on some input files. outputs to stdout.

usage

$ zig build run -Dblock-len=8 -- --start-block "pub fn" --maxlen 1000 infile1 infile2 ...

args

  • -Dblock-len : how many bytes to consider when predicting the next character. defaults to 8.
  • --start-block : initial seed to start generation. this string should be present somewhere in input. generated text will start with this string. if not provided, a random start-block is chosen. if provided string is longer than -Dblock-len, only it's last block-len characters will be used.
  • --maxlen : how many characters to generate. does not include length of --start-block. generation will stop after this many characters.

usage examples

$ zig build run -- --start-block "test \"" --maxlen 1000 $(ls ../zig/test/behavior/*.zig)
$ zig build run -- --start-block "pub fn" --maxlen 1000 $(find ../zig/test/behavior/ -name "*.zig")

TODOs

  • gen - fix repetitive spaces
  • gen - recover when current block not found
  • add a block-len build param
  • add usage text
  • gen - write possibly skipped portion of start-block