노래하는 아기 상어


68

"베이비 상어"는 상어 가족에 대한 어린이 노래입니다. 모닥불 노래로 오랫동안 인기를 얻은이 노래는 2000 년대 중반부터 소셜 미디어, 온라인 비디오 및 라디오를 통해 대중화되었습니다. - 위키 백과

입력하지 않고 다음 텍스트를 표준 출력 또는 임의의 파일에 쓰는 프로그램을 작성하십시오.

Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark!
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark!
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark!
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark!
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark!

이것은 코드 골프입니다. 가장 짧은 코드가 승리합니다.

Reddit ^ 1 ^ 2 에서 이것을 발견 했으며 골프에 대한 흥미로운 도전처럼 보입니다.

업데이트 :

스탠자 사이에 줄 바꿈이 없으므로 너무 쉽습니다. :)

선행 / 트레일 링 개행은 괜찮습니다.


6
각 스탠자 (각 상어) 사이의 줄 바꿈이 허용됩니까? (저는 항상 가사가 쓰여진 것을 보았습니다)
Quintec

6
어, 수영에 관한 모든 구절과 상어 공격으로 팔다리를 잃어버린 구절을 몇 개 잃었습니다.
mbomb007

2
"doo doo doo doo doo doo"는 실제로 지나치게 단순화되었습니다.
R ..

26
부모로서 저는 이것을 내려 놓으라는 강한 충동을 느낍니다. Stack Exchange가 작동하지 않기 때문에 충동을 억누르고 있습니다. 하지만 오늘 나중에 "doo doo doo doo"라는 허밍을 발견하면 여기로 돌아와서 책임을지게됩니다!
Cort Ammon

5
이것이 HNQ에 있다고 지금 얼마나 많은 사람들이 망쳤습니까?
CactusCake

답변:



74

이모 지 코드, 292 바이트 (140 자)

🏁🍇🔤Baby🔤➡️b🔤Daddy🔤➡️y🔤Mommy🔤➡️o🔤Grandpa🔤➡️g🔤Grandma🔤➡️a🔤 Shark🔤➡️s🔤 doo🔤➡️d🍨b y o g a🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀🍪m s d d d d d d🍪️❗️🍉😀🍪m s🔤!🔤🍪❗️🍉🍉

그것을 실행

확장 :

🏁🍇
  🔤Baby🔤 ➡️ b
  🔤Daddy🔤 ➡️ y
  🔤Mommy🔤 ➡️ o
  🔤Grandpa🔤 ➡️ g
  🔤Grandma🔤 ➡️ a
  🔤 Shark🔤 ➡️ s
  🔤 doo🔤 ➡️ d
  🍨b y o g a🍆➡️f
  🔂m f🍇
    🔂i🆕⏩⏩0 3❗️🍇
      😀🍪m s d d d d d d🍪️❗️
    🍉
    😀🍪m s🔤!🔤🍪❗️
  🍉
🍉

설명 ( 이모 지 코드 문서 별) :

🍇🍉

a {와 동일 }(예 : 코드 블록)

🏁

"프로그램 시작"(예 int main())

🔤Baby🔤 ➡️ b

변수 할당 (예를 들어 const char* b = "Baby";)

🍨b y o g a🍆➡️f

사이 값의리스트를 작성하고 🍨 🍆 및 할당 말한다 (➡️)에 f(예 const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

이 라인의 요소 루프라고 f별칭을 사용하여 m(가), ...🍇와 🍉 사이의 코드입니다.

🔂 i 🆕⏩⏩ 0 3❗️🍇 ... 🍉

이 줄은 [0,3) 범위를 반복하며, 여기서 ...🍇과 🍉 사이의 코드입니다.

😀🍪 ... 🍪️❗️

이 줄에 지정된 형식을 인쇄 말한다 ...(예를 들어 printf("%s\n");)

코드는 C로 번역되었습니다.

#include <stdio.h>

int main() {
  const char* b = "Baby";
  const char* y = "Daddy";
  const char* o = "Mommy";
  const char* g = "Grandpa";
  const char* a = "Grandma";
  const char* s = " Shark";
  const char* d = " doo";
  const char* f[] = {b,y,o,g,a};
  int m = 0, i = 0;
  for (; m < 5; ++m) {
    for (i = 0; i < 3; ++i) {
      printf("%s%s%s%s%s%s%s%s\n", f[m], s, d, d, d, d, d, d);
    }
    printf("%s%s!\n", f[m], s);
  }
  return 0;
}

그 후, 원본 코드 (후손을 위해 게시 됨)에는 몇 가지 문제가있었습니다. 대부분 🏁🍇🍉 블록은 블록을 실행하려는 사람들에게는 포함되지 않았으며 그림 이모티콘은 실제로 제대로 이스케이프되지 않았습니다.

원본이 실행되도록 수정 : Emojicode, 224 바이트 (67 자)

🏁🍇🍨🔤👶🔤🔤👨🔤🔤🤱🔤🔤👴🔤🔤👵🔤🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀🍪m🔤🦈💩💩💩💩💩💩🔤🍪️❗️🍉😀🍪m🔤🦈!🔤🍪❗️🍉🍉

확장 :

🏁🍇
  🍨
    🔤👶🔤
    🔤👨🔤
    🔤🤱🔤
    🔤👴🔤
    🔤👵🔤
  🍆 ➡️ f
  🔂 m f 🍇
    🔂 i 🆕⏩⏩ 0 3❗️🍇
      😀🍪m🔤🦈💩💩💩💩💩💩🔤🍪️❗️
    🍉
    😀🍪m🔤🦈!🔤🍪❗️
  🍉
🍉

출력을 생성합니다.

👶🦈💩💩💩💩💩💩
👶🦈💩💩💩💩💩💩
👶🦈💩💩💩💩💩💩
👶🦈!
👨🦈💩💩💩💩💩💩
👨🦈💩💩💩💩💩💩
👨🦈💩💩💩💩💩💩
👨🦈!
🤱🦈💩💩💩💩💩💩
🤱🦈💩💩💩💩💩💩
🤱🦈💩💩💩💩💩💩
🤱🦈!
👴🦈💩💩💩💩💩💩
👴🦈💩💩💩💩💩💩
👴🦈💩💩💩💩💩💩
👴🦈!
👵🦈💩💩💩💩💩💩
👵🦈💩💩💩💩💩💩
👵🦈💩💩💩💩💩💩
👵🦈!

그것을 실행

단어를 나타내는 개별 이모티콘이있는 곳 :

👶 -> Baby
👨 -> Daddy
🤱 -> Mommy
👴 -> Grandpa
👵 -> Grandma
🦈 -> Shark
💩 -> doo

원본 : Emojicode, 138 바이트 (47 자)

🍨👶👨🤱👴👵🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀m🦈💩💩💩💩💩💩❗️🍉😀m🦈!❗️🍉

확장 :

🍨👶👨🤱👴👵🍆➡️f
🔂m f🍇
  🔂 i 🆕⏩⏩ 0 3❗️🍇
    😀 m 🦈💩💩💩💩💩💩❗️
  🍉
  😀 m 🦈!❗️
🍉

31
창의성에 대한 포인트, 그러나 이것은 필요한 결과를 산출하지 않습니다
Jo King

15
사이트에 오신 것을 환영합니다! JoKing이 진행됨에 따라 답변이 여기에서 묻는 것과 정확히 일치해야합니다. 이는 도전에 대한 귀하의 해석이 독창적이지만이 답변은 정확한 결과를 산출하도록 수정되거나 삭제되어야 함을 의미합니다.
밀 마법사

12
이 답변은 독창적이지만 챌린지의 요구 사항을 따르지 않으므로 유효하지 않습니다. 챌린지에 명시된대로 텍스트를 정확하게 출력해야합니다.
Mego

8
이 답변을 수정하여 올바른 출력을 생성하거나 삭제하십시오.
mbomb007

6
사이트에 오신 것을 환영합니다! 이 코드를 온라인 으로 실행 하려고 하면 오류가 발생합니다. (94 자 대신 98 자까지 계산합니다). 뭔가 빠졌습니까?
DJMcMayhem

31

IBM PC DOS, 8088 어셈블리, 115 114 109 108 바이트

bd43 01e8 1600 bd48 01e8 1000 bd4e 01e8 0a00 bd54 01e8 0400 c646 056d b409 b103
8bd5 cd21 ba5c 01cd 21e3 1249 b306 ba63 01cd 214b 75fb ba69 01cd 21eb e3ba 6801
cd21 c342 6162 7924 4461 6464 7924 4d6f 6d6d 7924 4772 616e 6470 6124 2053 6861
726b 2420 646f 6f24 210d 0a24

미 조립 :

    MOV  BP, OFFSET BABY        ; Baby Shark
    CALL VERSE
    MOV  BP, OFFSET DADDY       ; Daddy Shark
    CALL VERSE
    MOV  BP, OFFSET MOMMY       ; Mommy Shark
    CALL VERSE
    MOV  BP, OFFSET GRAND       ; Grandpa/ma Shark
    CALL VERSE
    MOV  BYTE PTR [BP+5], 'm'   ; change 'p' to 'm'                 
                                ; fall through for last VERSE                               

; display a shark verse
; input: BP: address of shark name string
; output: display full verse for shark
VERSE   PROC
        MOV  AH, 9              ; DOS API display string function
        MOV  CL, 3              ; loop verse three times
LOOP_VERSE:
        MOV  DX, BP             ; load shark name from BP
        INT  21H                ; display shark name
        MOV  DX, OFFSET SHARK   ; load 'Shark'
        INT  21H                ; display 'Shark'
        JCXZ LAST_VERSE         ; if last verse, skip to !
        DEC  CX                 ; decrement verse count
        MOV  BL, 6              ; loop 'doo' 6 times
        MOV  DX, OFFSET DOO     ; load 'doo' string
LOOP_DOO:
        INT  21H                ; display 'doo'
        DEC  BX                 ; decrement doo count
        JNZ  LOOP_DOO           ; if not zero, start again
        MOV  DX, OFFSET CRLF    ; load CRLF string
        INT  21H                ; display CRLF
        JMP  LOOP_VERSE
LAST_VERSE:
        MOV  DX, OFFSET BANG    ; display !, CRLF
        INT  21H
        RET
VERSE   ENDP

BABY    DB  'Baby$'
DADDY   DB  'Daddy$'
MOMMY   DB  'Mommy$'
GRAND   DB  'Grand'
PA      DB  'pa$'
SHARK   DB  ' Shark$'
DOO     DB  ' doo$'
BANG    DB  '!'
CRLF    DB  0DH,0AH,'$'

산출

DOS DIR, 상어

SHARK.COM을 다운로드하십시오!

  • @Deadcode 덕분에 -5 바이트

6
당신은 절대 미치광이입니다.
MGOwen

5
당신이 말했을 때 Download SHARK.COM!, 나는 즉시 컴퓨터 바이러스를 생각했습니다.
MilkyWay90

농담하는 @gwaugh
MilkyWay90

@gwaugh 그러나 그것은 109 바이트입니다
MilkyWay90


16

05AB1E , 50 41 바이트

“‡ÍÊТ×myîºpaîºma“#ð«'㢫™v…doo6иyšÐy'!«»

마지막 부분 v4FN3Qiy'!«ë…doo6иyšðý},은 확실히 약간 골프를 칠 수 있습니다. 그리고 @Emigna 덕분에 -9 바이트가 옳았습니다 .

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

설명:

“‡ÍÊТ×myîºpaîºma # Push dictionary string "baby daddy mommy grandpa grandma"
 #                 # Split by spaces: ["baby","daddy","mommy","grandpa","grandma"]
  ð«               # Append a space to each
    '㢫          '# Append dictionary string "shark" to each
                  # Title-case each word
v                  # Loop `y` over these strings
 doo              #  Push string "doo"
     6и            #  Repeat it 6 times as list
       yš          #  Prepend the string `y` at the front of the list
         Ð         #  Triplicate this list
 y'!«             '#  Push string `y`, concatted with a "!"
 »                 #  Join everything on the stack by newlines
                   #  (and each list implicitly by spaces)
                   # (and after the loop, output the result implicitly)

내이 05AB1E 팁을 참조하십시오 (섹션 어떻게 사전을 사용하는 방법을? ) 이유를 이해하는 “‡ÍÊТ×myîºpaîºma“것입니다 "baby daddy mommy grandpa grandma"하고 'ã¢있다 "shark".


2
v…doo6иyšÐy'!«»
Emigna

@Emigna 당신은 심지어 내가 예상했던 것보다 더 많은 골프를했습니다, 감사합니다! 세 번 사용하는 현명한 방법 »!
Kevin Cruijssen

14

PowerShell, 88 86 85 80 79 76 바이트

@mazzy 덕분에 -5 바이트 @Joey 덕분에
-1 바이트 @AdmBorkBork 덕분에
-3 바이트

echo Baby Daddy Mommy Grandpa Grandma|%{,(($a="$_ Shark")+" doo"*6)*3;"$a!"}

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

우리는 분명히 먼 길을 왔습니다.

PowerShell (텍스트 음성 변환 포함), 156 바이트

이것은 사양에 달려 있지 않지만 다소 재미 있습니다. 아이디어에 대한 @rkeet에게 감사합니다!

Add-Type -a System.Speech;echo Baby Daddy Mommy Grandpa Grandma|%{(New-Object Speech.Synthesis.SpeechSynthesizer).Speak((($a="$_ Shark")+" doo"*6)*3+" $a")}

.NET 텍스트 음성 변환 발음은 ... 음 ... 흥미 롭습니다. 들을 때 이것을 명심하십시오. 즐겨!


2

1
"$_ Shark"변수 에 할당 하고 재사용하여 다른 바이트를 저장할 수 있습니다 .
Joey

2
echo대신 76 바이트를 사용 합니다 -split.
AdmBorkBork

1
난 당신이뿐만 아니라 거기에 "연설에 텍스트"해야한다고 생각합니다 : 그것은 그것을 조금을 결합하는 시도의 지옥에 대한 페이지를 이 코드를 꽤 작업 :-)를하지 않았다
rkeet

@rkeet Challenge를 수락했습니다! 나는 현재 이것을 수수께끼로 만들고 있습니다.
가브리엘 밀스


9

레티 나 0.8.2 , 77 75 74 바이트


Baby¶Daddy¶MommyGpaGma
G
¶Grand
.+
$&s$&s$&s$&S!
s
S6$*O¶
O
 doo
S
 Shark

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


Baby¶Daddy¶MommyGpaGma
G
¶Grand

관계를 별도의 줄에 삽입하십시오.

.+
$&s$&s$&s$&S!¶

네 줄로 확장하십시오.

s
S6$*O¶
O
 doo
S
 Shark

자리 표시자를 확장합니다.

레티 나 69의 68 바이트 :


Baby¶Daddy¶MommyGpaGma
G
¶Grand
.+
$& Shark
.+
3*$($&6*$( doo)¶)$&!

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


Baby¶Daddy¶MommyGpaGma
G
¶Grand

관계를 별도의 줄에 삽입하십시오.

.+
$& Shark

상어를 각각 추가하십시오.

.+
3*$($&6*$( doo)¶)$&!

전체 구절로 확장하십시오.


9

파이썬 3, 105 97 96 바이트

for x in"Baby","Daddy","Mommy","Grandpa","Grandma":z=x+' Shark';print((z+' doo'*6+"\n")*3+z+"!")

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

간단한 Python 3 솔루션. (Jo King과 Quintec이 9 바이트 절약)


2
괄호 ' doo'*6는 불필요하며 불필요한 공백이 있습니다
Quintec

1
quintec의 말 : 97 바이트
Jo King

2
@ReverseCold 기술적 []으로 목록이 아닌 튜플은 없지만이 프로그램과 관련이 없습니다.
Stephen

2
x+' Shark'변수 로 설정 하여 96 바이트
Jo King

1
이것은 2.7에서도 작동하는 것 같습니다.
uhoh

9

하스켈 , 122 113 108 106 104 바이트

s=" Shark";m=do x<-words"Baby Daddy Mommy Grandpa Grandma";("aaa">>x++s++(s>>" doo")++"\n")++x++s++"!\n"

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

  • "aaa">>x길이가 3 x인 것처럼 3 번 복제합니다 "aaa".

  • s>>" doo"길이가 6 " doo"인 것처럼 6 번 복제합니다 " Shark"!

  • @Fox 덕분에 2 바이트 절약

  • @Laikoni 덕분에 2 바이트 절약

2
사이트에 오신 것을 환영합니다! 우리는 허용 하는 식으로 고정 출력 열을 생성 , 그래서 당신은 생략 할 수 있습니다 main=putStr. Haskell 규칙 요약 도 참조하십시오 .
xnor

1
PPCG에 오신 것을 환영합니다. 와 함께 저장하는 것이 s>>좋습니다.
얽히고 설킨

@xnor 링크를 주셔서 감사합니다!
starsandspirals

1
m=(stuff)단지 할 수있다 m=stuff이 적은 바이트
폭스

1
do-notation 을 사용하여 104 바이트 : 온라인으로 사용해보십시오!
Laikoni

7

펄 6 , 79 78 바이트

(<Baby Daddy Mommmy Grandpa Grandma>X~" Shark"X~ |((" doo"x 6)xx 3),'!')>>.say

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

꽤 간단합니다.

설명:

 <...>X~                                  # Combine family members
        " Shark"X~                        # With "Shark" and
                   |((" doo"x 6)xx 3)     # doo repeated 6 times then 3 times
                                     ,'!' # Then !
(                                        )>>.say  # And print each line

7

자바 스크립트, 104 바이트

따라야 할 더 많은 골프.

_=>`Baby
Daddy
Mommy
Grandpa
Grandma`.replace(/.+/g,x=>(s=(x+=` Shark`)+` doo`.repeat(6)+`
`)+s+s+x+`!`)

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


1
기술적으로는 파일에 쓰거나 기록하지 않기 때문에 유효한 솔루션이 아닙니다. 로 래핑하여 올바른 솔루션으로 console.log()만들면 람다 선언이 아닌 (10 자의 이득)
Delioth

3
이 사이트 에서는 함수에서 돌아 오는 @Delioth가 완벽하게 유효합니다. 기본 I / O 규칙에 대해서는 메타를 살펴보십시오.
Shaggy

2
나는 일반적으로 동의하지만,이 질문은 프로그램이 다음과 같은 텍스트를 "표준 출력 또는 임의의 파일에
씁니다

7

bash, 78 바이트

printf %s\\n {Baby,Daddy,Mommy,Grand{p,m}a}\ Shark{" `echo doo{,,}{,}`"{,,},!}

TIO

후행 공백이 허용되는 경우 73 바이트

echo '
'{Baby,Daddy,Mommy,Grand{p,m}a}\ Shark{" `echo doo{,,}{,}`"{,,},!}


5

> <> , 158 115 바이트

Jo King 덕분에 많은 바이트를 절약했습니다.

>4>1-&0'krahS '0l3-.
~ ^oa~<
ooo:?!/1-'ood 'o
\ao'!'^?$6:&~
\!?:o
^'ybaB'
^'yddaD'
^'ymmoM'
^'apdnarG'
^'amdnarG'
;

온라인으로 사용해보십시오! fishlanguage.com에 코드를 붙여 넣어 수영 하는 애니메이션을 볼 수도 있습니다 .


121 바이트 , 주로 baby / daddy / ...를 한 줄 대신 여러 줄로 재 배열합니다. 골프가 더 있습니다
Jo King


@ 조킹 아, 감사합니다. 나는 줄 수가 적을수록 좋다고 생각하는 경향이 있지만 (이 경우에는 문자열 길이가 다르기 때문에 사실이 아닙니다.)
DLosc

5

PostgreSQL을, 162 (156) 138 바이트

select a||' Shark'||replace(b,'1',repeat(' doo',6))from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[])a,unnest('{1,1,1,!}'::text[])b

언 골프

select 
    a || ' Shark' || replace(b,'1',repeat(' doo',6))
from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[]) a
    ,unnest('{1,1,1,!}'::text[]) b

덕분에 6 24 바이트를 절약 했습니다 @Nahuel Fouilleul!

  • ||대신에 사용concat()
  • unnest('{foo,bar}'::text[])대신에 사용regexp_split_to_table('foo,bar')

DB <> 바이올린


1
||concat 대신 사용하여 -6 바이트 보기 DB Fiddle에서보기
Nahuel Fouilleul

1
select a||' Shark'||replace(b,'1',repeat(' doo',6))from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[])a,unnest('{1,1,1,!}'::text[])b
Nahuel Fouilleul

5

하스켈 , 97 바이트

unlines[x++s++p|x<-words"Baby Daddy Mommy Grandpa Grandma",p<-[a,a,a,"!"]]
s=" Shark"
a=s>>" doo"

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

이것은 starsandspirals에 의한 Haskell 솔루션 의 최적화입니다 . 새로운 트릭은 내부 루프를 사용하여 각 스탠자의 행을 반복하고을 사용하여 행을 결합하여 개행을 명시 적으로 삽입 할 필요가 없도록하는 것입니다.unlines

네 줄의 접미사는 [a,a,a,"!"]어디 a됩니다 " doo"로 6 회를 복제 a=s>>" doo"starsandspirals 영리 6 문자 길이를 재사용 곳 s=" Shark". 글쓰기 [a,a,a,...]는 약간 어리석은 것처럼 보이지만 더 짧은 방법은 없습니다.

list-monad 버전은 길이는 같지만 멋지게 보입니다.

unlines$(++).(++s)<$>words"Baby Daddy Mommy Grandpa Grandma"<*>[a,a,a,"!"]
s=" Shark"
a=s>>" doo"

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



4

R , 131 (122) 120 바이트

주세페 덕분에 -9 바이트

-2 바이트 더, 주세페

`?`=c
s="Shark"
for(x in "Baby"?"Daddy"?"Mommy"?"Grandpa"?"Grandma")cat(rep("
"?x?s?rep("doo",6),3)?"
"?x?paste0(s,"!"))

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

실제로 R이 문자열 처리에 다소 열악한 점에서 이것을 자랑스럽게 생각합니다. 나는을 사용하기 시작 cat(sapply(...))했지만 for 루프가 몇 바이트를 면도한다는 것을 깨달았습니다.

남용 "?"=c크게하는 것은 필요 괄호의 양을 감소시켰다.

나는 또한 "*"=rep스탠자와 "doos"의 개별 라인을 반복 하려고 시도했지만 바이트를 줄이지 않았습니다.

111 바이트

간격 문제를 해결하는 Giuseppe 및 ASCII 전용의 대안 (및 더 나은) 솔루션.

write(paste0(rep(c("Baby","Daddy","Mommy","Grandpa","Grandma"),,,4)," Shark",c(rep(strrep(" doo",6),3),"!")),1)

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



언제나 그렇듯이 현명한 의견 @Giuseppe에 감사드립니다. 나는 그 골프를 알아 차렸다
Sumner18


1
@Giuseppe 와우, 벡터화, 멋지다. R이 이와 같은 멋진 벡터화를 잊어 버렸습니다. 114? 114?
ASCII 전용




3

R , 126125 바이트

cat(paste(rep(c("Baby","Daddy","Mommy","Grandpa","Grandma"),,,4),c(rep("Shark doo doo doo doo doo doo",3),"Shark!")),sep="
")

이것은 CT Hall 이나 Sumner18 의 대답 만큼 '영리한'느낌은 아니지만 변수 정의의 오버 헤드를 피함으로써 더 작아집니다.

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

편집 : Jonathan Frech의 의견에 따라 캐리지 리턴을 사용하여 1 바이트를 저장했습니다.


PPCG에 오신 것을 환영합니다! 솔루션을 더 잘 비교하기 위해 언급 한 사용자의 답변에 대한 링크를 추가했습니다. 아웃 고 프링을 축하합니다. 온라인 테스트 환경에 링크를 추가하여 쉽게 확인할 수 있습니까?
Jonathan Frech

@JonathanFrech를 편집 해 주셔서 감사합니다. 이제 코드를 온라인으로 테스트하는 링크를 추가했습니다 (응답에 바이트가 추가되었습니다!).
BobbyBean

\n바이트 수를 다시 낮추는 대신 실제 줄 바꿈을 사용할 수 있습니다 .
Jonathan Frech


1
글쎄, 나는 완전히 외향적이었다; 때로는 가장 간단한 옵션이 가장 좋습니다. 또한 R에서 현으로 작업하는 것이 얼마나 어려운지를 강조합니다.
CT Hall

3

R , 139 (138) 137 바이트

s='Shark';d='doo';cat(paste(rep(c('Baby','Daddy','Mommy','Grandpa','Grandma'),e=4),c(rep(paste(s,d,d,d,d,d,d),3),paste0(s,'!'))),sep='
')

아마도 'doo 's를 수행하는 더 좋은 방법이 있지만 얻을 수 없었습니다.

편집 :
JDL의 제안에서 '\ n'을 실제 줄 바꿈으로 대체했습니다.
주세페의 제안에서 후행 줄 바꿈을 제거했습니다.

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


ppcg에 오신 것을 환영합니다! 최소한 "\ n"을 리터럴 개행 문자로 바꾸면 1 바이트가 절약됩니다.
JDL

고마워, 나는 그렇게하고 내 출력이 조금 떨어져 있음을 깨달았으므로 슬프게도 더 많은 바이트를 얻었습니다.
CT 홀

여분의 바이트에 대해 줄 바꿈 줄이 있다고 생각합니다
Giuseppe

3

whenyouaccidentallylose100endorsementsinnationstates - 123,065 121,716 113,695 100,889 98,554 바이트

프로그램

나중에 골프를하겠습니다. 끝난.

이 골프를 나중에하겠습니다 .

나중에 더 골프를하겠습니다. 끝난.

나중에 바이트 수를 5 자리로 가져옵니다.

바이트 수를 4 자리로 가져옵니다 (가능한지 모르겠지만 현재 접근 방식으로 3 자리를 얻는 것이 불가능하다는 것을 알고 있습니다).


이게 대체 뭐야? 나는 그것을 좋아한다
Adrian Zhang 1

@AdrianZhang 프로그래밍하기 어려운 프로그래밍 언어입니다. 또한 프로그램은 비명을 지르는 것처럼 보입니다 ( 'AAAAAAAAAAA ...')
MilkyWay90

3

C (gcc) , 123122 바이트

ceilingcat 덕분에 -1 바이트

#define A" doo doo"
f(i){for(i=20;i--;)printf("%.7s Shark%s\n","GrandmaGrandpaMommy\0 Daddy\0 Baby"+i/4*7,i%4?A A A:"!");}

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


C의 규칙은 무엇입니까? 필요 없음 main(), 또는 #include에 대한 printf?
BoBTFish

@BoBTFish : C- 특정은 아니지만 일반적으로 모든 함수를 사용할 수 있습니다 (이름은 중요하지 않습니다. 실제로 이름이없는 람다 또는 이와 유사 할 수 있습니다). 그리고 언어는 (임의의) 구현으로 정의됩니다. 왜냐하면 작동하기 때문에 gcc(경고 만 생성하지만 잘 컴파일됩니다) 유효합니다.
ბიმო

#include여전히 C ++로 컴파일 중이기 때문에 부족하다는 것은 오류 일 뿐이지 만 함수의 이름을 바꾸지 않고 컴파일 할 수는 없었습니다 main.
BoBTFish

2

cQuents , 93 89 바이트

|
#20&bk)~" Shark"~(" doo"6,Z,Z,bk)~" Shark!"
:"Baby","Daddy","Mommy","Grandpa","Grandma"

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

게시 시점에서 TIO는 최신 버전으로 업데이트되지 않으므로 TIO 링크가 작동하지 않을 수 있습니다.

설명

|                               Set delimiter to newline
#20                             n = 20
   &                            Output first n terms in sequence
                                k = 1
                                First term is
    bk)~" Shark"                 kth term from the third line concatenated to " Shark"
                ~(" doo"6,        concatenated to " doo" repeated 6 times
Z,Z,                            Second and third terms equal the first term
    bk)~" Shark!"               Fourth term is the kth term from the third line concatenated to " Shark!"
                                k += 1, restart

Third line                      5 terms, each a string

2

자바 스크립트 (Node.js) , 132 바이트

아마 골프를 할 수있을 것입니다. "doo doo"줄을 생성 한 다음 "!" 선을 긋고 상어마다 이것을 반복합니다.

a=""
c=" doo"
for(b of["Baby","Daddy","Mommy","Grandpa","Grandma"]){b+=" Shark"
t=b+c+c+c+c+c+c+"\n"
a+=t+t+t+b+"!\n"}console.log(a)

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


Javascript에서 약간 변경된 솔루션이지만 얻는 것은 없습니다 : a = ""; c = "doo"; for (b of [ "Baby", "Daddy", "Mommy", "Grandpa", "Grandma"]) {b + = "상어"; t = b + c.repeat (6) + "\ n"; a + = t + t + t + b + "! \ n"} console.log (a)
BogdanBiv

2

jq, 87 자

" Shark"as$s|("Baby Daddy Mommy Grandpa Grandma"/" ")[]|(.+$s+" doo"*6+"\n")*3+.+$s+"!"

샘플 실행 :

bash-4.4$ jq -nr '" Shark"as$s|("Baby Daddy Mommy Grandpa Grandma"/" ")[]|(.+$s+" doo"*6+"\n")*3+.+$s+"!"'
Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark!
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark!
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark!
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark!
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark!

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


2

일반 TeX, 147 바이트

\input pgffor\def\D{doo~}\def\d{\D\D\D\D\D\D}\def\S{Shark}\def\y{\x~\S~\d\par}\foreach\x in{Baby,Mommy,Daddy,Grandma,Grandpa}{\y\y\y\x~\S!\par}\bye

오히려 실망 스럽지만 TeX 답변을 연령대에 게시하지 않았습니다. teX에서 루프는 매우 장황합니다.


2

PHP , 153 147 바이트

<?php $s='Shark';$d=str_pad('',23,'doo ');foreach(explode(' ','Baby Daddy Mommy Grandpa Grandma')as$a){echo str_repeat("$a $s $d\n",3),"$a $s!\n";}

지적으로 6 바이트를 저장하는 @manatwork 덕분에 str_pad('',23'doo ');보다 짧은rtrim(str_repeat('doo ',6));

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


불행히도 $d='doo doo doo doo doo doo'rtrim()+ str_repeat()조합 보다 짧습니다 . :( 그러나 다행히도 $d=str_pad('',23,'doo ')더 짧습니다. 더 많은 최적화 팁 은 PHP에서 골프를위한 팁을 참조하십시오 .
manatwork

@manatwork 지적 해 주셔서 감사합니다. 게시물을 업데이트했습니다
EvanBarbour3

1
그동안 약간 더 많은 시간을 할애 했습니다.
manatwork

113 바이트 . PPCG에 오신 것을 환영합니다!
얽히고 설킨

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.