추수 감사절


27

내일 11 월 23 일은 미국의 추수 감사절 입니다. 준비하려면 ASCII 칠면조를 요리해야합니다. 그러나 계획이 늦었으므로 준비해야 할 새 수에 도움이되는 프로그램 (또는 기능)이 필요합니다.

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

발견 한 칠면조는 작은면에 있으므로 다음 비율을 알아 냈습니다. 한 칠면조가 먹일 것입니다.

  • 흰 고기 만 좋아하는 네 사람 과 검은 고기 만 좋아하는 세 사람
  • 또는 어느 쪽이든 상관하지 않는 7 명
  • 또는 이들의 조합.

즉, 주어진 칠면조에는 총 4 인분의 흰색 고기와 3 인분의 검은 고기가 있습니다. 또한 칠면조를 구입하여 요리 할 수 ​​없습니다.

예를 들어 흰 고기 만 좋아하는 사람 3 명, 검은 고기 만 좋아하는 사람 6 명, 걱정하지 않는 사람 3 명은 칠면조 2 개가 필요합니다. 그것은 8 인분의 화이트와 6 인분의 다크를 제공하는데, 이는 모든 사람을 만족시키고 남은 흰 살코기를 먹기에 충분합니다.

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

신경 쓰지 않는 20 명의 사람들에게는 칠면조가 3 개 필요하며 약간의 흰색 또는 어두운 남은 음식이 필요합니다.

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

등등.

규칙

  • 세 가지 입력은 원하는 순서로, 어떤 편리한 형식 으로든 가능합니다 . 답변을 입력 한 방법을 알려주십시오.
  • 칠면조 칠면조에 대한 요구 사항은 없을 것이므로 최대 175 명이 먹을 수 있습니다.
  • 문자가 적절하게 정렬되는 경우 선행 / 후행 줄 바꿈 또는 기타 공백은 선택 사항입니다.
  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 콘솔로 출력 할 수 있으며, 문자열 목록으로 반환되거나 단일 문자열로 반환됩니다.
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.

당신의 비율은 나에게 이해가되지 않습니다-당신은 신경 쓰지 않는 7 명의 사람들이 남은 음식을 얻을 수 있지만 칠면조가 3 + 4 + 7 = 14 명 (또는 그 중 하나를 먹일 수 있음)을 쓰는 것으로 보입니다 칠면조는 3 명의 어두운 고기를 먹기에 충분할 것입니다).
dzaima

@dzaima이 예에서 칠면조 1 개에는 흰색 고기 4 인분과 어둠 3 개가있는 것 같습니다. 따라서 (흰 고기 만 좋아하는 사람 4 명과 검은 고기 만 좋아하는 사람 3 명) 또는 선호도가없는 7 명에게 서비스를 제공합니다.
KSmarts

@KSmarts 그것이 저의 의견에서도 말하는 것이지만 텍스트는 그렇게 잘 말하지 않습니다
dzaima

1
칠면조는 어떻게 서로 옆에 놓아야합니까? 현재 답변 중 어느 것도 그 예와는 겹치지 않는 것 같습니다
dzaima

4
우리는 치킨 솔루션에 대한 현상금을 얻습니까?
우리엘

답변:


21

비 펀지-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_@

온라인으로 사용해보십시오!

세 가지 값은 stdin에서 순서대로 읽습니다. 흰 고기, 검은 고기, 상관 없습니다.


17
나는 예술적으로 배치 된 코드에 대한 코드 골프 챌린지를지지하지 않겠다는 것을 알고있다. 그러나 이것은 오븐에있는 괴물 칠면조처럼 보인다. +1!
Level River St

1
나는 그 질문을보고 "골프 코드가 이것을 쉽게 할 수있는 방법이 없다"고 생각하고 오븐에서 요리 된 칠면조가 요리되고 문제를 해결하는 것을 보았다.
MechMK1

6

APL (Dyalog) , 120 (118) 104 바이트

@ Adám 덕분에 14 바이트 절약

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

온라인으로 사용해보십시오!

까다로운 흰색과 어두운 부분은 오른쪽에 있고, 까다 롭지 않은 부분은 왼쪽에 있습니다.

대부분의 바이트 수는 현재 문자열에 의해 너무 나쁩니다.

방법?

⍵,⍺++/⍵ -whity, darky 및 그것들의 합과 비 picky의 배열을 만듭니다.

4 3 7÷⍨ -몇 마리의 닭고기로 소원을 얻는 지 몇 개로 나눕니다.

⌈/ -세 명 중 가장 높은 추정치를 취하십시오-그래서 우리가 매우 많은 양의 검은 고기를 찾는다면, 그들은 버려지지 않을 것입니다

-반 치킨 만 필요한 경우 천장

그런 다음 문자열을 만들고로 묶은 다음 계산 된 닭 시간으로 닫힌 행렬을 반복하고 /모든 닭을로 연결합니다 ,/.


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) 어두운 고기를 먹는 사람 수의 3 분의 1 b) 흰 고기를 먹는 사람의 4 분의 1 c) 식당 수의 1 분의 1을 반복하십시오.

C¹⁸¦⁰

칠면조 사본을 만드십시오.


2

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

이를 정정 하기 _위해 출력의 첫 번째 행 앞 의 마지막 공백 문자 ( , char 32) 가 비 공백 공백 (  , char 160, Alt + 255)으로 바뀝니다.

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

1구분 된 split 문 사용을위한 -3 바이트

=분할로 이동 하고 연결에 문자열 추가 를 사용하는 경우 -8 바이트

비 자동 공간을 사용하여 출력의 자동 서식을 방지하기위한 -13 바이트


2

코 틀린 , 207 198 바이트

-7 바이트의 Taylor Scott 덕분에

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

Kotlin 1.1 이 필요하기 때문에 아직 TIO 에서는 작동하지 않습니다.

온라인으로 사용해보십시오!


1

자바 스크립트 (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)]


자바 스크립트 (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.