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.


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:



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

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]

1
Ist das eine neue Golfsprache, die ich rieche? :)
ETHproductions

1
+1 für die neue Sprache. Ein weiteres zu lernen </ sigh>
ElPedro





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.







0

AWK, 26 Bytes

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

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


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!


0

Java, 30 Bytes

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




Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.