Kanapa 2048: Ile jeszcze do 2048 roku?

20

Właśnie wypróbowałem grę o nazwie Couch 2048 .
(Uwaga: powinieneś rzucić okiem, aby lepiej zrozumieć to pytanie.)
Ponieważ nie było to dla mnie bardzo ekscytujące, zadawałem sobie pytanie „Ile jeszcze do 2048 roku !?”
To zainspirowało mnie do opublikowania wyzwania, ponieważ obliczenie tego nie jest tak łatwe, jak myślałem.

Twój cel:
biorąc pod uwagę listę piłek na kanapie, musisz wypisać, ile piłek o wartości 2 musi spaść z nieba, aby wygrać (osiągając piłkę 2048).

  • Załóż, że dane wejściowe są prawidłowe.
  • Załóż, że gracz nie upuści żadnych piłek.
  • Załóżmy, że kule, które spadają z nieba, mają zawsze wartość 2, jak już powiedziałem.
  • Prawidłowe przykłady wyjściowe: 3, „4”, [5], [„6”]

Edycja:
Powinienem coś wyjaśnić:
- Musisz wydrukować najmniejszą potrzebną liczbę 2 sekund.

Przypadki testowe:
[2048] -> 0 już wygrałeś
[1024,1024] -> 0Nie potrzebujesz więcej piłek, aby wygrać
[1024,512,256,128,64,32,16,8,4,2] -> 1Jedna piłka wymagana do „aktywacji łańcucha”
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Uwagi :
Nie jestem native speakerem - Powiedz mi, czy zauważyłeś literówkę lub jakiś tekst nie gramatyczny.
Jeśli coś jest niejasne, zapytaj w komentarzach.


źródło
dlaczego [4,16,64] -> 22?
l4m2
3
Witamy w PPCG. Wygląda na to, że wyzwanie polega na: dodaniu wszystkich elementów w tablicy, odjęciu 2048i podzieleniu przez 2- jeśli tak, możesz chcieć dokładnie sprawdzić ostatni przypadek testowy - jeśli nie, użyj go jako przykładu, aby wyjaśnić, dlaczego dane wyjściowe nie są „t 982.
Shaggy
1
@Shaggy thx za zauważenie głupiej pomyłki
4
Woah, nie sądziłem, że moje pierwsze wyzwanie będzie miało 7 odpowiedzi i 2 głosy poparcia w pierwszej godzinie! I dotarłem do ~ 28 osób!
2
Hej, downvoter: wyjaśnij swój punkt widzenia! Konieczne jest poprawienie wyzwania!

Odpowiedzi:

11

Java 8, 17 bajtów

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

Port odpowiedzi JavaScript @LuisFelipeDeJesusMunoz .

Wypróbuj online.

Wyjaśnienie:

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
źródło
11
To uczucie, gdy Java pokonuje zarówno python (ponieważ składnia lambda), jak i javascript (ponieważ suma)
Quintec,
8

Brain-Flak , 72 bajty

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

Wypróbuj online!

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

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024
Riley
źródło
1
Dziękuję Ci! Jestem zainteresowany nauką Brain-Flak i twoje wyjaśnienie było przydatne.
Galen Iwanow
2

Catholicon , 5 bajtów

-`L̇½Ṗ

Wyjaśnienie:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]
Okx
źródło
1
Czy to nowy język golfowy, który wyczuwam? :)
ETHproductions
1
+1 dla nowego języka. Kolejny do nauczenia </sigh>
ElPedro,
2

TI-Basic, 8 bajtów

4^5-.5sum(Ans
Timtech
źródło
1

JavaScript, 28 bajtów

a=>a.map(n=>x-=n/2,x=1024)|x

Wypróbuj online

Kudłaty
źródło
1

Galaretka , 7 6 bajtów

HSạ⁽¡ç

Wypróbuj online!

Wyjaśnienie:

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

-1 bajt przy użyciu liczby podstawowej-250

Towarzyszu SparklePony
źródło
1

perl -aE, 27 bajtów

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

Odczytuje linię z liczbami (oddzielonymi spacjami) STDINi zapisuje odpowiedź na STDOUT.

Odejmuje wszystkie liczby od danych wejściowych od 2048, a resztę dzieli przez 2. -aPrzełącznik umieszcza tablicę @F(jedna liczba na element). Jeśli interpolujemy tablicę w łańcuch (co tutaj robimy), perl umieszcza wartość $"między elementami. Mała używana zmienna $:jest domyślna \n-; a ponieważ białe znaki między tokenami są ignorowane, wynik odejmuje wszystkie liczby od 2048. evalObliczenia są wykonywane.


źródło
0

Perl 6 , 12 bajtów

1024-*.sum/2

Wypróbuj online!

Anonimowy Cokolwiek lambda, które pobiera listę i zwraca liczbę.

Jo King
źródło
0

AWK, 26 bajtów

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

Numery wejściowe są oddzielone znakami nowej linii (tj. Jedna na linię)

iBug
źródło
0

Neim, 6 bajtów

Całkiem nowy w Neimie, ale działał

𝐬ᚺςᚫᛦ𝕤

Wyjaśnienie:

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

Wypróbuj online!

LiefdeWen
źródło
0

JAVA, 30 bajtów

2048-IntStream.of(a).sum()/2;
isaace
źródło
0

F #, 24 bajty

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

1024 minus suma podzielona przez 2.

Wcielenie ignorancji
źródło