alphaXgeneration

Play with Numbers

Split · Calculate · Convert · Generate — all in one place

✂️ Number Splitter
Mode
How many parts?
⚡ Apply to all parts:
Global Min
Global Max
📋 Total mode: first value = total  |  Avg mode: first value = average
`; const blob = new Blob([html], {type:'application/vnd.ms-excel'}); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'splitter_result.xls'; a.click(); } function spExcel(){ if(!spLastResult.length) return; const maxParts = Math.max(...spLastResult.map(batch => batch.parts.length), 1); const dynamicHeaders = Array.from({length:maxParts}, (_,idx)=>`P${idx+1}`).join(''); const rows = spLastResult.map((batch,batchIdx) => { const partCells = Array.from({length:maxParts}, (_,idx)=>`${batch.parts[idx]?.value ?? ''}`).join(''); const sum = Math.round(batch.parts.reduce((s,r)=>s+r.value,0)*100)/100; const avg = Math.round((sum / batch.parts.length)*100)/100; const inputVal = batch.mode==='avg' ? batch.avg : batch.total; return ` ${batchIdx+1} ${inputVal} ${partCells} ${sum} ${batch.mode==='avg' ? avg : ''} `; }).join(''); const html = ` ${dynamicHeaders}${rows}
Input#Input ValueSumAvg
`; const blob = new Blob([html], {type:'application/vnd.ms-excel'}); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'splitter_result.xls'; a.click(); } // ══ 2. PERCENTAGE ══════════════════════════════════════════════════════════════ function pcCalc(){ const x=parseFloat(document.getElementById('pc_x').value),y=parseFloat(document.getElementById('pc_y').value),el=document.getElementById('pc_res1'); if(isNaN(x)||isNaN(y)){el.innerHTML='—';return;} const r=Math.round((x/100)*y*10000)/10000; el.innerHTML=`${r} (${x}% of ${y})`; } function pcCalc2(){ const a=parseFloat(document.getElementById('pc_a').value),b=parseFloat(document.getElementById('pc_b').value),el=document.getElementById('pc_res2'); if(isNaN(a)||isNaN(b)||b===0){el.innerHTML='—';return;} const r=Math.round((a/b)*10000)/100; el.innerHTML=`${r}% (${a} is ${r}% of ${b})`; } function pcChange(){ const o=parseFloat(document.getElementById('pc_old').value),n=parseFloat(document.getElementById('pc_new').value),el=document.getElementById('pc_res3'); if(isNaN(o)||isNaN(n)||o===0){el.innerHTML='—';return;} const r=Math.round(((n-o)/Math.abs(o))*10000)/100,dir=r>=0?'📈 Increase':'📉 Decrease',col=r>=0?'#34d399':'#f87171'; el.innerHTML=`${r>0?'+':''}${r}% ${dir}`; } // ══ 3. RANDOM ══════════════════════════════════════════════════════════════════ let rngLast=[]; function rngGen(){ const mn=parseInt(document.getElementById('rng_min').value)||0,mx=parseInt(document.getElementById('rng_max').value)||100; const cnt=Math.min(50,Math.max(1,parseInt(document.getElementById('rng_cnt').value)||1)); const lo=Math.min(mn,mx),hi=Math.max(mn,mx); rngLast=Array.from({length:cnt},()=>Math.floor(Math.random()*(hi-lo+1))+lo); const el=document.getElementById('rng_res'); el.innerHTML=cnt===1?`${rngLast[0]}`:`${rngLast.join(' , ')}`; } function rngCopy(){if(!rngLast.length)return;navigator.clipboard.writeText(rngLast.join(', '));} // ══ 4. NUMBER → WORDS ══════════════════════════════════════════════════════════ const NW_ONES=['','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen']; const NW_TENS=['','','Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety']; function nwHundred(n){ if(n===0)return'';if(n<20)return NW_ONES[n]; if(n<100)return NW_TENS[Math.floor(n/10)]+(n%10?' '+NW_ONES[n%10]:''); return NW_ONES[Math.floor(n/100)]+' Hundred'+(n%100?' '+nwHundred(n%100):''); } function nwConvert(){ const raw=document.getElementById('nw_num').value.trim(),el=document.getElementById('nw_res'); if(!raw){el.innerHTML='—';return;} let n=parseInt(raw);if(isNaN(n)){el.innerHTML='Invalid';return;} const neg=n<0;n=Math.abs(n); if(n===0){el.innerHTML='Zero';return;} let parts=[]; if(n>=10000000){parts.push(nwHundred(Math.floor(n/10000000))+' Crore');n%=10000000;} if(n>=100000){parts.push(nwHundred(Math.floor(n/100000))+' Lakh');n%=100000;} if(n>=1000){parts.push(nwHundred(Math.floor(n/1000))+' Thousand');n%=1000;} if(n>0)parts.push(nwHundred(n)); el.innerHTML=`${(neg?'Minus ':'')+parts.join(' ')}`; } function nwCopy(){navigator.clipboard.writeText(document.getElementById('nw_res').innerText);} // ══ 5. AVERAGE & GRADE ═════════════════════════════════════════════════════════ function avgCalc(){ const raw=document.getElementById('avg_inp').value,el=document.getElementById('avg_res'); const nums=raw.split(/[\s,]+/).map(Number).filter(n=>!isNaN(n)&&raw.trim()); if(!nums.length){el.innerHTML='—';return;} const sum=nums.reduce((a,b)=>a+b,0),avg=sum/nums.length; const mn=Math.min(...nums),mx=Math.max(...nums); const grade=avg>=90?'A+':avg>=80?'A':avg>=70?'B+':avg>=60?'B':avg>=50?'C':'F'; const gcol=avg>=60?'#34d399':avg>=50?'#fbbf24':'#f87171'; el.innerHTML=`
Average
${Math.round(avg*100)/100}
Sum
${sum}
Count
${nums.length}
Min/Max
${mn}/${mx}
Grade
${grade}
`; } // ══ 6. FACTORS & PRIME ═════════════════════════════════════════════════════════ function fcCalc(){ const n=parseInt(document.getElementById('fc_num').value),el=document.getElementById('fc_res'); if(isNaN(n)||n<1){el.innerHTML='—';return;} const factors=[]; for(let i=1;i<=Math.sqrt(n);i++){if(n%i===0){factors.push(i);if(i!==n/i)factors.push(n/i);}} factors.sort((a,b)=>a-b); const isPrime=n>1&&factors.length===2; let tmp=n,pf=[]; for(let d=2;d*d<=tmp;d++){while(tmp%d===0){pf.push(d);tmp=Math.floor(tmp/d);}} if(tmp>1)pf.push(tmp); el.innerHTML=`
PRIME?
${isPrime?'✓ Yes, Prime':'✗ Not Prime'}
FACTORS (${factors.length})
${factors.join(' · ')}
PRIME FACTORIZATION
${pf.join(' × ')||n}
`; } function escH(s){return String(s).replace(/&/g,'&').replace(/{ card.addEventListener('mousemove',e=>{ const r=card.getBoundingClientRect(); const x=(e.clientX-r.left)/r.width-.5; const y=(e.clientY-r.top)/r.height-.5; card.style.transform=`translateY(-8px) rotateX(${-y*8}deg) rotateY(${x*8}deg)`; }); card.addEventListener('mouseleave',()=>{ card.style.transform=''; }); }); // ── Scroll reveal ── const observer=new IntersectionObserver(entries=>{ entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add('visible');}}); },{threshold:.1}); document.querySelectorAll('.tool-card').forEach((c,i)=>{ c.style.transitionDelay=`${i*0.07}s`; observer.observe(c); }); // ── Result glow on split ── const _origRenderBatches = spRenderBatches; function spRenderBatches(batches){ _origRenderBatches(batches); const ra=document.getElementById('sp_resultArea'); ra.classList.remove('result-glow'); void ra.offsetWidth; ra.classList.add('result-glow'); } const ALL_TOOLS=['splitterCard','percentCard','randomCard','wordsCard','avgCard']; function toggleDropdown(){ document.getElementById('dropBtn').classList.toggle('open'); document.getElementById('dropMenu').classList.toggle('open'); } function pickTool(link){ event.preventDefault(); const id=link.dataset.tool; ALL_TOOLS.forEach(t=>{ const el=document.getElementById(t); if(el) el.style.display = t===id ? '' : 'none'; }); // highlight active document.querySelectorAll('#dropMenu a').forEach(a=>a.classList.remove('active-tool')); link.classList.add('active-tool'); // close dropdown document.getElementById('dropBtn').classList.remove('open'); document.getElementById('dropMenu').classList.remove('open'); // scroll to tool const el=document.getElementById(id); if(el) setTimeout(()=>el.scrollIntoView({behavior:'smooth',block:'start'}),50); } // close dropdown when clicking outside document.addEventListener('click',function(e){ const dd=document.getElementById('navDropdown'); if(dd && !dd.contains(e.target)){ document.getElementById('dropBtn').classList.remove('open'); document.getElementById('dropMenu').classList.remove('open'); } });