Couch 2048: จนถึงปี 2048 เท่าไหร่?


20

ฉันได้พยายามเพียงแค่เกมที่เรียกว่าโซฟา 2048
(หมายเหตุ: คุณควรมีลักษณะที่จะเข้าใจคำถามนี้ดีกว่า)
เนื่องจากมันไม่ได้น่าตื่นเต้นมากสำหรับฉันฉันจึงถามตัวเองว่า 'จนถึงปี 2048!'
นั่นเป็นแรงบันดาลใจให้ฉันโพสต์สิ่งที่ท้าทายเพราะการคำนวณสิ่งนี้ไม่ใช่เรื่องง่ายอย่างที่ฉันคิด

เป้าหมายของคุณ:
ระบุรายชื่อลูกบอลบนโซฟาคุณจะต้องแสดงจำนวนลูกบอลที่มีค่าเท่ากับ 2 ต้องตกลงมาจากฟ้าเพื่อที่จะได้เป็นผู้ชนะในเกม

  • สมมติว่าอินพุตถูกต้อง
  • สมมติว่าผู้เล่นจะไม่โยนลูกบอลใด ๆ
  • สมมติว่าลูกบอลที่ตกลงมาจากฟากฟ้ามีค่าเท่ากับ 2 ดังที่ฉันได้กล่าวไปแล้ว
  • ตัวอย่างผลลัพธ์ที่ถูกต้อง: 3, "4", [5], ["6"]

แก้ไข:
ฉันควรชี้แจงบางอย่าง:
- คุณต้องพิมพ์จำนวน 2s ที่น้อยที่สุด

กรณีทดสอบ:
[2048] -> 0คุณชนะแล้ว
[1024,1024] -> 0คุณไม่ต้องการลูกบอลเพิ่มอีกแล้วเพื่อชนะ
[1024,512,256,128,64,32,16,8,4,2] -> 1หนึ่งบอลที่ต้องใช้'เปิดใช้งานเชน'
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

หมายเหตุ :
ฉันไม่ใช่เจ้าของภาษา - บอกฉันว่าคุณเห็นตัวพิมพ์หรือข้อความที่ไม่ใช่ไวยากรณ์
หากสิ่งที่ไม่ชัดเจนให้ถามในความคิดเห็น


ทำไม[4,16,64] -> 22?
l4m2

3
ยินดีต้อนรับสู่ PPCG ดูเหมือนว่าความท้าทายนี้คือ: เพิ่มองค์ประกอบทั้งหมดในอาร์เรย์, ลบออก2048และหารด้วย2- ถ้าเป็นเช่นนั้น, คุณอาจต้องการตรวจสอบกรณีทดสอบครั้งสุดท้าย - หากไม่ได้โปรดใช้มันเป็นตัวอย่างเพื่ออธิบายว่าทำไมผลลัพธ์ถึงไม่ 982'T
Shaggy

1
@Shaggy ขอบคุณสำหรับการสังเกตผิดพลาด

4
ว้าวฉันไม่ได้คิดว่าความท้าทายครั้งแรกของฉันจะมี 7 คำตอบและ 2 upvotes ในชั่วโมงแรก! และฉันก็มาถึง ~ 28 คน!

2
เฮ้ downvoter: อธิบายมุมมองของคุณ! มันเป็นสิ่งจำเป็นสำหรับความท้าทายในการปรับปรุง!

คำตอบ:


11

Java 8, 17 ไบต์

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

ท่าเรือ@LuisFelipeDeJesusMunoz 'คำตอบ JavaScript

ลองออนไลน์

คำอธิบาย:

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

11
ความรู้สึกเมื่อ Java เต้นทั้งหลาม (เพราะแลมบ์ดาไวยากรณ์) และจาวาสคริปต์ (เพราะผลรวม)
Quintec

8

Brain-Flakขนาด 72 ไบต์

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

ลองออนไลน์!

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

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

1
ขอขอบคุณ! ฉันสนใจที่จะเรียนรู้ Brain-Flak และคำอธิบายของคุณมีประโยชน์
Galen Ivanov








2

Catholicon , 5 ไบต์

-`L̇½Ṗ

คำอธิบาย:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]

1
นั่นเป็นภาษากอล์ฟใหม่ที่ฉันได้กลิ่นไหม :)
ETHproductions

1
+1 สำหรับภาษาใหม่ อีกหนึ่งการเรียนรู้ </sigh>
ElPedro





1

perl -aE, 27 ไบต์

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

นี้อ่านสอดคล้องกับตัวเลข (ช่องว่างแยกออกจากกัน) จากและเขียนคำตอบSTDINSTDOUT

สิ่งที่มันจะลบตัวเลขทั้งหมดจากอินพุตจาก 2048 และจะหารส่วนที่เหลือด้วย 2 -aสวิทช์ใส่ในอาร์เรย์@F(หนึ่งหมายเลขต่อองค์ประกอบ) ถ้าเราสอดแทรกอาเรย์เข้าไปในสตริง (ซึ่งเป็นสิ่งที่เรากำลังทำอยู่ที่นี่), perl จะใส่ค่า$"ระหว่างองค์ประกอบ ตัวแปรที่ใช้เล็ก ๆ น้อย ๆ$:เป็นค่าเริ่มต้น BE \n-; และเนื่องจากช่องว่างระหว่างโทเค็นถูกละเว้นผลลัพธ์จะถูกลบจำนวนทั้งหมดจาก 2048 evalการคำนวณจะทำอย่างไร







0

AWK, 26 ไบต์

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

หมายเลขอินพุตถูกคั่นด้วยบรรทัดใหม่ (เช่นหนึ่งต่อบรรทัด)


0

Neim, 6 ไบต์

ค่อนข้างใหม่สำหรับ Neim แต่ใช้งานได้ดี

𝐬ᚺςᚫᛦ𝕤

คำอธิบาย:

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

ลองออนไลน์!






โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.