Código de golf en JavaScript

Code Golf en JavaScript se refiere a intentar resolver un problema utilizando la menor cantidad de caracteres posible. Al igual que en Golf, la puntuación más baja gana, la menor cantidad de caracteres «gana». JavaScript es un lenguaje fantástico para el golf de código debido a la compatibilidad con versiones anteriores, peculiaridades, es un lenguaje de alto nivel y toda la coerción. Entonces, aquí veremos algunas técnicas de Code Golfing en lenguaje JavaScript:

1. Comprueba si una variable es igual a algún no positivo: simplemente podemos hacer esto con un montón de declaraciones if-else, pero tenemos diferentes métodos también como restar ese entero positivo del número y comprueba si es mayor que cero o no.

  • Código original:
    if(a == 5){
        yes();
    }else{
        no();
    }
    
  • Código de Golf – I
    x == 3 ? "y" : "n";
    
  • Código Golf – II
    x-3 ? "y" : "n";
    
  • Código golfeado – III
    x^3 ? "y" : "n";
    

2. Verificando el caso de los literales: Incluso podemos comparar el literal con {} para verificar su caso, devuelve verdadero para mayúsculas y falso para minúsculas.

  • Código de golf:
    'g' < {}     // Returns false, lower case
    'G' < {}     // Returns true, upper case
    

3. Floor the value: se usa una solución directa en la función Floor presente en la biblioteca Math, pero requiere un poco más de caracteres. Podemos hacer lo mismo en unos pocos caracteres usando el | operador.

  • Código original:
    a = Math.floor(a);
    
  • Código de golf:
    a = 0 | a;
    

4. Valor de techo: una solución directa es usar la función de techo presente en la biblioteca matemática, pero requiere un poco más de caracteres. Podemos hacer lo mismo en unos pocos caracteres usando la combinación de %, operador ~ .

  • Código original:
    a = Math.ceil(a);
    
  • Código de golf:
    a = a%1 ? -~a : a;
    

5. Redondeo del valor: se usa una solución directa para redondear la función presente en la biblioteca de matemáticas, pero requiere un poco más de caracteres. Podemos hacer lo mismo en unos pocos caracteres usando la combinación de |, + operador.

  • Código original:
    a = Math.round(a);
    
  • Código de golf:
    a = 0 | a + .5;
    

6. Funciones de flecha: las funciones de flecha proporcionan una forma concisa de escribir funciones en JavaScript.

  • Código original:
    g = function (a) {
       return a * a * a;
    }
    
  • Código de golf:
    g = a => a*a*a;
    

7. Alternativas para la función min: el operador ternario siempre guarda bytes. Podemos comparar dos números usando el operador ternario.

  • Código original:
    Math.min(x, y);
    
  • Código de golf:
    a < b ? a : b
    

8. Alternativas para la función max: el operador ternario siempre guarda bytes. Podemos comparar dos números usando el operador ternario.

  • Código original:
    Math.max(x, y);
    
  • Código de golf:
    a < b ? b : a
    

9. Valor absoluto: una solución directa es usar la función absoluta presente en la biblioteca de matemáticas, pero requiere un poco más de caracteres. Podemos hacer lo mismo en unos pocos caracteres usando el operador ternario.

  • Código original:
    Math.abs(x)
    
  • Código de golf:
    x < 0 ? -x : x
    

10. Guardar bytes en bucles: podemos guardar bytes cambiando la variable en la última vez que se usó.

  • Código original:
    for(x = 0; x < 10; x++){
      alert(x);
    }
    
  • Código de golf:
    for(x = 0; x < 3 ; ){
      alert(x++);
    }
    

11. Cálculo de la suma o el producto de la array: tenemos la opción de realizar la tarea iterando el bucle, pero para guardar bytes podemos usar eval y operadores aritméticos como +, *, ^, etc.

  • Código de golf:
    eval(a.join('+'))
    eval(a.join`+`)
    
    eval(a.join('*'))
    eval(a.join`*`)
    

12. Comprueba si hay NaN: el método NaN en JavaScript se usa para determinar si el valor pasado es NaN (no es un número) y es del tipo «Número».

  • Código original:
    if(isNaN(x)){
        alert(x);
    }
    
  • Código de golf:
    if(x != x){
        alert(x);
    }
    

Nota: solo funciona si typeof(x) == “number”

13. bucles for vs while: Ambos bucles son eficientes en términos de complejidad de tiempo, pero cuando se trata de complejidad de espacio, muchas veces el bucle for supera al bucle while .

  • Código de golf:
    i = 10;
    while(i--);    # While loop
    
    for(i = 10; i--; );     # For loop
    

14. Combinación de bucles anidados en un solo bucle: podemos combinar el bucle anidado de 2 o más grados en un solo bucle.

  • Código original:
    for(i = 10; i--; )
        for(j = 5; j--; )
            do_something(i, j)
    
  • Código de golf:
    for(i = 50; i--; )
        do_something(0 | i/5, i%5)
    

15. Generación de números aleatorios entre el rango: Podemos usar la clase Fecha para generar el número aleatorio porque la Fecha se almacena internamente en JavaScript como el número de milisegundos desde una época.

  • Código de golf:
    new Date%1500   // Random integer 0 <= x < 1500
    

Publicación traducida automáticamente

Artículo escrito por chaudhary_19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *