ความท้าทายเกี่ยวกับ advacado


16

แรงบันดาลใจจากนี้ อะโวคาโดไม่ได้รับอันตรายในการสร้างความท้าทายนี้

สวัสดีฉันมีความท้าทายฉันต้องการความช่วยเหลือในการทำอโวคาโด

สังเกตอะโวคาโดศิลปะ ASCII นี้:

    ###### 
   #      #
   # #### #
  #  # p# #
  ## #### #
   #      #
    ######

อะโวคาโดนี้ประกอบด้วยภายนอกของ#s (โดยเฉพาะลำดับแรกและสุดท้ายของ#s ในแต่ละบรรทัด) และหลุม (รูปร่างของ#s ในอะโวคาโดที่ไม่ได้สัมผัสภายนอกอะโวคาโด)

จากการทดลองอย่างเข้มงวดเกี่ยวกับอะโวคาโดศิลปะ ASCII เหล่านี้ฉันได้ค้นพบสิ่งต่อไปนี้:

avocado juice in fluid ounces = number of spaces inside avocado but outside pit (the pit is marked with a p in the example) + 2 * number of spaces inside pit

time to juice avocado in minutes = 13 * number of spaces inside pit

ตัวอย่างเช่นอะโวคาโดนี้จะใช้เวลา 26 (2 ช่องว่างในหลุม * 13) นาทีเพื่อให้น้ำผลไม้และจะให้ 23 (19 ช่องว่างภายในอะโวคาโด แต่นอกหลุม + 2 * 2 ช่องว่างภายในหลุม) fl oz ของน้ำผลไม้

ท้าทาย

ด้วยการป้อนข้อมูลของอะโวคาโดศิลปะหนึ่งเดียวของ ASCII เช่นเดียวกับข้างบนที่ประกอบด้วยเฉพาะ#และช่องว่างส่งออกจำนวนเวลาในไม่กี่นาทีมันจะใช้เวลาในการน้ำผลไม้และปริมาณของน้ำผลไม้ที่มันจะผลิตในลำดับใด ๆ

คุณอาจสมมติว่าอะโวคาโดอินพุตจะมีหนึ่งหลุมเสมอและทั้งอะโวคาโดและหลุมจะปิดเสมอ หลุมและอะโวคาโดจะเชื่อมต่ออยู่เสมอและส่วนย่อยของหลุมจะเชื่อมต่อด้วยเช่นกัน อะโวคาโดและหลุมมักจะนูน โปรดทราบว่าภายนอกอะโวคาโดอาจหนาโดยพลการ

ตัวอย่างอินพุตและเอาต์พุต

    ###### 
   #      #
   # #### #
  #  #  # # -> 26 23
  ## #### #
   #      #
    ######


   #######
  #       #
  #  ###   ##
  #  #  #   # -> 26 35
  #   ##   #
  #        #
  ##########

นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


เป็นไปได้ที่ซ้ำกันของคุณอยู่ในห้องที่ใหญ่ที่สุด?
Mego

3
@ เล็กน้อยฉันได้พูดคุยกับผู้คนในการแชทและเราตัดสินใจว่ามันแตกต่างกันพอสมควรเนื่องจากหลุมอะโวคาโด
สปาเก็ตตี้

3
ฉันยังคิดว่ามันเป็นล่อลวง
Mego

1
@DigitalTrauma แก้ไข
สปาเก็ตตี้

1
ยังดูเหมือนไม่ชัดเจนว่าชุดอินพุตที่ใช้ได้คืออะไร
feersum

คำตอบ:


6

Pyth, 59 51 ไบต์

*Ksm/.s.s.sd\ \#\ \ fq4l:T"#+"4.z13+-/s.sR\ .zdK*2K

ลองที่นี่!

แสดงเวลาที่จะเร่งความเร็ว advacado (ภาษาอังกฤษที่ถูกต้องทั้งหมด) ก่อนและในบรรทัดถัดไปจะแสดงปริมาณของ juic

คำอธิบาย

รหัส - ภาพรวม

* Ksm / .sssd \ \ # \ \ fq4l: T "# +" 4.z13 + - / s.sR \ .zdK * 2K # .z = รายการบรรทัดอินพุตทั้งหมด

                    fq4l: T "# +" 4.z # รับพิทไลน์
   m / .sssd \ \ # \ \ # แผนที่พิท - ไลน์กับจำนวนช่องว่าง
 Ks # รวมจำนวนของช่องว่างหลุมและกำหนดให้ K
* 13 # พิมพ์เวลาที่สนุกสนาน
                                     /s.sR \ .zd # นับ whitespaces ทั้งหมดใน advacado
                                    - K # ลบขนาดหลุมจากมัน
                                   + * 2K # ทำยอดคงเหลือส่วนที่เหลือและพิมพ์ออกมา


คำอธิบายโดยละเอียดของส่วนการคำนวณขนาดดูด้านล่าง

รับขนาด advacado

ลองดูที่นี่:

    ###### 
   # #
   # #### #
  # # # #
  ## #### #
   # #
    ######

ก่อนที่ช่องว่างนำหน้าและต่อท้ายจะถูกลบออก หลังจากนั้นเรารวมทุกอย่างไว้ในบรรทัดเดียวซึ่งส่งผลให้สตริงนี้:

#######      ## #### ##  #  # ### #### ##      #######

สิ่งนี้มีช่องว่างทั้งหมดใน advacado ดังนั้นเราต้องนับพวกมัน (advacado จะเป็นนูนเสมอดังนั้นสิ่งนี้ใช้ได้กับอินพุตที่ถูกต้องทั้งหมด) ตัวเลขนี้ยังคงมีช่องว่างในหลุม แต่สำหรับการคำนวณจำนวนฉ่ำเราต้องการเพียงช่องว่างในผลไม้โดยไม่มีช่องว่างหลุม ดังนั้นเราต้องคำนวณพวกมันด้วย

รหัสสำหรับที่อธิบายในรายละเอียด:

/s.sR \ .zd # .z = รายการบรรทัดอินพุตทั้งหมด

  .sR \ .z # ตัดช่องว่างออกจากทุกบรรทัดอินพุต
 s # เชื่อมทุกบรรทัด
/ d # นับช่องว่างทั้งหมด

รับขนาดหลุม

นี่มันช่างค่อนข้างหลอกลวง ก่อนอื่นเราลบเส้นที่ไม่นำไปสู่ขนาดของหลุม ทำได้โดยการกรองทุกบรรทัดที่มีแฮชน้อยกว่า 4 กลุ่ม (ใช้ regex #+และนับการแข่งขัน) ในตัวอย่างข้างต้นมีเพียงหนึ่งบรรทัดเท่านั้นที่จะอยู่รอดได้ในกระบวนการนี้

  #  #--# #

ช่องว่างที่ฉันทำเครื่องหมายด้วย-นี่คือพื้นที่ที่เราต้องนับ ดังนั้นเราเพียงแค่ตัดช่องว่างแล้วแฮชแล้วเว้นวรรคอีกครั้งซึ่งทำให้เรามีสิ่งนี้:

#  #

ตรงนั้นเราแค่ต้องนับช่องว่าง เราทำทุกอย่างเพื่อให้ทุกบรรทัดที่รอดชีวิตจากกระบวนการกรองผลรวมทุกอย่างแล้วเสร็จ ที่เหลือก็เป็นคณิตศาสตร์เล็กน้อย

รหัสสำหรับที่อธิบายในรายละเอียด:

sm / .sssd \ \ # \ \ fq4l: T "# +" 4.z # .z = รายการบรรทัดอินพุตทั้งหมด

                  f .z # กรองอินพุต
                     l: T "# +" ความยาว 4 # ของการแข่งขันสำหรับ regex `# +`
                   q4 # ถ้ามีแฮชของกลุ่ม 4 บรรทัด
 m # แผนที่เส้นพิทเพื่อ ...
  / \ # การเกิดขึ้นของช่องว่างใน ..
   .sssd \ \ # \ # ... สายพิทที่ปล้น (ดูคำอธิบายด้านบน)
s # รวมจำนวนช่องว่างทั้งหมดในหลุม


5

เรติน่า 70

  • บันทึก 25 ไบต์ด้วย @FryAmTheEggman และ @randomra
T` `i` (? <= # + # +) * (? = # + + #)
T` `f` # + #
ผม
$ 13 * IFF
((i) | (ฉ) | \ W) +
$ # 2 $ # 3

ลองออนไลน์


1
Dunno ถ้ามันจะช่วยได้ แต่ฉันมี90 bytesใช้$*... ยังรู้สึกว่าเล่นกอล์ฟได้จริง ๆ ...
FryAmTheEggman

2
@FryAmTheEggman Ohh คุณสามารถใช้ตัวอักษรกับ$*_? เยี่ยมมาก ฉันจัดการเพื่อให้ได้70 ไบต์
randomra

1
@randomra ใช่มันจะใช้จริง ๆ กับ "token" และดีมาก ๆ ! ฉันพยายามหารูปแบบที่คล้ายกัน แต่ฉันยังคงติดอยู่กับการแยกวิเคราะห์เพิ่มเติมการใช้ซ้ำfนั้นฉลาดมาก! มันแย่มากแม้ว่าการที่ "การโต้เถียง" ที่$*ถูกต้องนั้นจะเป็นตัวละครได้และไม่ใช่โทเค็น ... อาจจะเป็นการทดแทนในอนาคตอีกรูปแบบหนึ่ง? : 0
FryAmTheEggman

@randomra เจ๋งมาก - ขอบคุณ!
Digital Trauma

3

งูหลาม 141 119 ไบต์

import sys
s=str.strip;l=len;o=i=0
for x in sys.stdin:x=s(s(x),'#');y=s(x);o+=l(x)-l(y);i+=l(s(y,'#'))
print o+2*i,13*i

1
ยินดีต้อนรับสู่ Programming Puzzles & Code Golf! หากคุณกำหนดsกับร่างกายห่วงจะกลายเป็นs=str.strip x=s(s(x),'#');y=s(x);o+=l(x)-l(y);i+=l(s(y,'#'))นอกจากนี้ยังมีพื้นที่ไม่สามารถใช้งานได้ในบรรทัดสุดท้าย
เดนนิส

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