쿠키 나에게 코딩 세 문자열

도전

입력에 따라 종류의 ASCII 쿠키를 코딩하십시오.

입력

  • 쿠키 종류. “일반”, “초콜릿”또는 “너트”의 세 문자열 중 하나입니다. 함수 인수, stdin (또는 가장 가까운 해당) 또는 파일 인수 일 수 있습니다.

산출

  • ASCII 쿠키. 아래를 참조하십시오.

이어야한다

     ___
    /   \
    |   |
    \___/

일반 입력의 경우

     ___
    /. .\
    | . |
    \___/

초콜릿 입력, 그리고 마지막으로

     ___
    /^  \
    |^ ^|
    \___/

너트 입력 용.

기타 정보

  • 이것은 나의 첫 번째 도전이며, 가능한 한 간단합니다. 건설적인 피드백에 크게 감사드립니다.
  • 그렇게하는 수단을 사용하십시오.
  • 후행 공백은 좋습니다.
  • 이것은 코드 골프 챌린지이므로 9 일이 지나면 최단 참가작 (2015 년 8 월 12 일 수요일)이 이깁니다.

감사합니다!

우승자는 41 바이트의 Pyth를 사용하는 Jakube입니다. 참여한 모든 분들께 감사합니다. 이제 더 복잡한 과제를 해결해야합니다.



답변

Pyth, 42 41 바이트

X" ___
/d a\\
|cac|
\___/"G.>"^X .  .^"Cz

온라인 사용해보기 : 일반 입력 / 테스트 스위트

설명:

 "..."                      template string
X     G                     replace "a..z" in ^ with:
                   Cz         convert z to an integer (base 256 of ord(char))
       .>"^X .  .^"           rotate "^X .  .^"
                              ["Plain"     -> " .  .^^X",
                               "Chocolate" -> ".  .^^X ",
                               "Nuts"      -> " .^^X . "]


답변

루비, 73

->s{' ___
/'+['^  \
|^ ^','. .\
| . ','   \
|   '][s[0].ord%3]+'|
\___/'}

이것은 익명의 람다 함수입니다. 다음은 테스트 프로그램입니다.

g=->s{' ___
/'+['^  \
|^ ^','. .\
| . ','   \
|   '][s[0].ord%3]+'|
\___/'}

puts g.call(gets)

그것은 쿠키 유형의 첫 글자 (대문자)를 사용하고 범위에서 인덱스를 얻기 위해 modulo 3을 취합니다 0..2. 그런 다음 쿠키를 나타내는 문자열을 적절한 위치에 적절한 문자열과 함께 반환합니다.


답변

파이썬 2.7.6, 99 바이트

def c(t):n=hash(t)%3;return" ___\n/"+" ^."[n]+" "+"  ."[n]+"\\\n|"+[" ","^ ^"," . "][n]+"|\n\\___/"

이 알고리즘은 hash(cookie)%30 일 때 cookie = "Plain", 1 일 때 cookie = "Nut및 2 일 때 를 제공 한다는 사실에 의존합니다 cookie = "Chocolate. 이 코드를 더 짧게 만드는 방법을 아는 사람이 있으면 의견에 알려주십시오.


답변

C : 122

q(char *p){char *t,*m;int i=*p%3;t=i?i%2?". .":"   ":"^  ";m=i?i%2?" . ":"   ":"^ ^";printf(" ___\n/%s\\ \n|%s|\n\\___/",t,m);}

골프를 마친 후 설명.

사용 예 :

 int main(void){
 q("Plain");
 printf("\n");
 q("Nut");
 printf("\n");
 q("Chocolate");
 }


답변

CJam, 49 48 바이트

" ___
/""^  ^ ^. . ."S7*+6/rci=3/"\
|"*"|
\___/"

CJam 통역사 에서 온라인으로 사용해보십시오 .

작동 원리

" ___
/"

e# Push that string.

"^  ^ ^. . ."S7*+6/

e# Push that string, append 7 spaces and split into chunks of length 6.
e# This pushes ["^  ^ ^" ". . . " "      "].

rci

e# Read from STDIN, cast to character, then to integer.
e# "Plain", "Chocolate", "Nuts" -> 'P', 'C', 'N' -> 80, 67, 78

=

e# Select the corresponding element from the array.
e# Arrays wrap around in CJam, so for an array A of length 3,
e# A80= is A2=, A67= is A1= and A78= is A0=.

3/

e# Split into chunks of length 3.

"\
|"*

e# Join those chunks, using that string as separator.

"|
\___/"

e# Push that string.

결국 CJam은 자동으로 스택에 모든 요소를 ​​인쇄합니다.


답변

자바 스크립트 (ES6), 90

s=>" ___\n/"+(s.length-4?s.length-5?". .\\\n| . ":"   \\\n|   ":"^  \\\n|^ ^")+"|\n\\___/"

이것은 익명의 화살표 기능입니다. 입력 길이를 사용하여 그릴 쿠키를 결정합니다.

설명:

s=>
 " ___\n/" +               //build the first part of the cookie

 (s.length - 4 ?           //if the length is 4, this condition will evaluate to 0, which coerces to false. Otherwise it is true

      s.length - 5 ?            //if the length is 5, this evaluates to false; otherwise true

           ". .\\\n| . " :      //build the unique part of the Chocolate cookie, if length was not 5
           "   \\\n|   "        //build the unique part of the Plain cookie, if length was 5

      : "^  \\\n|^ ^"      //build the unique part of the Nuts cookie, if length was 4
 )

 + "|\n\\___/"             //build the last part of the cookie, and implicitly return the built string

테스트하려면 :

f=s=>" ___\n/"+(s.length-4?s.length-5?". .\\\n| . ":"   \\\n|   ":"^  \\\n|^ ^")+"|\n\\___/"

console.log(f("Nuts"))
console.log(f("Plain"))
console.log(f("Chocolate"))


답변

브레인 퍽, 481 447 436 바이트

왜 BrainFuck이 아닌가? 프로그램이 더 골프를 칠 수는 있지만 꽤 깔끔하다고 생각합니다.

,>++++++[-<---------->]<-------[----------->>>-<<+<[-->->+<<]]>>>+>>++.<+++++++++[->>>>>>>++++++++++<+++++<++++++++++++++<++++++++++<+++++<++++++++++<+++<]++++++++++>+++.>+++++...>++>++>-->+>++++<<<<<<<.<<<[->>>>>>.>>>.<<<<<.>>>>>.<<.<<<<.>>>>>.<<<<.>>>>>.<<<<<.>>>>.<<<<<.>>>>.<<...>.<<<<<<]>[->>>>>.<<...>>>.<<<<.>>>>>.<<<<...>>>>.<<<<<.>>>>.<<...>.<<<<<]>[->>>>.>>>>.<<<<<<..>>>.<<<<.>>>>>.>>.<<<<<<.>>>>>>.<<.<<<<<.>>>>.<<...>.<<<<]