ฉลองวันขอบคุณพระเจ้า


27

พรุ่งนี้วันที่ 23 พฤศจิกายนเป็นวันขอบคุณพระเจ้าในสหรัฐอเมริกา ในการเตรียมตัวคุณต้องปรุงไก่งวง ASCII บางตัว อย่างไรก็ตามเนื่องจากคุณวางแผนล่าช้าคุณต้องมีโปรแกรม (หรือฟังก์ชั่น) เพื่อช่วยคุณเตรียมนกให้ได้มากที่สุด

      .---.   _
    .'     './ )
   /   _   _/ /\
 =(_____) (__/_/==
===================

ไก่งวงที่คุณพบนั้นค่อนข้างเล็กดังนั้นคุณจึงหาอัตราส่วนต่อไปนี้ - ไก่งวงหนึ่งตัวจะให้อาหาร:

  • คนสี่คนที่ชอบเนื้อสีขาวและคนสามคนที่ชอบเนื้อสีเข้มเท่านั้น
  • หรือเจ็ดคนที่ไม่สนใจวิธีใด
  • หรือการรวมกันของมัน

ความหมายมีทั้งหมด 4 เสิร์ฟเนื้อขาวและ 3 เสิร์ฟเนื้อดำในไก่งวงใด ๆ นอกจากนี้คุณไม่สามารถซื้อและปรุงอาหารไก่งวงบางส่วนได้

ตัวอย่างเช่นสำหรับ 3 คนที่ชอบเนื้อขาวเท่านั้นคน 6 คนที่ชอบเนื้อเข้มเท่านั้นและอีก 3 คนที่ไม่สนใจคุณจะต้องมีไก่งวงสองตัว ที่ให้ 8 เสิร์ฟสีขาวและ 6 เสิร์ฟแห่งความมืดซึ่งเพียงพอที่จะตอบสนองทุกคนและมีเนื้อสีขาวที่เหลือ:

      .---.   _         .---.   _
    .'     './ )      .'     './ )
   /   _   _/ /\     /   _   _/ /\
 =(_____) (__/_/== =(_____) (__/_/==
=====================================

สำหรับ 20 คนที่ไม่สนใจคุณจะต้องมีไก่งวงสามตัวและมีส่วนที่เหลือสีขาวหรือสีดำเล็กน้อย:

      .---.   _         .---.   _         .---.   _
    .'     './ )      .'     './ )      .'     './ )
   /   _   _/ /\     /   _   _/ /\     /   _   _/ /\
 =(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================

และอื่น ๆ

กฎระเบียบ

  • ทั้งสามปัจจัยการผลิตที่สามารถอยู่ในลำดับใด ๆ ที่คุณเลือกและในรูปแบบที่สะดวกใดโปรดระบุคำตอบของคุณในการป้อนข้อมูล
  • จะไม่มีข้อกำหนดสำหรับไก่งวงมากกว่า 25 ตัว (สูงสุด 175 คนที่จะเลี้ยง)
  • ขึ้นบรรทัดใหม่ / ต่อท้ายหรือช่องว่างอื่น ๆ เป็นตัวเลือกโดยมีเงื่อนไขว่าตัวอักษรอยู่ในแนวที่เหมาะสม
  • ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
  • เอาต์พุตสามารถไปที่คอนโซลส่งคืนเป็นรายการของสตริงส่งคืนเป็นสตริงเดี่ยว ฯลฯ
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • นี่คือเพื่อให้ใช้กฎการตีกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

อัตราส่วนของคุณไม่สมเหตุสมผลกับฉัน - คุณดูเหมือนจะบอกว่าคน 7 คนที่ไม่สนใจแค่ของเหลือเท่านั้น แต่ดูเหมือนจะเขียนว่าไก่งวงสามารถให้อาหาร 3 + 4 + 7 = 14 คน (หรือที่หนึ่ง ไก่งวงอาจจะเพียงพอที่จะเลี้ยงผู้กินเนื้อดำ 3 คน)
dzaima

@dzaima จากตัวอย่างดูเหมือนว่าไก่งวงตัวหนึ่งมีเนื้อสัตว์สีขาว 4 เสิร์ฟและมืด 3 ตัว ดังนั้นจึงให้บริการ (4 คนที่ชอบเนื้อขาวและ 3 คนที่ชอบเนื้อเข้มเท่านั้น) หรือ 7 คนที่ไม่ชอบ
KSmarts

@ มาร์ทนั่นคือสิ่งที่ฉันพูดในความคิดเห็นของฉันด้วย แต่ข้อความไม่ได้พูดอย่างนั้น
dzaima

1
ไก่งวงควรจะวางติดกันอย่างไร? ดูเหมือนว่าไม่มีคำตอบปัจจุบันที่ทับซ้อนกันกับตัวอย่างที่ทำ
dzaima

4
เราได้รับรางวัลสำหรับการแก้ปัญหาในไก่หรือไม่?
Uriel

คำตอบ:


21

Befunge-93, 231 224 bytes

p&:10p3+4/:&:20p2+3/\-:v
v<0-1:+*`0:-\/7+++&g02<0
>"   _   .---.      "vg`
>"  ) /.'     '.    "v0*
>"  \/ /_   _   /   "v1+
>"==/_/__( )_____(= "v6:
v^0-1 _$"v"000g1+:>v v^<
:#,_$:^1,+55:p+1p00< >>>
_$$99+*"=":>,#:\:#->#1_@

ลองออนไลน์!

ค่าสามค่านั้นถูกอ่านจาก stdin ตามลำดับ: เนื้อขาว, เนื้อดำ, ไม่สนใจ


17
ฉันรู้ว่าฉันไม่ควรอัปโหลดรหัสการแข่งขันกอล์ฟเพื่อวางรหัสอย่างมีศิลปะ แต่ ... มันเกิดขึ้นกับดูเหมือนไก่งวงประหลาดในเตาอบดังนั้น +1!
เลเวลริเวอร์เซนต์

1
ฉันดูคำถามและคิดว่า "ไม่มีวิธีใดที่นักกอล์ฟสามารถทำสิ่งนี้ได้อย่างง่ายดาย" และจากนั้นฉันเห็นไก่งวงฟริกจินในเตาอบที่ปรุงและแก้ปัญหา
MechMK1

6

APL (Dyalog) , 120 118 104 ไบต์

บันทึก 14 ไบต์ด้วย @ Adám

{,/(⌈⌈/4 3 7÷⍨⍵,⍺++/⍵)/'='⍪⍨' .-_''/)\=('[4 1910 10⊤¯35+⎕UCS'###(##-:77-&(#F*####+,&0N&&)#,N0Z&d++#']}

ลองออนไลน์!

สีขาวและสีดำที่พิถีพิถันอยู่ทางขวา

น่าเสียดายที่จำนวนไบต์ส่วนใหญ่ถูกใช้โดยสตริงในขณะนี้

อย่างไร?

⍵,⍺++/⍵ - สร้างอาร์เรย์ของ whity, darky และผลรวมของพวกเขาทั้งหมดพร้อม pickys ที่ไม่ใช่

4 3 7÷⍨ - หารด้วยจำนวนของพวกเขาได้รับความปรารถนาของพวกเขาจากไก่หนึ่งตัว

⌈/ - ใช้การประมาณค่าสูงสุดของทั้งสาม - ดังนั้นหากเรามีผู้ค้นหาเนื้อดำในปริมาณที่สูงมากพวกมันจะไม่ถูกทิ้ง

- เพดานในกรณีที่มีเพียงครึ่งไก่อยู่ในความต้องการ

จากนั้นเราจะสร้างสตริงใส่นั้นด้วยแล้วทำซ้ำเมทริกซ์ e ปิดครั้งไก่คำนวณด้วย/และในที่สุดก็ concatenate ,/ไก่ทั้งหมดที่มี


4
+1 สำหรับการเรียกไก่งวง เพราะนั่นคือสิ่งที่พวกเขาเป็นไก่เชิดชู ยังคงอร่อยอยู่
J. Sallé


'='⍪⍨' .-_''/)\=('[4 19⍴10 10⊤¯35+⎕UCS'###(##-:77-&(#F*####+,&0N&&)#,N0Z&d++#']⎕IO←0กับ
Adám




2

ถ่าน , 76 ไบต์

”{‴∨➙×95;{;C.ÞgF⁷J*←λ|⁸KK][§X⎚¦»Z◧↘gⅉ✳⟧F⎇≧h”×=¹⁹NθNηF⊖⌈⌈⟦∕θ³∕η⁴∕⁺⁺θηN⁷⟧C¹⁸¦⁰

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

”{‴∨➙×95;{;C.ÞgF⁷J*←λ|⁸KK][§X⎚¦»Z◧↘gⅉ✳⟧F⎇≧h”

พิมพ์ไก่งวงแบบเว้นวรรค 1 ช่อง

×=¹⁹

พิมพ์ตาราง

NθNη

ใส่จำนวนผู้ที่ทานเนื้อดำและขาว

F⊖⌈⌈⟦∕θ³∕η⁴∕⁺⁺θηN⁷⟧

ทำซ้ำหนึ่งครั้งน้อยกว่าเพดานสูงสุด a) หนึ่งในสามของจำนวนผู้กินเนื้อดำ b) หนึ่งในสี่ของจำนวนผู้รับประทานเนื้อสัตว์สีขาว c) หนึ่งในเจ็ดของจำนวนนักทาน

C¹⁸¦⁰

ทำสำเนาของไก่งวง


2

Excel VBA, 222 219 211 198 ไบต์

ไม่ประสงค์ออกนาม VBE ฟังก์ชั่นหน้าต่างทันทีที่ใช้ข้อมูลจากช่วง[A1:C1]ที่มีคำสั่งของเนื้อขาว, [D1]เนื้อดำและไม่แยแสในลำดับที่และผลในช่วง

[D1]=[Int(Max((A1+3)/4,(B1+2)/5,Sum(1:1,6)/7))]:For Each s In Split("      .---.   _   1    .'     './ )  1   /   _   _/ /\  1 =(_____) (__/_/==1",1):[E1]=s:?[Rept(E1,D1)]:Next:?[Rept("=",18*D1+1)]

ในตอนแรกการแก้ปัญหาค้นหาจำนวนไก่งวงที่ถูกต้องจากนั้นจะทำซ้ำรูปแบบไก่งวงหลายครั้ง หากเป็นอย่างนี้จะได้ผลลัพธ์โดยตรงไปยังหน้าต่าง VBE ทันทีดังที่แสดงโดยฟังก์ชั่นด้านล่าง

[D1]=[Int(Max((A1+3)/4,(B1+2)/5,Sum(1:1,6)/7))]:For Each s In Split("      .---.   _   1    .'     './ )  1   /   _   _/ /\  1 =(_____) (__/_/==1",1):[E1]=s:?[Rept(E1,D1)]:Next:?[Rept("=",18*D1+1)]

รุ่นนี้เริ่มต้นสร้างการตอบสนองที่ถูกต้องอย่างไรก็ตามมันจะถูกจัดรูปแบบอัตโนมัติโดยคอมไพเลอร์เนื่องจาก_เป็นอักขระที่ต่อเนื่องของบรรทัดและดังนั้นจึงถูกย้ายไปที่มีอักขระ (ช่องว่าง) ทางซ้ายเพียงอันเดียวเท่านั้น

ตัวอย่างที่แสดงด้านล่างเพื่อความชัดเจน

[A1:C1]=Array(0,0,20):[D1].Clear
[D1]=[Int(Max((A1+3)/4,(B1+2)/5,Sum(1:1,6)/7))]:For Each s In Split("      .---.   _   1    .'     './ )  1   /   _   _/ /\  1 =(_____) (__/_/==1",1):[E1]=s:?[Rept(E1,D1)]:Next:?[Rept("=",18*D1+1)]

'' Note that the `_` to the right has moved     V
      .---.   _         .---.   _         .---. _
    .'     './ )      .'     './ )      .'     './ )  
   /   _   _/ /\     /   _   _/ /\     /   _   _/ /\  
 =(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================

ในการแก้ไขอักขระช่องว่างสุดท้าย ( ถ่าน 32) ก่อน_ในบรรทัดหนึ่งของเอาต์พุตจะถูกแทนที่ด้วยช่องว่างไม่แตก (  , อักขระ 160, Alt + 255)

      .---.   _         .---.   _         .---.   _   
    .'     './ )      .'     './ )      .'     './ )  
   /   _   _/ /\     /   _   _/ /\     /   _   _/ /\  
 =(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================

-3 ไบต์สำหรับการใช้1คำสั่ง split

-8 ไบต์สำหรับการใช้งานการย้าย=ลงในการแยกและการใช้การเพิ่มสตริงผ่านการต่อข้อมูล

-13 ไบต์สำหรับการใช้พื้นที่ไม่ทำลายเพื่อป้องกันการจัดรูปแบบอัตโนมัติของการส่งออก


2

Kotlin , 207 198 bytes

ขอบคุณTaylor Scottสำหรับ -7 ไบต์

{a,b,c->val n=maxOf((a+3)/4,(b+2)/3,(6+c+a+b)/7);arrayOf("      .---.   _   ","    .'     './ )  ","   /   _   _/ /\\  "," =(_____) (__/_/==").map{println(it.repeat(n))};println("=".repeat(n*18+1))}

สิ่งนี้ยังใช้ไม่ได้กับTIOเนื่องจากต้องใช้Kotlin 1.1

ลองออนไลน์!


1

JavaScript (ES6), 180 179 ไบต์

ส่งออกอาร์เรย์ของสตริง

(a,b,c)=>[...`      .---.   _   
    .'     './ )  
   /   _   _/ /\\  
 =(_____) (__/_/==`.split`
`.map(l=>l.repeat(n=Math.max((6+c+a+b)/7,a+3>>4,(b+2)/3)|0)),'='.repeat(18*n+1)]


JavaScript (ES6), 182 181 ไบต์

เอาต์พุตสตริงเดี่ยว

(a,b,c)=>`      .---.   _   
    .'     './ )  
   /   _   _/ /\\  
 =(_____) (__/_/==
${'='.repeat(18)}`.split`
`.map(l=>l.repeat(Math.max((6+c+a+b)/7,a+3>>4,(b+2)/3))).join`
`+'='

-1 ไบต์ (Arnauld): a+3>>4แทน(a+3)/4)

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