Skip to content

Instantly share code, notes, and snippets.

@bcernesto
Created December 1, 2020 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bcernesto/7d676170c933093cd04d7b50e5d97c9e to your computer and use it in GitHub Desktop.
Save bcernesto/7d676170c933093cd04d7b50e5d97c9e to your computer and use it in GitHub Desktop.
Calculadora de números felices
<html>
<head>
<title>Números felices</title>
</head>
<body>
<h1>Calculadora de números felices</h1>
<div>
<h2>Números felices en un rango</h2>
<p>Utiliza el siguiente formulario para calcular los números felices en un rango determinado</p>
<div>
<label for="start">Desde</label>
<input id="start" type="text" value="0" />
</div>
<div>
<label for="end">Hasta</label>
<input id="end" type="text" value="100" />
</div>
<div>
<label for="steps">Intentos</label>
<input id="steps" type="text" value="10" />
</div>
<div>
<button onclick="calc()">Listar números felices</button>
</div>
<div>
<ul id="list"></ul>
</div>
</div>
<div>
<h2>¿Es feliz?</h2>
<p>Utiliza el siguiente formulario para comprobar si un número es feliz</p>
<div>
<label for="num">Número</label>
<input id="num" type="text" value="" />
</div>
<div>
<label for="probes">Intentos</label>
<input id="probes" type="text" value="10" />
</div>
<div>
<button onclick="probe()">Comprobar número</button>
</div>
<p id="result" role="status"></p>
</div>
<script>
var list = document.getElementById('list');
var start = document.getElementById('start');
var end = document.getElementById('end');
var steps = document.getElementById('steps');
var num = document.getElementById('num');
var probes = document.getElementById('probes');
var result = document.getElementById('result');
num.addEventListener('keydown', function onEvent(e) {
if (e.key === "Enter") probe();;
});
function isHappy(num, steps){
var sums=[];
var str=num.toString();
for(step=0;step<steps;step++){
var sum=0;
for (var char = 0, len = str.length; char < len; char++) {
var digit=parseInt(str.charAt(char));
var sqr=Math.pow(digit, 2);
sum=sum+sqr;
}
if(sum==1)return true;
if(sums.includes(sum))return false;
sums.push(sum);
str=sum.toString();
}
return false;
}
function happyOnRange(start, end, steps){
var theyAreHappy=[];
for(num=start;num<end;num++){
if(isHappy(num, steps))theyAreHappy.push(num);
}
return theyAreHappy;
}
function calc(){
list.innerHTML = '';
var theyAreHappy=happyOnRange(parseInt(start.value), parseInt(end.value), parseInt(steps.value));
theyAreHappy.forEach(function(happy){
var item = document.createElement("li");
item.appendChild(document.createTextNode('Número feliz '+happy));
list.appendChild(item);
});
}
function probe(){
result.innerHTML = '';
if(isHappy(parseInt(num.value), parseInt(probes.value))){
result.appendChild(document.createTextNode('El '+parseInt(num.value)+' es un número feliz'));
}else{
result.appendChild(document.createTextNode('El '+parseInt(num.value)+' no es un número feliz'));
}
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment