Si te gusta esto, considera participar en:
El desafío mensual de golf de código Dyalog APL 2017
Haga 12 fragmentos / expresiones , en el mismo idioma, que den como resultado los números del 0 al 10 y 42 respectivamente, pero sin escribir ningún dato numérico literal, cadena o carácter.
Los datos incorporados , como PI()
y ALPHABET()
, están bien, y también lo están, por ejemplo, las constantes U, X, Y, Z y A de CJam, y las MEZCLAS, ACORDES, CENTROS, INTERRUPCIONES y LÍNEAS de Processing.
Cada fragmento debe poder sostenerse por sí mismo, es decir, puede que no sean interdependientes. Sin embargo, dentro de un solo fragmento, puede asignar una variable y usarla libremente, siempre que se refiera directamente a ella por nombre y no a través de una cadena que contenga su nombre.
Todos los fragmentos deben ser válidos en la computadora del remitente en el momento del envío (según lo informado por SE), pero no pueden depender de condiciones locales inusuales como el número de archivos en un directorio, la fecha u hora exacta o la entrada específica del usuario .
Ejemplos de fragmentos válidos
3: INT(LOG10(YEAR(TODAY())))
porque sigue siendo cierto en el futuro previsible
4: CUBICROOT(LEN(CHARACTERSET()))
porque un juego de caracteres de 256 letras es muy común
8: SQRT(SYSTEMTYPE())
porque los sistemas de 64 bits son muy comunes
Ejemplos de fragmentos inválidos
5: LEN(USERNAME())
porque la mayoría de las personas no usan "Admin" como inicio de sesión :-)
9: LOG10(SYSTEMMEMORY())
porque solo funciona en sistemas con exactamente 1 GB de memoria
42: CODE("*")
porque contiene una cadena / carácter literal
El resultado de cada fragmento debe dar como resultado un número real (valor, int, flotante, etc.) que se pueda usar para cálculos adicionales utilizando el mismo idioma que el fragmento, es decir, no una cadena de texto que represente ese número.
Solo se permiten idiomas basados en caracteres.
La puntuación es el recuento total de bytes de los 12 fragmentos combinados. Las nuevas líneas que separan los fragmentos no se cuentan.
Tenga en cuenta que las reglas anteriores pueden evitar que algunos idiomas participen, incluso si están completos en Turing.
Preguntas más frecuentes
P ¿Pueden los programas aceptar alguna entrada?
A Sí, pero puede que no solo solicite información e ingrese el número relevante.
P ¿Están permitidos los dígitos físicos (sin datos)?
Un sí, por ejemplo LOG10()
.
P ¿Los símbolos en Ruby cuentan como literales?
Un sí.
P ¿La puntuación incluye nuevas líneas entre cada fragmento?
Un no
P ¿TI-BASIC está "suficientemente basado en caracteres" para ser válido?
Un sí.
P ¿Cuentan falso y verdadero como literales numéricos?
A No, son aceptables.
P ¿Podemos usar un número literal para llamar a una función si esa es la única forma y el número no influye en la salida de la función?
A Sí, si esa es la forma normal de escribir código en su idioma.
P Mi lenguaje supone que hay un [algo] al comienzo de cada programa / expresión. ¿Debo incluirlo o mis fragmentos deberían funcionar si se colocan en el medio de un programa / expresión?
A Deberían funcionar en el medio de un programa / expresión.
P ¿Qué pasa con los literales regex?
Una prohibido, excepto para los idiomas que sólo hacen expresiones regulares.
P ¿Es aceptable una pieza de código que pueda imprimir todos los números especificados?
R No, tienen que estar separados y ser independientes entre sí.
P ¿ Puedo suponer una placa repetitiva como int main() {}...
o equivalente?
Un sí.
P ¿Qué tipos de datos de salida están permitidos?
A Cualquier tipo de datos numéricos, como int, float, etc.
P ¿Necesito imprimir el resultado de cada fragmento?
R No, hacer que el resultado esté disponible para su uso posterior es suficiente.
P ¿Se permiten variables preestablecidas?
A Sí, y se restablecen (si se cambia) para cada fragmento.
P ¿Se consideran π y e literales numéricos?
A No, puedes usarlos.
P ¿ Puedo devolver 4 y 2 en celdas diferentes para 42?
A No, deben estar conectados como un número.
Q Bytes o caracteres?
A Bytes, pero puede elegir cualquier página de códigos deseada.
P ¿Se pueden utilizar funciones constantes y variables preestablecidas como J's 9:
, Actually 9
y Pretzel's 9
?
A Sí, si el vocabulario es finito (19 para J, 10 para Actually y Pretzel).