Couch 2048: Wie viel mehr bis 2048?

20

Ich habe gerade ein Spiel namens Couch 2048 ausprobiert .
(Hinweis: Um diese Frage besser zu verstehen, sollten Sie einen Blick darauf werfen.)
Da es für mich nicht sehr aufregend war, habe ich mich gefragt , wie viel mehr bis 2048 !?
Das hat mich dazu inspiriert, eine Herausforderung zu posten, weil es nicht so einfach ist, dies zu berechnen, wie ich dachte.

Ihr Ziel:
Ausgehend von einer Liste von Bällen auf dem Sofa müssen Sie ausgeben, wie viele Bälle mit einem Wert von 2 vom Himmel fallen müssen, damit man das Spiel gewinnen kann (durch Erreichen des Balls 2048).

  • Angenommen, die Eingabe ist gültig.
  • Angenommen, der Spieler lässt keine Bälle fallen.
  • Angenommen, die Kugeln, die vom Himmel fallen, haben immer einen Wert von 2, wie ich schon sagte.
  • Gültige Ausgabebeispiele: 3, "4", [5], ["6"]

Bearbeiten:
Ich sollte etwas klarstellen:
- Sie müssen die kleinste Menge von 2s drucken, die benötigt wird.

Testfälle:
[2048] -> 0 Sie haben bereits gewonnen.
[1024,1024] -> 0Sie brauchen keine Bälle mehr, um zu gewinnen.
[1024,512,256,128,64,32,16,8,4,2] -> 1Ein Ball ist erforderlich , um die Kette zu aktivieren.
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Anmerkungen :
Ich bin kein Muttersprachler. Sagen Sie mir, ob Sie einen Tippfehler oder einen nicht grammatikalischen Text entdeckt haben.
Wenn etwas unklar ist, fragen Sie in Kommentaren.


quelle
warum [4,16,64] -> 22?
14.
3
Willkommen bei PPCG. Es sieht so aus, als ob diese Herausforderung darin besteht, alle Elemente im Array zu addieren, vom letzten Testfall zu subtrahieren 2048und durch diesen zu dividieren. 2Wenn dies nicht der Fall ist, erläutern Sie anhand dieses Beispiels, warum die Ausgabe nicht erfolgt nicht 982.
Shaggy
1
@ Shaggy thx für das Bemerken eines dummen Fehlers
4
Woah, ich hätte nicht gedacht, dass meine erste Herausforderung in der ersten Stunde 7 Antworten und 2 positive Stimmen haben wird! Und ich erreichte ~ 28 Leute!
2
Hey Downvoter, erkläre deinen Standpunkt! Die Herausforderung muss sich verbessern!

Antworten:

11

Java 8, 17 Bytes

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

Port von @LuisFelipeDeJesusMunoz 'JavaScript-Antwort .

Probieren Sie es online aus.

Erläuterung:

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
quelle
11
Dieses Gefühl, wenn Java sowohl Python (weil Lambda-Syntax) als auch Javascript (weil Summe)
schlägt
8

Brain-Flak , 72 Bytes

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

Probieren Sie es online!

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

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024
Riley
quelle
1
Vielen Dank! Ich bin daran interessiert, Brain-Flak zu lernen, und Ihre Erklärung war hilfreich.
Galen Ivanov
2

Katholikon , 5 Bytes

-`L̇½Ṗ

Erläuterung:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]
Okx
quelle
1
Ist das eine neue Golfsprache, die ich rieche? :)
ETHproductions
1
+1 für die neue Sprache. Ein weiteres zu lernen </ sigh>
ElPedro
2

TI-Basic, 8 Bytes

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

Gelee , 7 6 Bytes

HSạ⁽¡ç

Probieren Sie es online!

Erläuterung:

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

-1 Byte unter Verwendung einer Basis-250-Zahl

Genosse SparklePony
quelle
1

Perl -aE, 27 Bytes

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

Dies liest eine Zeile mit Zahlen (Leerzeichen getrennt) STDINund schreibt die Antwort an STDOUT.

Was es tut, ist, alle Zahlen von der Eingabe von 2048 zu subtrahieren und den Rest durch 2 zu teilen. Der -aSchalter setzt das in das Array @F(eine Zahl pro Element). Wenn wir ein Array in einen String interpolieren (was wir hier tun), setzt Perl den Wert von $"zwischen die Elemente. Die wenig verwendete Variable $:ist default \n-. und da der Leerraum zwischen den Tokens ignoriert wird, subtrahiert das Ergebnis alle Zahlen von 2048. Das evalführt die Berechnung durch.


quelle
0

Perl 6 , 12 Bytes

1024-*.sum/2

Probieren Sie es online!

Anonym Welches Lambda auch immer, das eine Liste aufnimmt und eine Zahl zurückgibt.

Scherzen
quelle
0

AWK, 26 Bytes

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

Eingabenummern werden durch Zeilenumbrüche getrennt (dh eine pro Zeile)

iBug
quelle
0

Neim, 6 Bytes

Ziemlich neu für Neim, aber es hat funktioniert

𝐬ᚺςᚫᛦ𝕤

Erläuterung:

  𝐬         : 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

Probieren Sie es online!

LiefdeWen
quelle
0

Java, 30 Bytes

2048-IntStream.of(a).sum()/2;
Isaac
quelle
0

F #, 24 Bytes

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

1024 minus die Summe geteilt durch 2.

Verkörperung der Ignoranz
quelle