Pesta Thanksgiving

27

Besok, 23 November, adalah Hari Thanksgiving di Amerika Serikat. Untuk mempersiapkan, Anda perlu memasak beberapa kalkun ASCII. Namun, karena Anda terlambat dalam perencanaan, Anda memerlukan program (atau fungsi) untuk membantu Anda dengan berapa banyak burung yang perlu Anda persiapkan.

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

Kalkun yang Anda temukan agak di sisi kecil, jadi Anda sudah menemukan rasio berikut - satu kalkun akan memberi makan:

  • empat orang yang hanya suka daging putih dan tiga orang yang hanya suka daging hitam
  • atau tujuh orang yang tidak peduli
  • atau kombinasi keduanya.

Artinya, ada total 4 porsi daging putih dan 3 porsi daging gelap di setiap kalkun yang diberikan. Selanjutnya, Anda tidak dapat membeli dan memasak kalkun parsial.

Misalnya, untuk 3 orang yang hanya suka daging putih, 6 orang yang hanya suka daging hitam, dan 3 orang yang tidak peduli, Anda akan membutuhkan dua kalkun. Itu memberi 8 porsi putih dan 6 porsi gelap, yang cukup untuk memuaskan semua orang dan memiliki sisa daging putih:

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

Untuk 20 orang yang tidak peduli, Anda akan membutuhkan tiga kalkun, dan memiliki sedikit sisa putih atau gelap:

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

Dan seterusnya.

Aturan

  • Tiga input bisa dalam urutan apa pun yang Anda pilih, dan dalam format apa pun yang nyaman . Harap tunjukkan dalam jawaban Anda bagaimana input diambil.
  • Tidak akan pernah ada persyaratan untuk lebih dari 25 kalkun (jadi maksimal 175 orang untuk memberi makan).
  • Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan karakternya berbaris dengan tepat.
  • Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
  • Output bisa ke konsol, dikembalikan sebagai daftar string, dikembalikan sebagai string tunggal, dll.
  • Celah standar dilarang.
  • Ini adalah sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
AdmBorkBork
sumber
rasio Anda tidak cukup masuk akal bagi saya - Anda tampaknya menyiratkan bahwa 7 orang yang tidak peduli hanya mendapatkan sisa makanan, tetapi tampaknya menulis bahwa seekor kalkun dapat memberi makan 3 + 4 + 7 = 14 orang (atau yang kalkun mungkin hanya cukup untuk memberi makan 3 pemakan daging gelap).
dzaima
@dzaima Dari contoh-contoh di atas, tampaknya satu kalkun memiliki 4 porsi daging putih dan 3 gelap. Jadi ini berfungsi (4 orang yang hanya suka daging putih DAN 3 orang yang hanya suka daging hitam) ATAU 7 orang tanpa preferensi.
KSmarts
@KSmarts itulah yang saya katakan dalam komentar saya juga, tetapi teksnya tidak mengatakan itu dengan baik
dzaima
1
Bagaimana seharusnya kalkun diletakkan di samping satu sama lain? Tampaknya tidak ada jawaban saat ini yang tumpang tindih dengan contoh-contohnya
dzaima
4
Apakah kita mendapatkan hadiah untuk solusi dalam Chicken?
Uriel

Jawaban:

21

Befunge-93, 231 224 byte

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_@

Cobalah online!

Tiga nilai dibaca dari stdin dalam urutan: daging putih, daging gelap, tidak peduli.

James Holderness
sumber
17
Saya tahu saya tidak seharusnya mengungguli tantangan kode golf untuk kode yang ditata secara artistik, tetapi ... Ini kebetulan terlihat seperti kalkun freakin dalam oven, jadi +1!
Level River St
1
Saya melihat pertanyaan dan berpikir "Tidak mungkin kode golf dapat melakukan ini dengan mudah", dan kemudian saya melihat seekor kalkun sialan di dalam oven sedang dimasak dan menyelesaikan masalah.
MechMK1
6

APL (Dyalog) , 120 118 104 byte

14 byte disimpan berkat @ Adám

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

Cobalah online!

Putih pemilih dan gelap ada di sebelah kanan, yang tidak pilih-pilih di sebelah kiri.

Sayang sekali sebagian besar jumlah byte diambil oleh string saat ini.

Bagaimana?

⍵,⍺++/⍵ - Menciptakan berbagai whity, darky dan jumlah semuanya ditambah non pickys

4 3 7÷⍨ - bagi dengan berapa banyak dari mereka mendapatkan keinginan mereka dari satu ayam

⌈/ - ambil estimasi tertinggi dari ketiganya - jadi jika kita memiliki jumlah pencari daging gelap yang sangat tinggi, mereka tidak akan diabaikan

- langit-langit, dalam hal hanya setengah ayam dalam permintaan

Kemudian kita membuat string, melampirkannya dengan , lalu ulangi matriks tertutup ayam kali dihitung /, dan akhirnya menggabungkan semua ayam dengan ,/.

Uriel
sumber
4
+1 untuk memanggil ayam kalkun. Karena itulah mereka, ayam yang dimuliakan. Masih enak.
J. Sallé
2
@ J.Sallé Tidak ada yang memanggil saya ayam
manassehkatz-Reinstate Monica
'='⍪⍨' .-_''/)\=('[4 19⍴10 10⊤¯35+⎕UCS'###(##-:77-&(#F*####+,&0N&&)#,N0Z&d++#']dengan ⎕IO←0.
Adám
4

Python 2 , 142 byte

lambda w,d,n:[min(e)+-min(-w/3,-d/4,-(w+d+n)/7)*e.center(18)for e in"  .---.   _"," .'     './ )","/   _   _/ /\\","=(_____) (__/_/==","="*18]

Cobalah online!

-16 byte berkat Lynn
-4 byte terima kasih kepada Tn. Xcoder

dan kembali ke lambda xD

HyperNeutrino
sumber
3

SOGL V0.12 , 65 byte

N∫4*κ:F3*.-:h+.-¹χ∆>?F"Ωeχ&i[A⁄╔■§‼╗╝│¼ο≠≈⁹,Ρ⁴žγūž℮3zl3βΜ%G‘'³n*←

Coba Di Sini!

Urutan input adalah white, dark, dan kemudian either.

dzaima
sumber
3

Python 2 , 197 189 174 byte

terima kasih kepada Erik the Outgolfer untuk -12 byte
terima kasih kepada Jonathan Frech untuk -1 byte

a,b,c=input()
for i in range(5):print'='[i<4:]+(' '+"   =   (  /_ . _ ' _.  _- __-  )-   .  ( '__ ./_ / /_ /_ )\\/   =   ="[i::4],'='*18)[i>3]*max((6+c+a+b)/7,a+3>>2,(b+2)/3)

Cobalah online!

ovs
sumber
2

Arang , 76 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

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

Cetak kalkun dengan indentasi 1 spasi.

×=¹⁹

Cetak tabelnya.

NθNη

Masukkan jumlah pemakan daging hitam dan putih.

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

Ulangi satu kurang dari batas maksimum a) sepertiga dari jumlah pemakan daging gelap b) seperempat dari jumlah pemakan daging putih c) seperdelapan dari jumlah pengunjung.

C¹⁸¦⁰

Buat salinan kalkun.

Neil
sumber
2

Excel VBA, 222 219 211 198 Bytes

Fungsi jendela langsung VBE anonim yang mengambil input dari jangkauan [A1:C1]dengan urutan daging putih, daging gelap, dan acuh tak acuh dalam urutan dan output ke jangkauan [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)]

Awalnya solusinya menemukan jumlah kalkun yang benar dan kemudian mengulangi pola kalkun yang berkali-kali. Idealnya ini kemudian akan langsung dikeluarkan ke jendela langsung VBE seperti yang ditunjukkan oleh fungsi di bawah ini

[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)]

Versi ini pada awalnya menghasilkan respons yang benar, namun, ia segera diformat secara otomatis oleh kompiler, seperti _halnya karakter garis lanjutan, dan dengan demikian dipindahkan untuk hanya memiliki satu (spasi) karakter di sebelah kirinya, memecahkan pola.

Contoh yang ditunjukkan di bawah ini untuk kejelasan

[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
      .---.   _         .---.   _         .---. _
    .'     './ )      .'     './ )      .'     './ )  
   /   _   _/ /\     /   _   _/ /\     /   _   _/ /\  
 =(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================

Untuk memperbaiki ini karakter spasi terakhir ( , karakter 32) sebelum _baris salah satu output diganti dengan spasi yang tidak putus (  , karakter 160, Alt + 255)

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

-3 byte untuk penggunaan 1pernyataan split terbatas

-8 byte untuk menggunakan pemindahan =ke dalam perpecahan dan menggunakan penambahan string pada penggabungan

-13 byte untuk penggunaan ruang non-breaking untuk mencegah autoformatting dari output

Taylor Scott
sumber
2

Kotlin , 207 198 byte

terima kasih kepada Taylor Scott untuk -7 byte

{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))}

Ini belum berfungsi pada TIO , karena membutuhkan Kotlin 1.1

Cobalah online!

ovs
sumber
1

JavaScript (ES6), 180 179 byte

Output array string.

(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 byte

Menghasilkan satu string.

(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 byte (Arnauld): a+3>>4bukan(a+3)/4)

Darrylyeo
sumber