10 9 8 7 6 5 4 3 2 1… Imprimir 2016


12

Como spin-off de mi desafío en Puzzling , tu objetivo es salir 2016.

Reglas:

  • Debe incluir los números 10 9 8 7 6 5 4 3 2 1en ese orden. Se pueden usar como enteros individuales o concatenados juntos (como 1098), pero 10no se pueden separar en 1y 0- no puede haber ningún carácter entre los dígitos. Tenga en cuenta que, en algunos idiomas, 10puede no representar el literal entero 10, lo cual es aceptable.
  • Su código no debe contener otros números o variables o constantes numéricas predefinidas (por lo tanto, Ten Pyth no está permitido, ya que es una constante numérica).
  • Debes calcular 2016 usando números. Simplemente 2016no se permite la salida sin realizar ninguna operación en los números requeridos (por ejemplo, decodificando una cadena codificada que consta de solo caracteres alfabéticos). La salida 2016en piezas (como 20, entonces 16) tampoco está permitida; debe tener una única salida que consista en el valor numérico 2016.
  • La respuesta válida con la menor cantidad de bytes gana.

3
@nicael Estoy bastante seguro de que se ha resuelto el rompecabezas. Hemos tenido varios de estos desafíos de "operadores de inserción para resolver una ecuación", pero son excepcionalmente difíciles de buscar.
Martin Ender

1
La revisión anterior (2) fue más interesante en realidad. Lo nuevo es solo imprimir la cadena, el cálculo ya se hizo en su pregunta desconcertante ...
nicael

1
Sólo unas pocas preguntas basadas en lo que puedo ver en la pregunta actual: 1) ¿Podemos calcular 20y 16y les imprimen una tras otra o lo hace el número necesidad calculó que 2016 antes de imprimir? 2) ¿Se permiten funciones? 3) ¿Se permite la concatenación de dígitos? por ejemplo 1098(supongo que sí por los comentarios anteriores, pero solo para confirmar) 4) ¿"Calcular 2016 usando enteros" significa que nunca podemos tener flotantes en ningún lugar en un paso intermedio? por ejemplo, ¿puedo raíz cuadrada un número y redondear hacia abajo?
Sp3000

1
5) ¿Qué sucede si tengo un lenguaje donde "10" no se trata como el número diez, sino uno seguido de un cero y no hay forma de evitarlo? ¿Tal lenguaje está descalificado? (lenguaje de ejemplo: Befunge) 6) ¿Podemos usar una variable numérica predefinida en lugar de 10, por ejemplo T987654321?
Sp3000

@ Sp3000 1 No. 2 No. 3 Sí. 4 flotadores están bien siempre y cuando no rompa ninguna otra regla. Se 10debe incluir 5, por lo que deberá manejarlo de alguna manera. 6 Mientras 10aparezca antes T.
rybo111

Respuestas:


22

Jalea , 17 15 14 bytes

109876:54+3_21

Pruébalo en línea!

Cómo funciona

109876:54+3_21

109876            Initialize the left argument as 109876.
      :54         Perform integer division by 54, yielding 2034.
         +3       Add 3, yielding 2037.
           _21    Subtract 21, yielding 2016.

8

Hexagonía, 61 bytes.

No voy a ganar, pero solo quería hacer un desafío en Hexagony.

Esto usa un método diferente que otras respuestas (mucho peor). Toma algunos factores de 2016 (2,3,6,7,8) y los multiplica todos juntos.

Minified:

\109.8/7}_=\"6<}{>...$_5_4/*!@...../}3.."2\/="*=}<*...$1>"*"/

No minificado:

    \ 1 0 9 .
   8 / 7 } _ =
  \ " 6 < } { >
 . . . $ _ 5 _ 4
/ * ! @ . . . . .
 / } 3 . . " 2 \
  / = " * = } <
   * . . . $ 1
    > " * " /

Explicación próximamente;


55
" Explicación próximamente; " Creo que tenemos una comprensión diferente de 'pronto'. ; P
Kevin Cruijssen

1
@KevinCruijssen Vaya, me olvidé por completo de esto. ... Y ahora ya no entiendo cómo funciona. Excelente.
Azul

5

Pyth, 16 bytes

+/109876 54-3 21

Hace división entera, luego agrega (3-21).

Pruébalo aquí .


4

TI-BASIC, 17 15 bytes

int(109876/54-√(321

Esto utiliza el método de @ nicael.

17 bytes:

10+9*8-7+654*3-21

Esta solución de Puzzling se puede traducir directamente a TI-BASIC.


1
También válido en Japt, y probablemente algunos otros.
ETHproductions

1
También funciona en PowerShell y Mathematica (Wolfram), y me imagino muchos, muchos otros. Y probablemente funciona en docenas más con modificaciones triviales.
AdmBorkBork

Una encantadora solución políglota
TanMath

Si quieres tomar los otros idiomas, eliminaré el wiki de mi comunidad.
Addison Crump

3

Japt, 17 16 bytes

Â(109876/54-321q

Odio esto 17. Probablemente encuentre otra solución. YAYZ

Explicación:

  • 321q es una raíz cuadrada de 321.
  • ~~ Pisos al numero.

Pruébalo en línea!


Â== ~~:-)
ETHproductions

109876/54-321¬fes 15 :-D
ETHproductions

@Eth pero f no funciona, ¿no?
nicael

Debería ser reparado. Pero el intérprete está fuera de servicio en este momento, lo recuperaré momentáneamente.
ETHproductions

109876/54-321q)fahora trabaja. La otra sugerencia no.
ETHproductions


3

bc, 14

109876/54+3-21

Nada emocionante aquí: toma prestado de otras respuestas.


1
El equivalente de dc tiene un 109876 54/3+21-ppuntaje de 16, pero no garantiza una respuesta propia.
Toby Speight

2

Haskell, 31 bytes

[10,9*8*7+const 6 5..]!!4+3*2*1

No el más corto, 10+9*8-7+654*3-21como se ve en otras respuestas, también funciona en Haskell, pero es algo diferente.

Esto crea una lista que comienza con 10y 9*8*7+6 = 510, por lo que el desplazamiento es 500para los siguientes elementos. Toda la lista es [10,510,1010,1510,2010,2510 ...]. Elegimos el 4thelemento (índice basado en 0), es decir, 2010y sumamos 3*2*1 = 6. Voilà.

Yo uso const 6 5 = 6para deshacerse de lo 5que no es necesario.


2

Python 2, 20 bytes

print 109876/54+3-21

De nuevo, eso mismo aburrido 2016.(740). Hace uso del hecho de que si no tiene un número decimal en su expresión, devuelve un número entero.


1

> <> (pez), 18 bytes

10987**r65r4*n;321

explicación:

multiplica 9 8 y 7 para obtener 504, invierte la pila y la invierte nuevamente justo antes de agregar el 4, luego multiplica 504 y 4 para obtener 2016. Luego imprime el número y finaliza el programa antes de los últimos 3 números (podría hacer después también sin diferencia, si eso importa en cuanto a reglas)


1

Matemáticas ++ , 17 bytes

_(109876/54)+3-21

En realidad, esto imprime 2016.0. Pero realmente no hay forma de imprimir la cadena exacta 2016en este idioma.

La solución TI-BASIC de 17 bytes también funcionaría aquí.


1

Políglota, 17 bytes

10+9*8-7+654*3-21

Este código, utilizado por primera vez en la respuesta TI-BASIC de Thomas Kwa , también funciona en:

  • AppleScript (programa completo)
  • bc (programa completo)
  • Math ++ (expresión o programa completo)
  • Mathematica (función, por lo tanto no válida)
  • Powershell (programa completo)
  • Japt (programa completo)
  • JavaScript (entrada de consola, por lo tanto no es válida) Necesita una segunda verificación
  • Perl 5 (función, por lo tanto no válida). Necesita una segunda verificación
  • Haskell (función, por lo tanto no válida)
  • Python REPL (expresión, por lo que se necesita el entorno REPL para obtener el resultado)

1
¿Y cuál es el punto?
nicael

@nicael Estoy --- voy --- estoy planeando (a menos que Thomas Kwa desee agregar las otras respuestas a las suyas también) para agregar todas las respuestas que involucren esta respuesta (excepto TI-BASIC) que pueda encontrar. Marcado como Comunidad para que otros puedan contribuir.
Addison Crump

1
¿Por qué las observaciones de "función, por lo tanto no válidas"? Las funciones están permitidas por defecto.
nimi

55
No conozco los otros idiomas, pero 10+9*8-7+654*3-21no es una función de JavaScript ni de Perl.
Dennis

1
@ Sp3000: Oh, estos cambios de reglas invalidantes ...
nimi


1

Java 7, 31 bytes

int c(){return 109876/54+3-21;}

Aburrido puerto de otras respuestas, de las cuales creo que la respuesta de @Dennis 'Jelly fue la primera.


1

PHP, 27 bytes

<?=~~(109876/54+3-21);

(22 bytes) era demasiado aburrido,

así que usé del 10 al 9 como números separados:

<?=10*(9-8+7-6),5+4-3+2<<1;

Otras soluciones, principalmente con pequeños trucos:

30: <?=10**(9+8-7-6)/5+4*3+(2<<1);
30: <?=10*trim(9*8,7),6+5+4+3-2*1;
29: <?=10*trim(9*8,76),5*4-3-2+1;
31: <?=10*trim(9*8,765),4+(3*2<<1);
31: <?=10*trim(9*8,765),4*3+(2<<1);
32: <?=ceil(1098*76/54)+321+ord(~j);
33: <?=(10<<9)/876*543/M_PI*2-M_E&~1;

0

Vía Láctea 1.6.5 , 28 25 bytes

10+9*(8)7;^*6*5/4*3/2*A!1

Explicación

10+9*                      ` perform 10*9 (leaves 90 at TOS)
     (8)7;^*               ` get rid of 8 and multiply the TOS by 7
            6*5/4*3/2*A    ` perform TOS*6/5*4/3*2 (leaves 2016 at TOS)
                       !   ` output the TOS
                        1  ` push 1 to the stack




0

C 37 bytes

main(){printf("%d",109876/54+3-21);}

El mismo tema que muchos presentes.



0

JavaScript (ES6), 21 bytes

f=

_=>~~(109876/54+3-21)

console.log(f())

Si la "cuenta regresiva" fue a 0, podría hacerse en 19 bytes.

f=
_=>109876/54+3-21|0
console.log(f())

Y, dado que ahora es 2017, eso también se puede hacer en 21 bytes:

f=
_=>-~(109876/54+3-21)
console.log(f());

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.