Back when I was trying out StackOverflow (I later learned to dislike it), I tackled a similar problem about phonetic passwords. My solution would concatentate words from the dictionary. The more elegant answer that was accepted suggested a well known method using digraphs (maybe even trigraphs).
The digraph is a much better solution, and I think using a string as the data structure as you have done is not only sharp, but its also makes it easier to understand how it works.
– AaronHawley 2009-09-16 22:21 UTC
The thing I really liked about the solution was how it uses the dot to produce shorter than expected words (if you use «..») and how you can generate three-letter syllables (if you use «.»). I thought of Japanese were you have combinations of the consonants k, s, t, n, h, m, b, s, z followed by a, e, i, o, u, ya, yu, yo (but no ye and yi), the vocals themselves, and the letter n by itself. You can represent that using the following:
my $digraphs = "kakekikokusasesisosutatetitotunaneninonuhahehihohu" . "mamemimomubabebibobusasesisosuzazezizozuyayuyoa.e.i.o.u.n.";
The only obvious problem is the placement of the single n at the beginning of a word, and the distribution of the syllables used. Not too shabby:
0. misakumeho 1. zukunahimi 2. misekusohi 3. hosato 4. nahokesu 5. titizobuha 6. keeyosuo 7. kimotizi 8. ihosikahi 9. misouisu
Ovious «n» endings, for example:
10. setanheo 34. bayonunyu 42. nhezase 57. hihezenin
– AlexSchroeder 2009-09-16 23:03 UTC
All this reminds me of the Dada Engine.
Which famously functions for the Postmodernism Generator
– AaronHawley 2009-09-17 01:30 UTC
Cool. That would be the way for a most awesome name generator.
– AlexSchroeder 2009-09-17 07:35 UTC