// read in three text files

(

b = (); // maybe set path by hand if needed

b.folder = Document.current.path.dirname ++ Platform.pathSeparator;

b.textnames = [ \erlkoenig, \erlEng, \billOfRights];

b.textnames.do { |textname|

var lines;

var path = b.folder ++ textname ++ ".txt";

var file = File(path, "r");

if (file.isOpen) {

lines = file.readAllString.split($@);

b[textname] = lines;

file.close;

} { };

};

// make a number of new text generations,

// and compare them for occurrence within originals.

b.genTextSimple = { arg dict, numGenerations, corpus, starterLength, minDepth;

var corpusSnake = ContextSnake(corpus, minDepth: minDepth, starterLength: starterLength);

var count = 0, result;

while({ count < numGenerations },

{

result = corpusSnake.randStarter.asStream.all.join;

if (corpusSnake.isNew(result),

{ count = count+1;

result.postcs;

})

});

};

)

// check they are there

b.erlkoenig.printAll;"";

b.erlEng.printAll;"";

b.billOfRights.printAll;"";

7.do { b.genTextSimple(1, b.billOfRights, 4, 4) };

7.do { b.genTextSimple(1, b.erlEng, 4, 4) };

7.do { b.genTextSimple(1, b.erlkoenig, 4, 4) };