stringtranslate.com

Código de golf

Code golf es un tipo de competición de programación informática recreativa en la que los participantes se esfuerzan por lograr el código fuente más corto posible que resuelva un determinado problema. [1] [2] Los desafíos y torneos de Code golf también pueden denominarse con el lenguaje de programación utilizado (por ejemplo, Perl golf ).

Etimología

El término "golf codificado" se deriva de la similitud de su objetivo con el del golf convencional , donde los participantes buscan lograr la puntuación más baja posible, en lugar de la más alta, como es el estándar en la mayoría de los sistemas de puntuación de deportes y juegos. Mientras que los jugadores de golf convencionales intentan minimizar la cantidad de golpes de palo necesarios para completar el campo, los golfistas codificados se esfuerzan por reducir la cantidad de caracteres necesarios para escribir el programa.

Historia

La longitud del programa más corto posible que produce una salida dada (en cualquier lenguaje de programación fijo) se conoce como la complejidad de Kolmogorov de la salida, y su estudio matemático se remonta al trabajo de Andrey Kolmogorov en 1963. Sin embargo, el golf de código puede ser más general que esto, ya que a menudo especifica una transformación de entrada-salida general que se debe realizar en lugar de solicitar una única salida sin entrada.

Aunque el término "golf de código" aparentemente se utilizó por primera vez en 1999 con Perl [ 3] y luego se popularizó mediante el uso de Perl para escribir un programa que realizaba cifrado RSA , [4] se sabe que una competencia informal similar fue popular entre los primeros piratas informáticos de APL . La naturaleza desafiante de optimizar agresivamente el tamaño del programa ha sido reconocida desde hace mucho tiempo; por ejemplo, un manual de codificación de 1962 para la computadora GIER de Regnecentralen señala que "es un deporte que requiere mucho tiempo codificar con el menor número posible de instrucciones" y recomienda no hacerlo para la programación práctica. [5] Hoy en día, el término ha crecido para cubrir una amplia variedad de lenguajes, lo que incluso ha desencadenado la creación de lenguajes dedicados al golf.

Idiomas dedicados al golf

Se han creado varios lenguajes nuevos específicamente pensados ​​para el golf de código. Algunos ejemplos son GolfScript, Flogscript, Stuck y Vyxal, que son lenguajes Turing-completos que proporcionan estructuras para expresar ideas de forma concisa en código. Debido a que los lenguajes de golf compiten por una brevedad extrema, su diseño sacrifica la legibilidad, que es importante para los entornos de producción prácticos, y por lo tanto suelen ser esotéricos . Sin embargo, a veces un lenguaje está diseñado para un propósito práctico pero resulta ser adecuado para el golf de código.

Un ejemplo de código GolfScript para imprimir 1000 dígitos de pi : [6]

;''6666,-2%{2+.2/@*\/10.3??2*+}*`1000<~\;

Los sitios web de golf con código incluyen lenguajes de golf novedosos creados por los usuarios para ganar desafíos de golf con código. Otros lenguajes populares son 05AB1E, Husk, Pyth, CJam y Jelly.

Tipos de código de golf

Algunas preguntas de Code Golf, como las que se plantean en sitios de programación general, pueden no requerir implementación en un lenguaje de programación específico . Sin embargo, esto limita el estilo de problemas que los diseñadores de problemas pueden plantear (por ejemplo, al limitar el uso de ciertas características del lenguaje). Además, la creación de tales preguntas "abiertas" ha dado como resultado el diseño de dialectos de lenguaje de programación específicos de Code Golf, como REBMU (un dialecto de REBOL ). Tanto las competencias en línea como las en vivo también pueden incluir límites de tiempo.

Véase también

Referencias

  1. ^ Code Golf Stack Exchange. Acerca de code-golf. Consultado el 21 de diciembre de 2021.
  2. ^ "Introducción a Code-golf | ASSIST Software Romania" . Consultado el 23 de marzo de 2023 .
  3. ^ Greg Bacon (28 de mayo de 1999). "Re: Incrementar un valor en una porción". Grupo de noticias : comp.lang.perl.misc. Usenet:  [email protected] . Consultado el 12 de julio de 2011 .
  4. ^ Volver, Adam. "RSA en 5 líneas de Perl" . Consultado el 10 de enero de 2011 .
  5. ^ Andersen, cristiano; Abuela, cristiana (1962). Lærebog i Kodning para GIER (PDF) . vol. 1 (3 ed.). Copenhague: Regnecentralen. pag. 104 . Consultado el 16 de mayo de 2020 .
  6. ^ "Ejemplos de GolfScript" . Consultado el 23 de marzo de 2023 .

Enlaces externos