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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  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 1,243 veces)
TickTack


Desconectado Desconectado

Mensajes: 326


mantenetecuerdo


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

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

Mensajes: 2.279


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

Mensajes: 5.160


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


mantenetecuerdo


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

mantenetecuerdo.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.160


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


mantenetecuerdo


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

mantenetecuerdo.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.700



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,094 Ú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 1,782 Último mensaje 17 Septiembre 2011, 21:31 pm
por Keyen Night
[Aporte][C++11] Numeros aleatorios
Programación C/C++
0xDani 0 594 Ú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 6,255 Último mensaje 12 Agosto 2014, 06:33 am
por leosansan
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
Diesan Romero 3 4,657 Último mensaje 29 Mayo 2017, 10:00 am
por ThinkByYourself
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines