✨
This commit is contained in:
44
gwendolyn/funcs/other/name_generator.py
Normal file
44
gwendolyn/funcs/other/name_generator.py
Normal file
@ -0,0 +1,44 @@
|
||||
import random
|
||||
|
||||
class NameGenerator():
|
||||
def __init__(self) -> None:
|
||||
with open("gwendolyn/resources/names.txt", "r", encoding="UTF-8") as file_pointer:
|
||||
self._names = file_pointer.read().lower().split("\n")
|
||||
|
||||
self._gen_letter_dict()
|
||||
|
||||
def _gen_letter_dict(self):
|
||||
list_of_names = []
|
||||
for name in self._names:
|
||||
if (name != ""):
|
||||
list_of_names.append("__" + name + "__")
|
||||
|
||||
dict_of_names = {}
|
||||
for name in list_of_names:
|
||||
for i in range(len(name)-3):
|
||||
combination = name[i:i+2]
|
||||
if combination not in dict_of_names:
|
||||
dict_of_names[combination] = []
|
||||
dict_of_names[combination].append(name[i+2])
|
||||
|
||||
self._letter_dict = dict_of_names
|
||||
|
||||
def generate(self):
|
||||
combination = "__"
|
||||
next_letter = ""
|
||||
result = ""
|
||||
|
||||
while True:
|
||||
number_of_letters = len(self._letter_dict[combination])
|
||||
index = random.randint(0,number_of_letters - 1)
|
||||
next_letter = self._letter_dict[combination][index]
|
||||
if next_letter == "_":
|
||||
break
|
||||
else:
|
||||
result = result + next_letter
|
||||
combination = combination[1] + next_letter
|
||||
|
||||
return result.title()
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(NameGenerator().generate())
|
Reference in New Issue
Block a user