Sofa 2048: Berapa lagi sampai 2048?

20

Saya baru saja mencoba permainan bernama Couch 2048 .
(Catatan: Anda harus memiliki pandangan untuk lebih memahami pertanyaan ini.)
Karena itu tidak terlalu menarik bagi saya, saya telah bertanya pada diri sendiri 'Berapa banyak lagi sampai 2048 !?'
Itu mengilhami saya untuk memposting tantangan, karena menghitung ini tidak semudah yang saya kira.

Tujuan Anda:
Diberikan daftar bola di sofa, Anda harus mengeluarkan berapa banyak bola dengan nilai 2 harus jatuh dari langit sehingga seseorang dapat memenangkan permainan (dengan mencapai bola 2048).

  • Anggap inputnya valid.
  • Asumsikan pemain tidak akan menjatuhkan bola apa pun.
  • Asumsikan bola yang jatuh dari langit selalu memiliki nilai 2, seperti yang saya katakan.
  • Contoh output yang valid: 3, "4", [5], ["6"]

Sunting:
Saya harus mengklarifikasi sesuatu:
- Anda harus mencetak jumlah terkecil yang diperlukan.

Uji kasus:
[2048] -> 0 Anda telah menang.
[1024,1024] -> 0Anda tidak perlu lagi bola untuk menang.
[1024,512,256,128,64,32,16,8,4,2] -> 1Satu bola diperlukan untuk 'mengaktifkan rantai'
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Catatan :
Saya bukan penutur asli - Beri tahu saya jika Anda melihat kesalahan ketik atau teks non-gramatikal.
Jika ada sesuatu yang tidak jelas, tanyakan dalam komentar.


sumber
mengapa [4,16,64] -> 22?
14m2
3
Selamat datang di PPCG. Sepertinya tantangan ini adalah: tambahkan semua elemen dalam array, kurangi dari 2048dan bagi dengan 2- jika demikian, Anda mungkin ingin memeriksa ulang kasus uji terakhir - jika tidak, silakan gunakan sebagai contoh untuk menjelaskan mengapa output tidak 't 982.
Shaggy
1
@Shaggy thx karena memperhatikan kesalahan konyol
4
Woah, saya belum berpikir tantangan pertama saya akan memiliki 7 jawaban dan 2 upvotes di jam pertama! Dan saya mencapai ~ 28 orang!
2
Hei, downvoter: jelaskan sudut pandang Anda! Ini perlu untuk tantangan untuk meningkat!

Jawaban:

11

Java 8, 17 byte

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

Port dari jawaban JavaScript @LuisFelipeDeJesusMunoz .

Cobalah online.

Penjelasan:

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
sumber
11
Perasaan itu ketika Java mengalahkan kedua python (karena sintaks lambda) dan javascript (karena jumlah)
Quintec
8

Brain-Flak , 72 byte

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

Cobalah online!

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

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024
Riley
sumber
1
Terima kasih! Saya tertarik mempelajari Brain-Flak dan penjelasan Anda bermanfaat.
Galen Ivanov
2

Catholicon , 5 byte

-`L̇½Ṗ

Penjelasan:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]
Okx
sumber
1
Apakah saya mencium bahasa golf yang baru? :)
ETHproduksi
1
+1 untuk bahasa baru. Satu lagi untuk dipelajari </sigh>
ElPedro
2

TI-Basic, 8 byte

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

JavaScript, 28 byte

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

Cobalah online

Shaggy
sumber
1

Jelly , 7 6 byte

HSạ⁽¡ç

Cobalah online!

Penjelasan:

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

-1 byte dengan menggunakan nomor basis-250

Kamerad SparklePony
sumber
1

Japt, 7 6 byte

xz nH²

Cobalah atau verifikasi semua kasus uji

 z         :(Floor) divide each by 2
x          :Reduce by addition
   n       :Subtract from
    H      : 32
     ²     : Squared
Shaggy
sumber
1

perl -aE, 27 byte

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

Ini membaca baris dengan angka (dipisahkan spasi) STDIN, dan menulis jawabannya STDOUT.

Apa yang dilakukannya adalah mengurangi semua angka dari input dari 2048, dan itu membagi sisanya dengan 2. -aSwitch menempatkan dalam array @F(satu nomor per elemen). Jika kita menginterpolasi array ke dalam string (yang kita lakukan di sini), perl menempatkan nilai $"antara elemen. Variabel yang sedikit digunakan $:adalah default \n-; dan karena ruang putih antara token diabaikan, hasilnya mengurangi semua angka dari 2048. evalPenghitungannya dilakukan.


sumber
0

Perl 6 , 12 byte

1024-*.sum/2

Cobalah online!

Anonim Apapun lambda yang mengambil daftar dan mengembalikan nomor.

Jo King
sumber
0

AWK, 26 byte

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

Nomor input dipisahkan oleh baris baru (yaitu satu per baris)

iBug
sumber
0

Neim, 6 byte

Cukup baru untuk Neim tetapi membuatnya bekerja

𝐬ᚺςᚫᛦ𝕤

Penjelasan:

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

Cobalah online!

LiefdeWen
sumber
0

JAVA, 30 byte

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

F #, 24 byte

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

1024 dikurangi jumlah dibagi 2.

Perwujudan Ketidaktahuan
sumber