Last active
February 13, 2026 06:48
-
-
Save EncodeTheCode/a92a6ff62d1eff0b26eb7a087e863d84 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |
| <title>Deterministic Name Combiner — Real-name Pool</title> | |
| <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> | |
| <style> | |
| :root{--accent:#ff7a18;--bg:#0f1724;--muted:#9aa6b2;--glass:rgba(255,255,255,0.03);font-family:Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial} | |
| *{box-sizing:border-box} | |
| body{margin:0;background:linear-gradient(180deg,#071022 0%,#081327 60%);color:#e6eef6} | |
| .wrap{max-width:980px;margin:36px auto;padding:28px;border-radius:16px;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));box-shadow:0 8px 30px rgba(2,6,23,0.7)} | |
| h1{margin:0 0 12px;font-size:20px} | |
| .inputs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px} | |
| input[type=text]{padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,0.06);background:var(--glass);color:inherit} | |
| .controls{display:flex;gap:10px} | |
| button{padding:10px 14px;border-radius:10px;border:0;background:var(--accent);color:#fff;cursor:pointer} | |
| button.secondary{background:transparent;border:1px solid rgba(255,255,255,0.06);color:var(--muted)} | |
| .recent-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(56px,auto);gap:12px} | |
| .slot{border-radius:12px;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));padding:12px;display:flex;align-items:center;justify-content:center;transition:transform .35s,opacity .35s} | |
| .txt{font-weight:700;color:var(--accent);text-shadow:0 3px 18px rgba(255,122,24,0.12)} | |
| .note{color:var(--muted);font-size:13px} | |
| @media (max-width:720px){.inputs{grid-template-columns:1fr}.recent-grid{grid-template-columns:1fr}} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="wrap"> | |
| <h1>Deterministic Name Combiner — Real-name Pool</h1> | |
| <p class="note">Uses curated lists of common modern male and female names. If either input is detected as female, the output will be a female name. Output is chosen deterministically from name pools and biased by the computed weights; results are normal, human names — not sci-fi gibberish.</p> | |
| <div class="inputs"> | |
| <input id="name1" type="text" placeholder="Name 1" autocomplete="off"> | |
| <input id="name2" type="text" placeholder="Name 2" autocomplete="off"> | |
| <input id="name3" type="text" placeholder="Generated name" readonly> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:12px;margin-bottom:12px;"> | |
| <div class="controls"><button id="generate">Generate</button><button id="clear" class="secondary">Clear</button><button id="copy" class="secondary">Copy</button></div> | |
| <div style="flex:1"></div> | |
| <div id="weights" class="note">Weights: —</div> | |
| </div> | |
| <div class="recent-grid" id="recentGrid"></div> | |
| </div> | |
| <script> | |
| // Deterministic RNG helpers | |
| function xmur3(str){ for(var i=0,h=1779033703^str.length;i<str.length;i++){h=Math.imul(h^str.charCodeAt(i),3432918353);h=(h<<13)|(h>>>19);} return function(){ h=Math.imul(h^(h>>>16),2246822507); h=Math.imul(h^(h>>>13),3266489909); return (h^=h>>>16)>>>0; }; } | |
| function mulberry32(a){ return function(){ var t=a+=0x6D2B79F5; t=Math.imul(t^t>>>15,t|1); t^=t+Math.imul(t^t>>>7,t|61); return ((t^t>>>14)>>>0)/4294967296; }; } | |
| function capitalize(s){ return s.length? s.charAt(0).toUpperCase()+s.slice(1):s; } | |
| function stripNonLetters(s){ return (s||'').replace(/[^A-Za-zÀ-ɏ]/g,''); } | |
| // ---------- | |
| // Common modern name pools (curated). These lists are intentionally representative, not exhaustive. | |
| // Add or reduce names as you like. Names are lowercased for lookup. | |
| // Female names | |
| var FEMALE = [ 'emma','olivia','ava','isabella','sophia','mia','amelia','harper','evelyn','abigail','emily','ella','elizabeth','camila','luna','sofia','avery','mila','aria','scarlett','penelope','layla','chloe','victoria','madison','eleanor','grace','nora','riley','zoey','hannah','hazel','lily','ellie','violet','aurora','savannah','leah','stella','nataleigh','natalie','zoe','paisley','audrey','brooklyn','bella','claire','skylar','lucy','anna','samantha','caroline','kennedy','genesis','aaliyah','alice','sarah','allison','hailey','eva','adeline','gabriella','serenity','autumn','quinn','nevaeh','peyton','lydia','josephine','emery','julia','ruby','sophie','elena','isla','mary','margaret','madelyn','naomi','alina','katherine','morgan','valentina','michaela','sara','rebecca','maria','helena','laura','piper','marie','diana','angela','kelly','taylor','heidi','ashley','megan','jasmine','catherine','ivy','cora','annabelle','elise','roxanne','nina','brianna','kimberly','jerse','salma','ada','adelaide','adriana','adrienne','aisha','alanna','alaya','alba','aleah','alejandra','alessandra','alicia','alison','alyssa','amanda','amaya','amelie','amina','anabel','anastasia','andrea','angelina','ann','anne','annalise','annika','antonia','anya','april','arabella','ariana','ariel','arielle','astrid','athena','aubrey','audra','augustina','bailey','beatrice','beatrix','belinda','bianca','blair','blanca','bonnie','brielle','bridget','bridgette','britney','brittany','brooke','brynn','cambria','camille','camryn','cameron','candace','candice','cara','carina','carissa','carlotta','carolina','carolyn','casey','cassandra','cassie','catalina','celeste','celia','celina','chantal','chantelle','charlotte','charlene','charity','charmaine','chastity','chelsea','cherie','cheryl','chiara','christa','christiana','christine','christy','cindy','clarissa','clara','claudia','cleo','coco','colette','colleen','connie','constance','coral','coraline','corinne','cordelia','cornelia','courtney','crystal','cynthia','dahlia','daisy','dakota','dana','danica','daniela','danielle','daphne','daria','dawn','deana','deanna','deborah','delaney','delia','delilah','della','demi','denise','desiree','diane','dianne','dina','dionne','dominique','donna','dora','dorothy','dottie','drusilla','dulce','eden','edie','edith','edna','effie','emilia','emilie','emmaline','emmanuelle','emory','ena','enid','enya','esme','estelle','esther','eugenia','eunice','evangeline','eve','evie','evita','faith','fay','faye','felicia','felicity','fernanda','ferne','fiona','flora','florence','frances','francesca','freya','frida','gabriela','gabrielle','gail','gemma','genevieve','georgia','geraldine','gia','giana','gina','giovanna','giselle','gladys','gloria','greta','gretchen','guinevere','gwendolyn','hana','harley','harriet','hayley','heather','helga','hilda','hollie','holly','honor','hope','ida','ilaria','iliana','imelda','india','ines','ingrid','irene','iris','irma','isabel','isabela','isobel','izabela','izzy','jacinta','jacqueline','jade','jaden','jael','jaina','jane','janelle','janet','janice','janie','janine','janna','jasmin','jayda','jayde','jean','jeanette','jeanine','jeanne','jeannie','jena','jenna','jennifer','jenny','jerica','jess','jessica','jessa','jillian','jill','joan','joanna','joanne','jocelyn','jodie','jody','johanna','joleen','jolene','jolie','jordan','jorja','joselyn','josie','joy','joyce','judith','juliana','julianne','julie','juliet','julieta','julissa','justine','kacey','kaitlin','kaitlyn','kali','kallie','kamila','kami','kamryn','karen','karina','karissa','karla','katelyn','katharine','kathleen','kathryn','katie','katia','katrina','kaya','keira','kelsey','kendall','kendra','kenya','keri','kerry','keyla','kia','kiana','kiara','kiera','kim','kimberley','kira','kirsten','kirstin','kirsty','kisha','klaudia','kori','kourtney','kris','krystal','kyla','kylie','kyra','lacy','laia','lainey','laila','laisha','laken','lalita','lamia','lana','lanae','lara','larissa','laurel','lauren','lavender','leanna','leila','leilani','lenora','lena','lesley','leslie','leticia','letitia','lexi','lia','liana','libby','lidia','lila','lilah','lillian','liliana','lilith','linda','lindsey','linnea','lisa','livia','liz','lola','lori','lorena','lorraine','louisa','louise','lucia','luciana','lucille','macey','mackenzie','macy','madalyn','madeline','madelene','maggie','magdalena','mai','maia','malia','malika','mama','manuela','marcia','margot','mariah','mariana','maribel','marigold','marina','marisol','marissa','maritza','marjorie','marlene','marsha','marta','martina','maryann','marybeth','matilda','maude','maxine','maya','mayra','meadow','melanie','melina','melissa','melody','mercedes','meredith','michele','michelle','mika','mikaela','mildred','milena','mina','miranda','mirielle','miriam','mirna','misha','missy','misty','moira','molly','monica','monique','mora','morwenna','mya','myla','nadia','nadine','naima','nancy','natalia','natasha','naya','neha','neve','nicola','nicole','nika','noelle','noemi','norah','norma','nova','nuria','nyla','olga','olive','opal','ophelia','ora','orchid','orla','oriana','osanna','ozella','paloma','pamela','paola','pauline','paxton','pearl','peggy','perla','philippa','phoebe','pia','polly','polina','poncia','priscilla','priya','prudence','qiana','quiana','quinta','quita','rachel','rachael','rachelle','rain','raisa','ramona','randi','raven','reagan','reba','regina','reina','renata','renee','rhea','rhiannon','rhoda','rhonda','rita','roberta','robin','robyn','rochelle','romina','roni','ronnie','rosa','rosalind','rosalinda','rosalia','rosalyn','rosanna','rose','roselyn','rosie','roxana','roxie','royce','ruth','ruthie','ryann','sabrina','sade','saige','salome','sally','samara','samira','sandra','sandy','sasha','satya','scarlet','selena','selina','serena','serra','shaina','shakira','shana','shania','shannon','shari','sharon','shauna','shawna','shea','shelby','shelia','shelly','sheridan','sherri','sheryl','shirley','shoshana','siobhan','sienna','sierra','simone','sisley','skye','sonia','sonja','soraya','stacey','stacia','stacy','stephanie','storm','sue','susan','susana','susanna','suzanne','suzy','sybil','sylvia','sylvie','tabitha','talia','talitha','tamara','tami','tamika','tammy','tanya','tara','taryn','tasha','tate','tatiana','tatum','tawny','tea','tedra','tegan','teri','teresa','teresita','terri','terry','tess','tessa','thaïs','thalia','thea','theodora','theresa','thirza','tia','tiana','tianna','tiffany','tilda','tilly','timea','tina','tish','tori','tory','traci','tracy','trina','trisha','trinity','trudy','tula','twyla','tyra','udita','ulrika','ulrike','ulyana','uma','una','ursula','uta','valeria','valerie','vanessa','vania','vanna','varda','vera','verity','veronica','vesta','vicki','vida','viktoria','violeta','virginia','vivian','viviana','vivien','vivienne','willa','willow','wilma','winifred','winnie','wynne','wynter','xandra','xanthe','xenia','ximena','xin','xia','xochitl','xylia','xena','yasmin','yasmine','yolanda','yomi','yvette','yvonne','yulia','yuna','yuri','zahra','zaida','zaira','zaina','zara','zaria','zasha','zella','zelda','zelina','zenobia','zeni','zenna','zephyr','zera','zeta','zina','zion','zira','zola','zolanda','zoya','sissy' | |
| ]; | |
| // Male names | |
| var MALE = [ 'liam','noah','oliver','elijah','james','william','benjamin','lucas','henry','alexander','mason','michael','ethan','daniel','jacob','logan','jackson','levi','sebastian','mateo','jack','owen','theodore','aiden','samuel','joseph','john','david','wyatt','matthew','luke','asher','carter','julian','grayson','leo','jayden','gabriel','isaac','lincoln','anthony','hudson','dylan','ezra','thomas','charles','christopher','jaxon','maverick','josiah','isaiah','andrew','elias','joshua','nathan','caleb','ryan','adrian','miles','eli','nolan','christian','aaron','cameron','ezekiel','colton','luca','landon','hunter','jonah','silas','adam','nicholas','cooper','brayden','ryker','blake','carson','cade','henrik','omar','roman','zachary','kevin','peter','kyle','steven','bryce','tyler','simon','santiago','angel','waylon','eastón','kai','axel','brooks','jonathan','robert','jameson','ian','everett','greyson','wesley','jeremiah','leonardo','jordan','jose','bennett','parker','beau','weston','austin','connor','dominick','xavier','jaxson','jace','emmett','declan','rowan','micah','kayden','gael','river','kingston','damian','sawyer','vincent','legend','myles','harrison','august','bryson','amir','giovanni','chase','diego','milo','jasper','walker','jason','cole','nathaniel','george','luis','arlo','ryder','arthur','calvin','braxton','elliot','rhett','enzo','judah','elliott','malachi','beckett','theo','hayden','kaiden','zion','matteo','jesse','luka','emmanuel','zayden','king','alex','brody','eric','ace','victor','abraham','edward','maddox','kaleb','timothy','jude','elli','finley','jesus','kameron','alan','maxwell','miguel','antonio','abel','beckham','brandon','judson','richard','avery','caden','brantley','tristan','mohamed','brady','colin','malcolm','cedric','paul','erick','andre','martin','tobias','marcus','emilio','andres','colt','braylen','jeremy','manuel','prince','karter','dante','rylan','atlas','remington','mohammad','mario','philip','jesiah','kyrie','eduardo','zane','gregory','preston','jaden','derek','bruce','raymond','cyrus','leon','caiden','israel','ronan','kingsley','alec','knox','griffin','warren','keegan','solomon','ruben','alvaro','cody','khalil','dakota','bodhi','harvey','abdullah','finnegan','kayson','raul','drew','damon','hugo','wade','mohammed','sullivan','orion','spencer','darius','dean','keith','muhammad','aarav','alejandro','tyson','karson','lawrence','francisco','rohan','sean','kane','ali','lane','travis','chance','colby','malik','cory','julio','max','moses','zayn','abdul','quinn','rory','saint','leland','roy','boone','russell','kellen','marshall','nehemiah','ozzy','reed','shane','ulises','vance','wes','xander','yusuf','zaid','abdiel','cash','dorian','eliseo','frank','gavin','hector','jairo','kaden','leonel','matias','niko','oscar','pierce','quincy','raphael','salvatore','tate','uriah','vicente','will','zachariah','albert','bryant','clayton','drake','edwin','fabian','gordon','harold','ivan','jensen','keaton','lamar','mitchell','nelson','otto','paxton','quentin','ricardo','santino','trevor','ulysses','valentin','wallace','zavier' | |
| ]; | |
| // lower-case lookup sets for detection | |
| var FEMALE_SET = {}; | |
| var MALE_SET = {}; | |
| FEMALE.forEach(function(n){ FEMALE_SET[n.toLowerCase()]=true; }); | |
| MALE.forEach(function(n){ MALE_SET[n.toLowerCase()]=true; }); | |
| function detectGender(name){ | |
| var s = stripNonLetters(name).toLowerCase(); | |
| if (!s) return 'unknown'; | |
| if (FEMALE_SET[s]) return 'female'; | |
| if (MALE_SET[s]) return 'male'; | |
| return 'unknown'; | |
| } | |
| // similarity helpers | |
| function longestCommonSubstring(a,b){ a=(a||'').toLowerCase(); b=(b||'').toLowerCase(); var m=a.length,n=b.length; if(!m||!n) return 0; var dp=new Array(n+1).fill(0),best=0; for(var i=1;i<=m;i++){ for(var j=n;j>=1;j--){ if(a.charAt(i-1)===b.charAt(j-1)){ dp[j]=dp[j-1]+1; if(dp[j]>best) best=dp[j]; } else dp[j]=0; } } return best; } | |
| // main deterministic generator: selects from name pools and biases by weights | |
| function generateCombined(aRaw, bRaw){ | |
| var a = (aRaw||'').trim(); | |
| var b = (bRaw||'').trim(); | |
| if (!a || !b) return {name:'', w1:0, w2:0}; | |
| var seed = a.toLowerCase() + '|' + b.toLowerCase(); | |
| var h = xmur3(seed)(); | |
| var rng = mulberry32(h); | |
| // deterministic weight 10..90 | |
| var wA = Math.floor(rng()*81) + 10; | |
| var wB = 100 - wA; | |
| // detect gender | |
| var g1 = detectGender(a), g2 = detectGender(b); | |
| var targetGender = 'mixed'; | |
| if (g1 === 'female' || g2 === 'female') targetGender = 'female'; | |
| else if (g1 === 'male' || g2 === 'male') targetGender = 'male'; | |
| // choose pools | |
| var pool; | |
| if (targetGender === 'female') pool = FEMALE.slice(); | |
| else if (targetGender === 'male') pool = MALE.slice(); | |
| else pool = FEMALE.concat(MALE); | |
| // deterministic selection: compute two indices then mix by weights | |
| var idxA = Math.floor(rng()*pool.length); | |
| var idxB = Math.floor(rng()*pool.length); | |
| var mixedIndex = Math.round((idxA * (wA/100)) + (idxB * (wB/100))) % pool.length; | |
| // avoid near-match: reject names that share substring length >=3 with either input OR LCS >30% | |
| var attempts = 0; | |
| var step = Math.max(1, Math.floor(rng()* (pool.length-1) ) ); | |
| var candidate = null; | |
| var a_clean = stripNonLetters(a).toLowerCase(); | |
| var b_clean = stripNonLetters(b).toLowerCase(); | |
| while (attempts < pool.length){ | |
| var idx = (mixedIndex + attempts * step) % pool.length; | |
| var name = pool[idx]; | |
| var name_clean = stripNonLetters(name).toLowerCase(); | |
| var tooSimilar = false; | |
| // reject if contains any 3+ contiguous substring from input names | |
| function hasSubstrK(k, text, pattern){ if (!text || !pattern) return false; if (pattern.length < k || text.length < k) return false; for (var i=0;i<=pattern.length-k;i++){ if (text.indexOf(pattern.substr(i,k)) !== -1) return true; } return false; } | |
| for (var k=3;k<=Math.min(6, name_clean.length); k++){ | |
| if (hasSubstrK(k, name_clean, a_clean) || hasSubstrK(k, name_clean, b_clean)) { tooSimilar = true; break; } | |
| } | |
| if (tooSimilar){ attempts++; continue; } | |
| // LCS check | |
| var lcsA = longestCommonSubstring(name_clean,a_clean); | |
| var lcsB = longestCommonSubstring(name_clean,b_clean); | |
| var threshold = Math.max(2, Math.floor(name_clean.length * 0.30)); | |
| if (lcsA > threshold || lcsB > threshold){ attempts++; continue; } | |
| // passed checks | |
| candidate = capitalize(name_clean); | |
| break; | |
| } | |
| // fallback: if none found, pick a deterministic name by mapping hash to alphabet (6 letters) | |
| if (!candidate){ | |
| var alt = ''; | |
| for (var i=0;i<6;i++){ alt += String.fromCharCode(97 + Math.floor(rng()*26)); } | |
| candidate = capitalize(alt); | |
| } | |
| return {name: candidate, w1: wA, w2: wB}; | |
| } | |
| // recent list UI | |
| var recent = [], MAX_RECENT = 6; | |
| function renderRecent(){ var $g=$('#recentGrid'); $g.empty(); for(var i=0;i<MAX_RECENT;i++){ (function(idx){ var it = recent[idx]; var $slot = $('<div class="slot">'); if(!it){ $slot.html('<div class="note" style="opacity:.45">— empty —</div>'); } else { var $txt = $('<div class="txt">').text(it.n1 + ' + ' + it.n2 + ' = ' + it.n3); var $sm = $('<div class="note">').text('Weights: ' + it.w1 + '% / ' + it.w2 + '%'); $slot.append($('<div>').append($txt).append($sm)); $slot.css('cursor','pointer'); $slot.on('click', function(){ $('#name1').val(it.n1); $('#name2').val(it.n2); $('#name3').val(it.n3); $('#weights').text('Weights: ' + it.w1 + '% / ' + it.w2 + '%'); }); } $g.append($slot); })(i); } } | |
| function addRecent(n1,n2,n3,w1,w2,seed){ var idx = recent.findIndex(function(x){ return x && x.n1.toLowerCase()===n1.toLowerCase() && x.n2.toLowerCase()===n2.toLowerCase() && x.n3===n3; }); if (idx !== -1){ var it = recent.splice(idx,1)[0]; recent.unshift(it); } else recent.unshift({n1:n1,n2:n2,n3:n3,w1:w1,w2:w2,seed:seed}); if (recent.length>MAX_RECENT) recent = recent.slice(0,MAX_RECENT); renderRecent(); } | |
| // UI wiring | |
| $(function(){ renderRecent(); $('#generate').on('click', function(){ var n1 = $('#name1').val(); var n2 = $('#name2').val(); var res = generateCombined(n1,n2); if (!res.name){ alert('Please enter both Name 1 and Name 2.'); return; } $('#name3').val(res.name); $('#weights').text('Weights: ' + res.w1 + '% / ' + res.w2 + '%'); addRecent(n1,n2,res.name,res.w1,res.w2,(n1+'|'+n2).toLowerCase()); }); $('#clear').on('click', function(){ $('#name1').val(''); $('#name2').val(''); $('#name3').val(''); $('#weights').text('Weights: —'); }); $('#copy').on('click', function(){ var v = $('#name3').val(); if (!v){ alert('No result to copy'); return; } navigator.clipboard && navigator.clipboard.writeText(v).then(function(){ alert('Copied: ' + v); }, function(){ var $t = $('<input>'); $('body').append($t); $t.val(v).select(); document.execCommand('copy'); $t.remove(); alert('Copied: ' + v); }); }); $('#name1,#name2').on('keypress', function(e){ if (e.which === 13) $('#generate').click(); }); window.generateCombined = generateCombined; }); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment