Sofá 2048: ¿Cuánto más hasta 2048?

20

Acabo de probar un juego llamado Couch 2048 .
(Nota: Debería echar un vistazo para comprender mejor esta pregunta).
Dado que no fue muy emocionante para mí, me he estado preguntando '¿Cuánto más hasta 2048?'
Eso me inspiró a publicar un desafío, porque calcular esto no es tan fácil como pensaba.

Su objetivo:
Dada una lista de bolas en el sofá, debe extraer cuántas bolas con un valor de 2 deben caer del cielo para que uno pueda ganar el juego (alcanzando la bola 2048).

  • Suponga que la entrada es válida.
  • Suponga que el jugador no dejará caer ninguna bola.
  • Supongamos que las bolas que caen del cielo siempre tienen un valor de 2, como he dicho.
  • Ejemplos de salida válidos: 3, "4", [5], ["6"]

Editar:
debo aclarar algo:
- Tienes que imprimir la menor cantidad de 2s necesaria.

Casos de prueba:
[2048] -> 0 ya has ganado
[1024,1024] -> 0No necesitas más bolas para ganar
[1024,512,256,128,64,32,16,8,4,2] -> 1Se necesita una bola para 'activar la cadena'
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Notas :
No soy un hablante nativo: dígame si vio un error tipográfico o algún texto no gramatical.
Si algo no está claro, pregunte en los comentarios.


fuente
¿Por qué [4,16,64] -> 22?
l4m2
3
Bienvenido a PPCG. Parece que este desafío es: agregar todos los elementos en la matriz, restar 2048y dividir por 2- si es así, es posible que desee verificar dos veces el último caso de prueba; si no, utilícelo como un ejemplo para explicar por qué la salida no está 't 982.
Shaggy
1
@Shaggy thx por notar un error tonto
44
¡Woah, no pensé que mi primer desafío tendría 7 respuestas y 2 votos a favor en la primera hora! ¡Y llegué a ~ 28 personas!
2
Hola, votante: ¡explica tu punto de vista! ¡Es necesario que el desafío mejore!

Respuestas:

11

Java 8, 17 bytes

s->1024-s.sum()/2

Puerto de @LuisFelipeDeJesusMunoz 'Respuesta de JavaScript .

Pruébalo en línea.

Explicación:

s->           // Method with IntStream parameter and int return-type
  1024-       //  Return 1024, minus:
   s.sum()    //   The sum of the input-IntStream
          /2  //   Divided by 2
Kevin Cruijssen
fuente
11
Esa sensación cuando Java está superando a python (porque la sintaxis lambda) y javascript (porque suma)
Quintec
8

Brain-Flak , 72 bytes

({{}})({<({}[()()])>()}{})([{}]((((((((()()()()){}){}){}){}){}){}){}){})

Pruébalo en línea!

({{}})                     # Sum entire stack
      (                  ) # Push:
       {<          >()}{}  #   The number of times you can...
         ({}[()()])        #   Subtract 2 before reaching 0

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024
Riley
fuente
1
¡Gracias! Estoy interesado en aprender Brain-Flak y su explicación fue útil.
Galen Ivanov el
2

Catholicon , 5 bytes

-`L̇½Ṗ

Explicación:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]
Okx
fuente
1
¿Es ese un nuevo lenguaje de golf que huelo? :)
ETHproductions
1
+1 para el nuevo idioma. Otro para aprender </
sigh
2

TI-Basic, 8 bytes

4^5-.5sum(Ans
Timtech
fuente
1

Gelatina , 7 6 bytes

HSạ⁽¡ç

Pruébalo en línea!

Explicación:

HSạ⁽¡ç    Example input: [4,16,64]
H         Halve input. [2, 8, 32]
 S        Sum. 42
   ⁽¡ç    Number 1024.
  ạ       Difference. 982

-1 byte usando un número base-250

Camarada SparklePony
fuente
1

perl -aE, 27 bytes

$"=$:;say eval"(2048-@F)/2"

Esto lee una línea con números (espacios en blanco separados) STDINy escribe la respuesta STDOUT.

Lo que hace es restar todos los números de la entrada de 2048, y divide el resto por 2. El -ainterruptor coloca el en la matriz @F(un número por elemento). Si interpolamos una matriz en una cadena (que es lo que estamos haciendo aquí), perl coloca el valor de $"entre los elementos. La variable poco utilizada $:es predeterminada \n-; y dado que se ignora el espacio en blanco entre los tokens, el resultado es restar todos los números de 2048. Luego evalrealiza el cálculo.


fuente
0

AWK, 26 bytes

{s+=$1}END{print 1024-s/2}

Los números de entrada están separados por líneas nuevas (es decir, una por línea)

iBug
fuente
0

Neim, 6 bytes

Bastante nuevo para Neim pero lo tengo funcionando

𝐬ᚺςᚫᛦ𝕤

Explicación:

  𝐬         : Sum input
   ᚺ        : Divide by 2 (stack now [input summed and divided by 2])
    ς       : Variable set to 16 pushed to stack
     ᚫ      : Multiply by 2
      ᛦ     : Square (stack now [input summed and divided by 2, 1024])
       𝕤    : Subtract then absolute

Pruébalo en línea!

LiefdeWen
fuente
0

JAVA, 30 bytes

2048-IntStream.of(a).sum()/2;
isaace
fuente
0

F #, 24 bytes

fun f->1024-List.sum f/2

1024 menos la suma dividida por 2.

Encarnación de la ignorancia
fuente