elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Aporte] javascript - Proporción de números
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] javascript - Proporción de números  (Leído 452 veces)
TickTack

Desconectado Desconectado

Mensajes: 282


Ver Perfil
[Aporte] javascript - Proporción de números
« en: 9 Enero 2021, 00:04 am »

Hola a todos,

quizás esto pueda ser útil para algunas personas...

La proporción de números en el vector que son mayores, menores o iguales a 0:

Código
  1. const NumberValue = {
  2.  GREATER_THAN_0: i => i > 0,
  3.  LESS_THAN_0: i => i < 0,
  4.  EQUAL_TO_0: i => i == 0
  5. };
  6.  
  7. function printStatistics(...a) {
  8.    for (var key in NumberValue) {
  9.        if (NumberValue.hasOwnProperty(key)) {
  10.          console.log(key + " = " + sum(NumberValue[key],a).map(i => 1.0 / a.length).reduce((pv, cv) => pv + cv, 0));
  11.        }
  12.    }
  13. }
  14.  
  15. function sum(callback, a) {
  16.    return a.filter(callback);
  17. }
  18.  
  19. console.log(printStatistics(-5, 5, 4, 3, 2, 1, 0, -1));
  20.  

Resultado:
Código:
GREATER_THAN_0 = 0.625
LESS_THAN_0 = 0.25
EQUAL_TO_0 = 0.125


Saludos

Mod Edit: Usar etiquetas GeSHI.


« Última modificación: 9 Enero 2021, 01:22 am por MinusFour » En línea

@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.217


Turn off the red ligth


Ver Perfil WWW
Re: [Aporte] javascript - Proporción de números
« Respuesta #1 en: 9 Enero 2021, 02:03 am »

Qué recuerdos del colegio. Ahí va mi forma de hacerlo:
Código
  1. let proporcion = (...nums) => {
  2.  let greater, less = 0, equal = 0;
  3.  
  4.  for(let i in nums) {
  5.    nums[i] < 0 && ++less;
  6.    nums[i] == 0 && ++equal;
  7.  }
  8.  
  9.  greater = ( nums.length - (less + equal) ) / nums.length;
  10.  less /= nums.length;
  11.  equal /= nums.length;
  12.  
  13.  return [greater, less, equal];
  14. }
  15.  
  16. alert(proporcion(-5, 5, 4, 3, 2, 1, 0, -1));


En línea

MinusFour
Moderador Global
***
Conectado Conectado

Mensajes: 4.952


I'm fourth.


Ver Perfil WWW
Re: [Aporte] javascript - Proporción de números
« Respuesta #2 en: 9 Enero 2021, 02:35 am »

Un poco más de golf pero se puede leer bien yo creo:
Código
  1. let proporcion = (...arr) => {
  2.  let porcentaje = 1/arr.length;
  3.  return arr.reduce((total, actual) => (
  4.    actual > 0
  5.      ? total.mayor += porcentaje
  6.      : actual < 0
  7.        ? total.menor += porcentaje
  8.        : total.igual += porcentaje,
  9.   total),
  10.  { mayor: 0, menor: 0, igual: 0});
  11. };
En línea

TickTack

Desconectado Desconectado

Mensajes: 282


Ver Perfil
Re: [Aporte] javascript - Proporción de números
« Respuesta #3 en: 13 Enero 2021, 17:09 pm »

Un poco más de golf pero se puede leer bien yo creo:
Código
  1. let proporcion = (...arr) => {
  2.  let porcentaje = 1/arr.length;
  3.  return arr.reduce((total, actual) => (
  4.    actual > 0
  5.      ? total.mayor += porcentaje
  6.      : actual < 0
  7.        ? total.menor += porcentaje
  8.        : total.igual += porcentaje,
  9.   total),
  10.  { mayor: 0, menor: 0, igual: 0});
  11. };

Si a tu código le agrego
Código:
console.log(proporcion(-5, 5, 4, 3, 2, 1, 0, -1));

entonces, en vez de mostrarme los resultados esperados, me muestra:

Citar
[object Object]
En línea

MinusFour
Moderador Global
***
Conectado Conectado

Mensajes: 4.952


I'm fourth.


Ver Perfil WWW
Re: [Aporte] javascript - Proporción de números
« Respuesta #4 en: 13 Enero 2021, 17:44 pm »

Entonces tu console.log está haciendo algo diferente a los demás. Por lo general console.log imprime la estructura del objeto no su valor primitivo.



Una versión aún más reducida pero creo que no se lee tan bien.

Código
  1. let proporcion = (...arr) => {
  2.  let porcentaje = 1/arr.length;
  3.  return arr.reduce((total, actual) => (
  4.    total[actual > 0
  5.      ? 'mayor'
  6.      : actual < 0
  7.        ? 'menor'
  8.        : 'igual'
  9.    ] += porcentaje,
  10.   total),
  11.  { mayor: 0, menor: 0, igual: 0});
  12. };
En línea

TickTack

Desconectado Desconectado

Mensajes: 282


Ver Perfil
Re: [Aporte] javascript - Proporción de números
« Respuesta #5 en: 14 Enero 2021, 09:30 am »

Entonces tu console.log está haciendo algo diferente a los demás. Por lo general console.log imprime la estructura del objeto no su valor primitivo.

No es solamente el console.log, también la función alert me larga lo mismo.

Yo uso Chrome. Supongo que vos usas Firefox.
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.592



Ver Perfil WWW
Re: [Aporte] javascript - Proporción de números
« Respuesta #6 en: 14 Enero 2021, 10:38 am »

Citar
No es solamente el console.log, también la función alert me larga lo mismo.

El alert no tiene capacidad de mostrar estructuras. Solo puede mostrar valores convertibles a string. El console log en Chrome si deberia funcionar sin ningun problema, a mi me funciona bien. Ten en cuenta que no puedes concatenar cosas a la respuesta de un objeto. Por ejemplo esto no seria valido:

Código
  1. console.log('resultado: ' + proporcion(-5, 5));

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[APORTE] numeros primos
Java
Caballero Maldito 1 1,982 Último mensaje 2 Diciembre 2009, 21:27 pm
por Blitzkrieg'
[Aporte][C++11] Numeros aleatorios
Programación C/C++
0xDani 0 486 Último mensaje 23 Febrero 2013, 21:50 pm
por 0xDani
[Aporte] Detector de números primos en C++ « 1 2 »
Programación C/C++
ivancea96 12 5,838 Último mensaje 12 Agosto 2014, 06:33 am
por leosansan
[Aporte]Convertidor de números decimales a romanos
Programación C/C++
0xFer 0 1,530 Último mensaje 24 Mayo 2015, 19:00 pm
por 0xFer
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
Diesan Romero 3 4,050 Último mensaje 29 Mayo 2017, 10:00 am
por ThinkByYourself
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines