Kanepe 2048: 2048'e kadar ne kadar?


20

Sadece Couch 2048 adlı bir oyunu denedim .
(Not: Bu soruyu daha iyi anlamak için bir göz atmalısınız.)
Benim için çok heyecan verici olmadığından kendime '2048'e kadar ne kadar!'
Bu bana bir meydan okuma göndermem için ilham verdi, çünkü bunu düşündüğüm kadar kolay değil.

Amacınız:
Kanepedeki topların bir listesi verildiğinde, 2 değeri olan kaç topun gökten düşmesi gerektiğine karar vermelisiniz, böylece bir oyun kazanabilir (2048 topuna ulaşarak).

  • Girişin geçerli olduğunu varsayın.
  • Oyuncunun top düşürmeyeceğini varsayın.
  • Dediğim gibi, gökten düşen topların her zaman 2 değerine sahip olduğunu varsayın.
  • Geçerli çıktı örnekleri: 3, "4", [5], ["6"]

Düzenleme:
Ben bir şey açıklığa kavuşturmak gerekir:
- 2s gerekli en az miktarda yazdırmak zorunda.

Test senaryoları:
[2048] -> 0 Zaten kazandınız
[1024,1024] -> 0Daha fazla kazanmak için
[1024,512,256,128,64,32,16,8,4,2] -> 1topa ihtiyacınız yok 'Zinciri etkinleştirmek için gerekli bir top '
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Notlar :
Ben anadili değilim - Yazım hatası veya dilbilgisi olmayan bir metin tespit edip etmediğinizi söyleyin.
Bir şey net değilse, yorum isteyin.


neden [4,16,64] -> 22?
l4m2

3
PPCG'ye hoş geldiniz. Bu meydan okumaya benziyor: dizideki tüm öğeleri ekleyin, çıkartın 2048ve ayırın 2- eğer öyleyse, son test senaryosunu iki kez kontrol etmek isteyebilirsiniz - eğer değilse, çıktının neden olmadığını açıklamak için lütfen örnek olarak kullanın t 982.
Shaggy

1
@ Saçma bir hata fark için Shaggy thx

4
Woah, ilk mücadelemde ilk cevapta 7 cevap ve 2 vekil olacağını düşündüm! Ve ~ 28 kişiye ulaştım!

2
Hey, inatçı: bakış açınızı açıklayın! Zorluğun gelişmesi için gerekli!

Yanıtlar:



8

Brain-Flak , 72 bayt

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

Çevrimiçi deneyin!

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

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024

1
Teşekkür ederim! Brain-Flak'ı öğrenmekle ilgileniyorum ve açıklamanız faydalı oldu.
Galen Ivanov













1

perl -aE, 27 bayt

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

Bu, sayıları (boşluk ayrılmış) olan bir satırı okur STDINve yanıtıSTDOUT .

Yaptığı şey, 2048'den tüm sayıları girişten çıkarmak ve geri kalanını 2'ye böler. -aAnahtar diziyi @F(öğe başına bir sayı) koyar . Bir diziyi bir dizgiye enterpole edersek (burada yaptığımız şey budur), perl $"öğeler arasındaki değeri koyar . Az kullanılan değişken $:varsayılan değerdir \n-; ve jetonlar arasındaki beyaz boşluk göz ardı edildiğinden, sonuç 2048'den tüm sayıları çıkarır eval.







0

AWK, 26 bayt

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

Girdi sayıları satırsonu ile ayrılır (her satırda bir tane)


0

Neim, 6 bayt

Neim için oldukça yeni ama işe yaradı

𝐬ᚺςᚫᛦ𝕤

Açıklama:

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

Çevrimiçi deneyin!






Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.