Si crees que esto podría ser divertido, pero demasiado trabajo, considera participar en este desafío mucho más pequeño.
Un poco de diversión (¡y posiblemente frustración!) Para 2016 ... el "rompecabezas del año" de Dyalog . ¡Disfrutar!
El objetivo
Busque expresiones Dyalog APL ( descarga ) (se permiten otros idiomas, consulte Elegibilidad a continuación) que incluyen exactamente los dígitos 2 0 1 6 en ese orden para igualar los números del 0 al 100. Por ejemplo:
20=16
×2016
2⌊016
2+0+1*6
...
El objetivo es utilizar la menor cantidad de caracteres posible en cada expresión (el número mínimo de caracteres para una expresión es 5: los cuatro dígitos 2 0 1 6 y una única función / operador primitivo).
Las normas
- Cada expresión debe contener los dígitos 2 0 1 6 (en ese orden) y ningún otro dígito. Las constantes y variables preestablecidas tampoco están permitidas.
- Además de los cuatro dígitos 2 0 1 6, solo se pueden usar símbolos y nombres incorporados, paréntesis / llaves, espacios, signos menos altos y puntos decimales. Las expresiones resultantes deben ser deterministas (es decir, dar el mismo resultado en evaluaciones repetidas). Para los que no son APL, también se permiten funciones / operadores con un nombre; Las mismas reglas que aquí .
- Asuma todas las configuraciones predeterminadas para su idioma. Para Dyalog APL, esto significa
⎕ML
y⎕IO
son ambos 1 y⎕PP
es 10. - Cada entrada que comprenda expresiones correctas para todos los números del 0 al 100 inclusive se clasificará de acuerdo con el número de caracteres utilizados por esas expresiones excluyendo espacios redundantes (mínimo 505 para las 101 expresiones).
Elegibilidad
Cualquiera puede entrar. Puede responder en cualquier idioma, pero solo se considerarán las respuestas APL para aceptar. Si usa otro idioma que no sea APL, puede usar fragmentos, programas, funciones, etc. como alternativas a las expresiones, y puede imprimir, dejar el número en una ubicación de memoria accesible o devolver el resultado, siempre que su código sea directo evalúa el número deseado como cualquier tipo de datos numéricos estándar para su idioma.
Fecha de cierre
30 de noviembre de 2016.
Premios
- Que su respuesta sea aceptada
- ¡Sea inmortalizado en el Salón de la Fama 2016 de Dyalog!
Enviar su entrada
Después del 30 de noviembre de 2016, aceptaré la respuesta más breve y enviaré su respuesta, en su nombre, al Salón de la Fama de Dyalog 2016.
Preguntas más frecuentes
- ¿Está permitido
J
(por ejemplo, 37 =⌈⍟!20J16
)? - No: además de los cuatro dígitos 2 0 1 6, solo se pueden usar símbolos y nombres incorporados, paréntesis / llaves, espacios, signos negativos altos y puntos decimales.
- ¿Es aceptable la salida como una cadena?
- No: igual los números del 0 al 100.
- ¿Dígitos físicos o dígitos de datos?
- Dígitos de datos, según OP: las mismas reglas que aquí , donde contiene uno de los ejemplos
LOG10(
. - ¿Se
a+16+a←20
permite asignar variables y luego usarlas como parte de la expresión (por ejemplo, 56 = )? - Sí, pero no puede usar una asignación de una expresión en otra.
Tengo permiso explícito por escrito para publicar este desafío aquí del autor original de este desafío. Siéntase libre de verificar siguiendo el enlace provisto y contactando al autor. Le di al autor original del concurso el enlace a esta página en el momento en que lo publiqué, para que puedan verificar si presento la respuesta de alguien como mía.
⎕ML
y se⎕IO
supone que es1
)?Respuestas:
Jalea, 686 bytes
Escribí alrededor de 50 de estos, luego autogenere el resto agregando
Ḥ
(× 2) y‘’
(± 1) según sea necesario. ¡Los mejoraré más tarde!fuente
201ÆCo6
. Creo que no se puede utilizarṾ
(el cual fue implementado en febrero), pero20|16Ḥ‘Ḥ
y20|16‘ḤḤ’
son igualmente corto.Ḥ
a‘’
- 46, entre otros cuatro números, debería haber sido un carácter más corto. Lo he reemplazado por uno2016½Ċ‘
tan largo como el tuyo.Hexagonía , 888 bytes.
Bien, primero algunas reglas básicas para Hexagony, en caso de que alguien quiera superar esto:
2|016
para 22), pero parece más en el espíritu del desafío.Entonces aquí está la lista. Probé la mayoría de ellos, pero no todos (algunos son modificaciones triviales de otros), así que espero no haber cometido ningún error:
Me volví un poco flojo hacia el final, así que estoy seguro de que esto no es óptimo. Puede ser interesante (y posible) para la fuerza bruta de estos.
fuente
J,
1041... 838 bytes981961952860859Me volví un poco flojo hasta el final, pero debería estar más arreglado que menos.
No creo que nunca supere a Hexagony, ¡pero nunca se sabe!latiendo hexagonia! ¡Guardado 9 bytes gracias a Zgarb! ¡Y mucho más para Lynn!Destacados y notas
Usé muchos números primos en esto. De hecho, usé la función
p:
(el enésimo enésimo) 37 veces en esta cosa.90 se hizo con un tenedor. ¡Hurra! Es aproximado a esto:
Traducido como
¡54 usa un ripio moldeador!
Es equivalente a
fuente
!20-16
54:<.^20-16
55:>.^20-16
97:p:!20-16
+:p:-2-016
(4 bytes más corto)?2]01+6
, 8 puede ser2%~016
y 12 puede ser2*01]6
.JavaScript, 1021 bytes
Se corrigieron y guardaron dos bytes gracias a Charlie Wynn y ETHProductions .
fuente
2-~01+6
como 10 y-~!2016
como 1.JavaScript (ES7), 836 bytes
Todo debería funcionar en cualquier navegador, excepto 81, 88 y 97, que utilizan el nuevo
**
operador.Sobre todo todo aquí fue hecho a mano. He estado trabajando en una fuerza bruta para mejorar cualquier cosa que pueda mejorarse. Actualmente ha guardado 103 bytes en varios elementos.
Brute-forcer
No es el código más bonito, pero eso no parece importar en estas partes.
ADVERTENCIA: No ejecute a menos que esté preparado para que su navegador / motor se congele durante unos minutos. A nadie le gusta calcular 7 bucles anidados.
fuente
PowerShell v3 +,
15751499 bytesGolf 100% manual: no se inscribieron programas de fuerza bruta u otras ayudas
¡Siento que 1500 está quizás al alcance deSub-1500 logrado! Veamos qué tan bien puedo hacer para bajar esto. (Nota: esto solo se probó en v4, pero debería funcionar en v3 y v5 sin modificación. No funcionará en v2 o v1 ya que esas versiones no tenían operadores de desplazamiento bit a bit).
Los puntos clave están marcados con
##.hashes.##
el código anterior.# 11 es la primera asignación a variable
$a
. A diferencia de otros lenguajes, las variables no necesitan ser preinicializadas para el análisis, y solo durante la ejecución se resuelven las variables. Como($a=01)
está rodeado por parens, se evalúa primero y, por lo tanto, el segundo-$a
es equivalente a-1
. Esto se usa de manera bastante extensa de aquí en adelante, y es una de las cosas más importantes que mantiene el bytecount bajo.# 17 muestra el primer uso de
!
booleano no. En PowerShell, los tipos se emiten de forma bastante flexible, por lo que si se puede implicar, funcionará. Aquí, estamos usando el hecho de que!!20
es igual!$false
, es decir$true
, que se puede convertir implícitamente como[int]1
, lo que da como resultado17
. Esto se usa varias veces para obtener otro1
o para ir a una porción0
.# 22 Muestra el
0x
operador de conversión hexadecimal, aquí convirtiéndose0x16
en22
. Sin embargo, dado que0x16
es el único número que podemos obtener, su utilidad es limitada.# 23 tiene el
-bor
operador, para "binario o". Sin embargo, dado que tanto-bor
y-bxor
tienen menor prioridad que los operadores aritméticos simples, su uso requiere generalmente parens, lo que limita seriamente su utilidad. Este es el único que he encontrado donde es más corto usar el binario u operador (eliminé el-bxor
operador de 22).# 30 es la primera vez
-bnot
que se presenta el operador. Este es el operador "binario no", y funciona de manera similar a~
en (por ejemplo) JavaScript. Sin embargo, generalmente necesita parens, ya que la negación se mostrará como--bnot
y dará como resultado un error de análisis / sintaxis, y dado que son cinco caracteres en comparación con uno~
, se usa con moderación.# 39 es el primer uso de nuestros operadores de desplazamiento binario,
-shl
y-shr
. Estos son similares<<
o>>
en otros idiomas, pero son explícitamente diádicos, lo que significa que necesitamos un número en ambos lados para que funcionen, lo que limita su utilidad en este desafío. Además, su precedencia no se menciona explícitamente en la documentación, pero las pruebas muestran que son inferiores a la aritmética simple, lo que significa que los padres deben usarse libremente, por lo que no aparecen tanto como en las respuestas de otros idiomas.fuente
CJam,
792791 bytesMe volví un poco flojo cerca del final, muchos de ellos terminaron siendo incrementos y decrementos (¡101 es mucho!), Aunque no estoy seguro de si hay alguna otra forma para algunos de los números. Todavía hay mucho tiempo para jugar al golf si lo necesito.
Alrededor del # 40 hay algunas caras guiñadas;)
fuente
Mathematica,
2912250222822180 bytesPodría sin duda ser golfed más. Mayormente solo resuelve algunas ecuaciones de Frobenius separadas, lo que produce soluciones de longitud O ( n ). El resto fue generado por mi fuerza bruta.
fuente
c
a16
cuando el número es par y grande? Como para el 96, etc. ¿No está seguro de cómo funciona su solucionador de ecuaciones, pero el usoa=20
también debería ser útil para varios de estos?Dyalog APL (Esto es una broma, por favor no envíe), 25,957 bytes.
Sí, esta es una entrada de broma, necesitamos una solución APL, incluso si es completamente horrible. Funciona incrementando
≢⍬
(0
)n
veces. No quiero revelar ningún secreto de mi presentación real.Obviamente se podría jugar mucho más al golf.
fuente
JavaScript, 5244 caracteres
Probablemente podría jugar mucho más golf. Prueba en la consola de Chrome. Me rendí un poco a las 10.
fuente
Java 7, 1,083 bytes
Para el recuento de bytes solo he contado las expresiones entre paréntesis. Así que he excluido los
System.out.println
s yclass
. Incluidos los que serían 3.049 bytes .PD: No estoy completamente seguro de si el int-cast for
72
es válido ... Aunque de todos modos agrega 5 bytes ...Ungolfed y código de prueba:
Pruébalo aquí
fuente