const vowels = "aeiou".split("");
const consonants = "jptkmnslw".split("");
const illegalSyllables = ["wu", "wo", "ji", "ti"].flatMap(s => [s, s + "n"]);
const vowelStartSyllables = vowels.flatMap(v => [v, v + "n"]);
const middleSyllables = vowelStartSyllables.flatMap(s => consonants.map(c => c + s)).filter(s => !illegalSyllables.includes(s));
const afterNasalSyllables = middleSyllables.filter(s => !"nm".includes(s[0]));
const allSyllables = vowelStartSyllables.concat(middleSyllables);
let lastWasNasal = false;
function randomSyllable(choice) {
const result = choice[Math.floor(Math.random() * choice.length)];
lastWasNasal = result.endsWith("n");
return result;
}
const totalSyllables = Math.floor(Math.random() * 5) + 3; // <--- length, change this if you want
const firstSyllable = randomSyllable(allSyllables)
const remainingSyllables = Array(totalSyllables - 1).fill(0).map(_ => randomSyllable(lastWasNasal ? afterNasalSyllables : middleSyllables));
firstSyllable + remainingSyllables.join("")