def generate(self, word, words, difficulty): num_letters = random.randint(7,9) num_vowels = min(random.randint(3,5),int(round(num_letters/2))) letters = sorted(set(discrete_sample(constants.VOWEL_FREQS,num_vowels)+discrete_sample(constants.CONS_FREQS,num_letters-num_vowels))) #letters = sorted(map(lambda a: LETTERFREQS[a-1],list(set(random_partition(random.randint(1.5*26,3*26)))))) regex = "^[^"+"".join(letters)+"]*$" str = STR_ANNOUNCE.format(listtostr(map(embolden,letters),conj="and")) involved_letters = letters return re.compile(regex).match, str, involved_letters
def generate(self, word, words, difficulty): num_letters = random.randint(8, 13) num_vowels = min(random.randint(3, 5), int(round(num_letters / 2.5))) letters = discrete_sample( constants.VOWEL_FREQS, num_vowels) + discrete_sample( constants.CONS_FREQS, num_letters - num_vowels) random.shuffle(letters) str = STR_ANNOUNCE.format(embolden("".join(letters))) involved_letters = letters return self.subanag_regex(letters).match, str, involved_letters
def generate(self, word, words, difficulty): num_letters = random.randint(8, 13) num_vowels = min(random.randint(3, 5), int(round(num_letters / 2.5))) letters = discrete_sample(constants.VOWEL_FREQS, num_vowels) + discrete_sample( constants.CONS_FREQS, num_letters - num_vowels ) random.shuffle(letters) str = STR_ANNOUNCE.format(embolden("".join(letters))) involved_letters = letters return self.subanag_regex(letters).match, str, involved_letters