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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  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 4,347 veces)
TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


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
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


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

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


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: 434


CipherX


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
***
Desconectado Desconectado

Mensajes: 5.529


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: 434


CipherX


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.855



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 2,830 Último mensaje 2 Diciembre 2009, 21:27 pm
por Blitzkrieg'
Sencillo Algoritmo de Números Pseudoaleatorios [Aporte]
.NET (C#, VB.NET, ASP)
Keyen Night 0 2,700 Último mensaje 17 Septiembre 2011, 21:31 pm
por Keyen Night
[Aporte][C++11] Numeros aleatorios
Programación C/C++
0xDani 0 1,880 Ú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 9,011 Último mensaje 12 Agosto 2014, 06:33 am
por leosansan
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
Ali Baba 3 9,880 Último mensaje 29 Mayo 2017, 10:00 am
por ThinkByYourself
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines