感謝祭


27

明日、11月23日は、米国の感謝祭です。準備するには、ASCII七面鳥を調理する必要があります。ただし、計画が遅れているため、準備が必要な鳥の数を支援するプログラム(または機能)が必要です。

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

あなたが見つけた七面鳥はむしろ小さい側にあるので、あなたは次の比率を理解しました-1つの七面鳥が餌をやります:

  • 白身の肉だけが好きな4人と、黒身の肉だけが好きな3人
  • または、どちらの方法でも構わない7人
  • またはその組み合わせ。

つまり、七面鳥には合計4食分の白身と3食分の黒身があります。さらに、部分的な七面鳥を購入して調理することはできません。

たとえば、白身の肉だけが好きな3人、黒身の肉だけが好きな6人、気にしない3人の場合、七面鳥が2匹必要です。これにより、8サービングの白と6サービングのダークが得られます。これは、誰もが満足し、残りの白い肉を食べるのに十分です:

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

気にしない20人には、3匹の七面鳥が必要で、残りの白または黒が少し残っています。

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

等々。

ルール

  • 3つの入力は、選択した任意の順序で、任意の便利な形式にすることができます。入力がどのように行われるかを答えてください。
  • 25頭を超える七面鳥を飼う必要はありません(最大175人が餌を食べます)。
  • 文字が適切に整列している場合、先頭または末尾の改行またはその他の空白はオプションです。
  • 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。
  • コンソールへの出力、文字列のリストとして返される、単一の文字列として返されるなど。
  • 標準的な抜け穴は禁止されています。
  • これはので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

あなたの比率は私にはあまり意味がありません-あなたは気にしない7人が残り物を得るだけであることを暗示しているようですが、七面鳥は3 + 4 + 7 = 14人(またはその人を養うことができると書いているようです七面鳥は3匹の黒肉を食べるだけで十分かもしれません)。
dzaima

@dzaima例から、1つの七面鳥には4食分の白肉と3食分の黒肉があるようです。そのため、(白身の肉だけが好きな4人と黒身の肉だけが好きな3人)または好みのない7人にサービスを提供しています。
KSmarts

私はあまりにも私のコメントで言っているが、テキストはそのうまく言っていない何@KSmarts
dzaima

1
七面鳥をどのように並べて置くべきですか?現在の答えのどれも例が行うということの重なりを持っていないようだ
dzaima

4
ニワトリの解決策に報奨金をもらえますか?
ウリエル

回答:


21

Befunge-93、231の 224バイト

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

オンラインでお試しください!

3つの値はstdinから順番に読み取られます:白身、黒身、気にしない。


17
私は芸術的にコードをレイアウトするためのコードゴルフチャレンジに賛成するつもりはないことを知っていますが...これはたまたまオーブンの中で奇妙な七面鳥のように見えるので、+ 1です!
レベルリバーセント

1
私は質問を見て、「ゴルフのコードでこれを簡単に行う方法はありません」と考え、オーブンでフリッキーターキーが調理されて問題を解決するのを見ました。
MechMK1

6

APL(Dyalog) 120の 118 104バイト

@Adámのおかげで14バイト節約

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

オンラインでお試しください!

うるさい白と暗い色が右側に、非うるさい色が左側にあります。

残念なことに、現在のバイトカウントのほとんどは文字列によって取得されています。

どうやって?

⍵,⍺++/⍵ -白っぽい、暗い、そしてそれらすべての合計と非うるさいの配列を作成します

4 3 7÷⍨ -1羽の鶏から彼らの希望を得る数で割る

⌈/ -3つのうち最も高い推定値を使用します。したがって、非常に大量のダークミートシーカーがいる場合、それらは無視されません。

-半鶏だけが需要がある場合の天井

次に、文字列を作成し、で囲み、計算された鶏をで閉じた行列をで繰り返し、/最後にすべての鶏をで連結し,/ます。


4
七面鳥の鶏を呼ぶための+1。それは彼らが何であるか、鶏を美化したからです。それでも美味しい。
J.サール


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




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)暗い肉を食べる人の数の3分の1の上限の1つ未満を繰り返します。b)白い肉を食べる人の数の4分の1 c)食事の数の7分の1

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

このバージョンは最初は正しい応答を生成します_が、行継続文字と同様にコンパイラーによってすぐに自動フォーマットされるため、左側に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
      .---.   _         .---.   _         .---. _
    .'     './ )      .'     './ )      .'     './ )  
   /   _   _/ /\     /   _   _/ /\     /   _   _/ /\  
 =(_____) (__/_/== =(_____) (__/_/== =(_____) (__/_/==
=======================================================

これを修正するには、出力のインライン1の前の最後のスペース文字(、char 32)を_非改行スペース( 、char 160、Alt + 255)に置き換えます

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

1区切られた分割ステートメントを使用する場合は-3バイト

=分割に移動し、連結上で文字列の追加を使用する場合は-8バイト

出力の自動フォーマットを防止するために、改行なしスペースを使用する場合は-13バイト



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.