xxxxxxxxxx
51
let length = 500;
const order = 2;
let slider;
let paragraph;
const nGrams = {};
let original;
let fileContent;
function preload() {
fileContent = loadStrings('cicero.txt');
}
function setup() {
noCanvas();
original = fileContent.join('');
generateNGrams();
slider = createSlider(0, 2000, 500);
paragraph = createP(generateText())
}
function draw() {
if (slider.value() != length) {
length = slider.value();
paragraph.remove()
paragraph = createP(generateText())
}
}
function generateNGrams() {
for (let i = 0; i < original.length - order + 1; i++) {
const gram = original.substring(i, i + order);
if (!nGrams[gram]) {
nGrams[gram] = [];
}
nGrams[gram].push(original.substring(i + order, i + order + 1));
}
}
function generateText() {
let txt = random(original.split(' ')).substring(0, order);
for (let i = 0; i < length; i++) {
const gram = txt.substring(txt.length - order, txt.length);
let newChar = random(nGrams[gram] || ['']);
if (newChar.length == 0) newChar = " ";
txt += newChar;
}
return txt;
}