use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
const FIRST_NAMES: &[&str] = &[
"Aaliyah",
"Aaron",
"Adam",
"Aisha",
"Alex",
"Alexander",
"Alice",
"Aminah",
"Andrea",
"Anna",
"Antonio",
"Anya",
"Benjamin",
"Bianca",
"Carlos",
"Catherine",
"Chloe",
"Chris",
"Christian",
"Daniel",
"David",
"Diana",
"Diego",
"Elena",
"Elias",
"Emily",
"Enzo",
"Eric",
"Eva",
"Fatima",
"Felix",
"Gabriel",
"Gabriella",
"George",
"Hannah",
"Hector",
"Isabella",
"Ivan",
"Jaden",
"James",
"Jasmine",
"Javier",
"Jessica",
"João",
"John",
"Joseph",
"Julia",
"Kai",
"Karim",
"Kimberly",
"Layla",
"Leonardo",
"Liam",
"Lucas",
"Maria",
"Mark",
"Maya",
"Mehmet",
"Mia",
"Michael",
"Miguel",
"Mohammed",
"Naomi",
"Natalia",
"Nathan",
"Noah",
"Olivia",
"Omar",
"Patricia",
"Pedro",
"Penelope",
"Priya",
"Rachel",
"Rafael",
"Riley",
"Robert",
"Rudolf",
"Ryan",
"Samantha",
"Samuel",
"Sara",
"Sofia",
"Sophia",
"Sora",
"Stefano",
"Talia",
"Thomas",
"Victor",
"Victoria",
"William",
"Zoe",
"Zara",
];
const LAST_NAMES: &[&str] = &[
"Almeida",
"Andersen",
"Antonova",
"Chen",
"Conti",
"Cruz",
"Diaz",
"Dupont",
"Garcia",
"Gonzalez",
"Hernandez",
"Ivanov",
"Jackson",
"Kim",
"Lee",
"Lopez",
"Martinez",
"Miller",
"Nguyen",
"Patel",
"Pereira",
"Rossi",
"Schmidt",
"Silva",
"Smith",
"Suzuki",
"Wang",
"Weber",
"Williams",
"Wong",
"Yamamoto",
"Zhu",
"Ahmed",
"Ali",
"Costa",
"Da Silva",
"De Jong",
"Dubois",
"Fischer",
"Gao",
"Gupta",
"Hoffmann",
"Jensen",
"Johansen",
"Kimura",
"Kowalski",
"Kumar",
"Leblanc",
"Li",
"Martinez",
"Moreno",
"Müller",
"Novak",
"Oliveira",
"Peters",
"Popov",
"Rahman",
"Reyes",
"Santos",
"Schneider",
"Singh",
"Sokolov",
"Stein",
"Taylor",
"Tremblay",
"Vasquez",
"Wagner",
"Walker",
"Ward",
"Washington",
"White",
"Wright",
"Young",
"Zimmerman",
"Bauer",
"Becker",
"Chang",
"Chavez",
"Choi",
"Chung",
"Cohen",
"Dinh",
"Franco",
"Fuentes",
"Gallagher",
"Gomez",
"Graham",
"Hansen",
"Hart",
"Hawkins",
"Henderson",
"Huang",
"Huber",
"Jenkins",
"Keller",
"Khan",
"Kim",
"Klein",
"Koch",
"Kruger",
"Lambert",
"Lewis",
"Liu",
"Long",
"Marsh",
"Meyer",
"Morales",
"Nelson",
"Owens",
"Park",
"Pham",
"Price",
"Ramirez",
"Reid",
"Riley",
"Rivera",
"Roberts",
"Robinson",
"Rodriguez",
"Romano",
"Ruiz",
"Russell",
"Scott",
"Sharp",
"Shaw",
"Simpson",
"Spencer",
"Stone",
"Sullivan",
"Thompson",
"Tran",
"Wagner",
"Walker",
"Ward",
"Washington",
"White",
"Wright",
"Young",
"Zimmerman",
];
pub fn generate_name(content: &str) -> String {
let mut hasher = DefaultHasher::new();
content.hash(&mut hasher);
let hash_value = hasher.finish();
let first_name_index = (hash_value % FIRST_NAMES.len() as u64) as usize;
let last_name_index =
((hash_value / FIRST_NAMES.len() as u64) % LAST_NAMES.len() as u64) as usize;
let roman_numeral_index =
((hash_value / (FIRST_NAMES.len() * LAST_NAMES.len()) as u64) % 10) as usize;
let first_name = FIRST_NAMES[first_name_index];
let last_name = LAST_NAMES[last_name_index];
let roman_numerals = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"];
let roman_numeral = roman_numerals[roman_numeral_index];
let name = format!("{} {} {}", first_name, last_name, roman_numeral);
name
}