phrase = inputchars
for (words = 10000; words > 0; words--)
  l = -1
  u = nword
  while l+1 != u
      m = (l + u) / 2
      if wordncmp(word[m], phrase) < 0
          l = m
      else
          u = m
  for (i = 0; wordncmp(phrase, word[u+i]) == 0; i++)
      if rand() % (i+1) == 0
          p = word[u+i]
  phrase = skip(p, 1)
  if strlen(skip(phrase, k-1)) == 0
      break
  print skip(phrase, k-1)

Example 2: The complete pseudocode puts an upper bound on the number of words it generates.

Back to Article