Festa del ringraziamento


27

Domani, 23 novembre, è il Giorno del Ringraziamento negli Stati Uniti. Per prepararti, devi cucinare alcuni tacchini ASCII. Tuttavia, poiché sei in ritardo nella pianificazione, hai bisogno di un programma (o funzione) che ti aiuti con quanti uccelli devi preparare.

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

I tacchini che hai trovato sono piuttosto piccoli, quindi hai capito i seguenti rapporti: un tacchino si nutre:

  • quattro persone a cui piace solo la carne bianca e tre persone a cui piace solo la carne scura
  • o sette persone a cui non importa in entrambi i modi
  • o una loro combinazione.

In altre parole, ci sono un totale di 4 porzioni di carne bianca e 3 porzioni di carne scura in un dato tacchino. Inoltre, non è possibile acquistare e cucinare un tacchino parziale.

Ad esempio, per 3 persone a cui piace solo la carne bianca, 6 a cui piace solo la carne scura e 3 a cui non importa, avrai bisogno di due tacchini. Questo dà 8 porzioni di bianco e 6 porzioni di buio, che è abbastanza per soddisfare tutti e avere un po 'di carne bianca rimanente:

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

Per 20 persone a cui non importa, avrai bisogno di tre tacchini e avrai un po 'di avanzi bianchi o scuri:

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

E così via.

Regole

  • I tre ingressi possono essere in qualsiasi ordine tu scelga e in qualsiasi formato conveniente . Indica nella risposta come è stato inserito l'input.
  • Non ci sarà mai un requisito per più di 25 tacchini (quindi un massimo di 175 persone da sfamare).
  • Le linee guida iniziali / finali o altri spazi bianchi sono opzionali, a condizione che i caratteri siano allineati in modo appropriato.
  • È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
  • L'output può essere sulla console, restituito come un elenco di stringhe, restituito come singola stringa, ecc.
  • Sono vietate le scappatoie standard .
  • Si tratta di quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).

i tuoi rapporti non hanno del tutto senso per me - sembra che insinui che le 7 persone a cui non importa prendono solo gli avanzi, ma sembra che un tacchino possa nutrire 3 + 4 + 7 = 14 persone (o quella la Turchia potrebbe essere sufficiente per alimentare 3 mangiatori di carne scura).
dzaima,

@dzaima Dagli esempi, sembra che un tacchino abbia 4 porzioni di carne bianca e 3 di buio. Quindi serve (4 persone a cui piace solo la carne bianca E 3 a cui piace solo la carne scura) O 7 persone senza preferenze.
KSmarts,

@KSmarts è quello che sto dicendo anche nel mio commento, ma il testo non lo dice bene
dzaima

1
Come dovrebbero essere messi i tacchini uno accanto all'altro? Sembra che nessuna delle risposte attuali abbia quella sovrapposizione che fanno gli esempi
dzaima,

4
Riceviamo una taglia per una soluzione in pollo?
Uriel,

Risposte:


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

Provalo online!

I tre valori vengono letti dallo stdin nell'ordine: carne bianca, carne scura, non importa.


17
So che non dovrei votare una sfida per il golf del codice per un codice creato artisticamente, ma ... Questo sembra proprio un tacchino strano nel forno, quindi +1!
Level River St,

1
Osservo la domanda e penso "Non c'è modo che il codice golfizzato possa farlo facilmente", e poi ho visto un tacchino fritto nel forno mentre veniva cucinato e risolto il problema.
MechMK1,

6

APL (Dyalog) , 120 118 104 byte

14 byte salvati grazie a @ Adám

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

Provalo online!

Il bianco esigente e il buio sono a destra, il non esigente a sinistra.

Peccato che la maggior parte del conteggio dei byte sia attualmente presa dalla stringa.

Come?

⍵,⍺++/⍵ - crea una gamma di bianco, scuro e somma di tutti oltre a non piccanti

4 3 7÷⍨ - dividi per quanti di loro ottengono i loro desideri da un pollo

⌈/ - prendi la stima più alta delle tre - quindi se abbiamo una quantità estremamente elevata di cercatori di carne scura, non saranno lasciati da parte

- soffitto, nel caso sia richiesto solo un mezzo pollo

Quindi creiamo una stringa, la racchiudiamo con , quindi ripetiamo la matrice chiusa con cui i polli calcolati volte /e infine concateniamo tutti i polli ,/.


4
+1 per chiamare i polli dei tacchini. Perché è quello che sono, galline glorificate. Comunque delizioso.
J. Sallé,


'='⍪⍨' .-_''/)\=('[4 19⍴10 10⊤¯35+⎕UCS'###(##-:77-&(#F*####+,&0N&&)#,N0Z&d++#']con ⎕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]

Provalo online!

-16 byte grazie a Lynn
-4 byte grazie a Mr. Xcoder

e ritorno a una lambda xD


3

SOGL V0.12 , 65 byte

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

Provalo qui!

Ordine di input è white, darke poi either.



2

Carbone , 76 byte

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

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

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

Stampa un tacchino con rientro di 1 spazio.

×=¹⁹

Stampa la tabella.

NθNη

Inserisci il numero di mangiatori di carne scura e bianca.

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

Ripeti uno in meno del limite massimo di a) un terzo del numero di mangiatori di carne scura b) un quarto del numero di mangiatori di carne bianca c) un settimo del numero di commensali.

C¹⁸¦⁰

Fai una copia del tacchino.


2

Excel VBA, 222 219 211 198 byte

Funzione di finestra immediata VBE anonima che accetta input dalla gamma [A1:C1]con ordine di carne bianca, carne scura e indifferente in quell'ordine e restituisce alla gamma [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)]

Inizialmente la soluzione trova il numero corretto di tacchini e quindi ripete il modello di tacchino più volte. Idealmente, questo verrebbe quindi emesso direttamente nella finestra immediata di VBE, come mostrato dalla funzione seguente

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

Questa versione inizialmente produce la risposta corretta, tuttavia viene immediatamente formattata automaticamente dal compilatore, così come _il carattere di continuazione della linea, e viene quindi spostata per avere solo un carattere (spazio) alla sua sinistra, interrompendo lo schema.

Esempio mostrato sotto per chiarezza

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

Per correggere questo, l'ultimo carattere di spazio ( , carattere 32) prima _che uno in linea dell'output venga sostituito con uno spazio non interrotto (  , carattere 160, Alt + 255)

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

-3 byte per l'uso 1dell'istruzione split delimitata

-8 byte per l'uso spostando =nella divisione e usando l'aggiunta di stringa sopra la concatenazione

-13 byte per l'uso di uno spazio non interrotto per impedire la formattazione automatica dell'output


2

Kotlin , 207 198 byte

grazie a Taylor Scott per -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))}

Questo non funziona ancora su TIO , poiché richiede Kotlin 1.1

Provalo online!


1

JavaScript (ES6), 180 179 byte

Emette un array di stringhe.

(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

Emette una singola stringa.

(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>>4invece di(a+3)/4)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.