Sing Baby Shark

68

"Baby Shark" ist ein Kinderlied über eine Haifamilie. Es war lange Zeit als Lagerfeuersong beliebt und wurde seit Mitte der 2000er Jahre durch soziale Medien, Online-Videos und Radio populär gemacht. - Wikipedia

Schreiben Sie ein Programm, das keine Eingabe benötigt, und schreiben Sie den folgenden Text in die Standardausgabe oder in eine beliebige Datei:

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!

Dies ist Code Golf - der kürzeste Code gewinnt.

Fand dies auf Reddit ^ 1 ^ 2 , und es scheint eine interessante Herausforderung für Golf.

Aktualisierung:

Keine Zeilenumbrüche zwischen den Strophen, das macht es zu einfach :)

Führende / nachfolgende Zeilenumbrüche sind in Ordnung.

njha
quelle
6
Ist ein Zeilenumbruch zwischen jeder Strophe (jedem Hai) akzeptabel? (So ​​habe ich immer die Texte gesehen)
Quintec
6
Eh, ein paar Verse fehlen, wie alle über die Schwimmer, die bei Haiangriffen ihre Gliedmaßen verlieren.
mbomb007
2
"doo doo doo doo doo" ist wirklich zu stark vereinfacht.
R ..
26
Als Elternteil verspüre ich den größten Drang, diese abzulehnen. Ich unterdrücke den Drang, weil Stack Exchange nicht so funktioniert. Aber wenn ich heute später "doo doo doo doo" summe, komme ich hierher zurück und halte Sie zur Rechenschaft!
Cort Ammon
5
Wie viele Tage haben die Leute jetzt ruiniert, da dies auf HNQs ist?
CactusCake

Antworten:

74

Emojicode, 292 Bytes (140 Zeichen)

🏁🍇🔤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🔤!🔤🍪❗️🍉🍉

Starte es

Erweitert aus:

🏁🍇
  🔤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🔤!🔤🍪❗️
  🍉
🍉

Erklärt (gemäß dem Emojicode- Dokument):

🍇🍉

Das Gleiche wie ein {und }(zB ein Codeblock)

🏁

Der "Programmstart" (zB int main())

🔤Baby🔤 ➡️ b

Variablenzuordnung (zB const char* b = "Baby";)

🍨b y o g a🍆➡️f

Sagt, erstellen Sie eine Liste von Werten zwischen 🍨 und 🍆 und weisen Sie (➡️) zu f(zB const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

In dieser Zeile wird angegeben, dass die Elemente im fAlias durchlaufen werden sollen m, wobei ...der Code zwischen 🍇 und 🍉 steht.

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

In dieser Zeile wird angegeben, dass die Schleife über den Bereich [0,3] geführt werden soll, wobei ...der Code zwischen 🍇 und 🍉 steht.

😀🍪 ... 🍪️❗️

In dieser Zeile steht, dass das in ...(zB printf("%s\n");) angegebene Format gedruckt werden soll.

Der Code übersetzt in 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;
}

Im Anschluss daran hatte der Originalcode (unten für die Nachwelt veröffentlicht) einige Probleme. meistens, dass der 🏁🍇🍉-Block nicht für diejenigen enthalten war, die ihn ausführen möchten, und die Emojis nicht richtig maskiert wurden, dazu hier die aktuelle Version dieses Codes:

Original für die Ausführung modifiziert: Emojicode, 224 Bytes (67 Zeichen)

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

Erweitert aus:

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

Welches erzeugt die Ausgabe:

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

Starte es

Wo haben Sie die einzelnen Emojis, die die Wörter darstellen:

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

Original: Emojicode, 138 Bytes (47 Zeichen)

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

Erweitert aus:

🍨👶👨🤱👴👵🍆➡️f
🔂m f🍇
  🔂 i 🆕⏩⏩ 0 3❗️🍇
    😀 m 🦈💩💩💩💩💩💩❗️
  🍉
  😀 m 🦈!❗️
🍉
txtechhelp
quelle
31
Punkte für Kreativität, aber dies erzeugt nicht die erforderliche Ausgabe
Jo King
15
Willkommen auf der Seite! Als JoKing ankam, fordern wir, dass Antworten genau das tun, was die Frage hier stellt. Dies bedeutet, dass während Ihre Interpretation der Herausforderung kreativ ist, diese Antwort entweder korrigiert werden sollte, um die richtige Ausgabe zu erzielen, oder gelöscht werden sollte.
Weizen-Zauberer
12
Diese Antwort ist zwar kreativ, entspricht jedoch nicht den Anforderungen der Herausforderung und ist daher nicht gültig. Der Text muss genau so ausgegeben werden, wie er in der Herausforderung angegeben ist.
Mego
8
Bitte ändern Sie diese Antwort, um die richtige Ausgabe zu erhalten, oder löschen Sie sie.
mbomb007
6
Willkommen auf der Seite! Wenn ich versuche, diesen Code online auszuführen , wird eine Fehlermeldung angezeigt. (Es zählt auch 98 Zeichen anstelle von 94). Vermisse ich etwas?
DJMcMayhem
31

IBM PC DOS, 8088-Assembly, 115 114 109 108 Bytes

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

Zerlegt:

    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,'$'

Ausgabe

DOS DIR, SHARK

Laden Sie SHARK.COM herunter!

  • -5 Bytes dank @Deadcode
640 KB
quelle
6
Du absoluter Wahnsinniger.
MGOwen
5
Als Sie sagten Download SHARK.COM!, dachte ich sofort an Computerviren.
MilkyWay90
@ Gwaugh Ich war ein Scherz
MilkyWay90
@ gwaugh Aber es ist 109 Bytes
MilkyWay90
21

Python 2 , 93 Bytes

for w in"Baby Daddy Mommy Grandpa Grandma".split():w+=" Shark";print(w+" doo"*6+"\n")*3+w+"!"

Probieren Sie es online!

94 Bytes

for w in"Baby Daddy Mommy Grandpa Grandma".split():print((" doo"*6+"\n%s Shark"%w)*4)[25:]+"!"

Probieren Sie es online!

xnor
quelle
16

05AB1E , 50 41 Bytes

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

Letzter Teil v4FN3Qiy'!«ë…doo6иyšðý},kann definitiv ein bisschen golfen werden. Und ich hatte recht, -9 Bytes dank @Emigna (sogar mehr als ich erwartet hatte).

Probieren Sie es online aus.

Erläuterung:

“‡ÍÊТ×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)

Sehen Sie sich meinen Tipp 05AB1E (Abschnitt Wie verwende ich das Wörterbuch? ) An, um zu verstehen, warum es “‡ÍÊТ×myîºpaîºma“ist "baby daddy mommy grandpa grandma"und 'ã¢ist "shark".

Kevin Cruijssen
quelle
2
Sie können 9 Bytes dieses letzten v…doo6иyšÐy'!«»
Stücks
@Emigna Du hast sogar mehr Golf gespielt als ich erwartet hatte, danke! Schlaue Art und Weise, das Dreifache zu nutzen und »!
Kevin Cruijssen
14

PowerShell, 88 86 85 80 79 76 Byte

-5 Bytes dank @mazzy
-1 Bytes dank @Joey
-3 Bytes dank @AdmBorkBork

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

Probieren Sie es online!

Wir haben sicherlich einen langen Weg zurückgelegt.

PowerShell (mit Text in Sprache), 156 Byte

Dies entspricht NICHT der Spezifikation, ist aber irgendwie lustig. Danke an @rkeet für die Idee!

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

Die Aussprache von .NET Text to Speech ist ... nun ja ... interessant. Denken Sie daran, wenn Sie zuhören. Genießen!

Gabriel Mills
quelle
2
80 Bytes :)
mazzy
1
Sie können ein weiteres Byte speichern, indem Sie "$_ Shark"es einer Variablen zuweisen und erneut verwenden.
Joey,
2
76 Bytes mit echoanstelle von -split.
AdmBorkBork
1
Ich denke, Sie sollten auch einen "Text to Speech" haben: p Zum Teufel hat es versucht, ein bisschen mit diesem Code zu kombinieren , hat nicht ganz funktioniert :-)
rkeet
@rkeet Challenge angenommen! Ich rätsele gerade darüber.
Gabriel Mills
10

Java (JDK) , 135 Byte

v->{for(var s:"Baby Daddy Mommy Grandpa Grandma".split(" "))System.out.println(((s+=" Shark")+" doo".repeat(6)+"\n").repeat(3)+s+"!");}

Probieren Sie es online!

Olivier Grégoire
quelle
Welche JDK-Version? Ich vermute 8+ (Lambdas).
NoOneIsHere
3
@NoOneIsHere Angesichts der repeatMethode ist es Version 11+
Olivier Grégoire
9

Retina 0,8,2 , 77 75 74 Bytes


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

Probieren Sie es online! Erläuterung:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Fügen Sie die Relationen in separate Zeilen ein.

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

In vier Zeilen erweitern.

s
S6$*O¶
O
 doo
S
 Shark

Erweitern Sie die Platzhalter.

69 68 Bytes in Retina 1:


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

Probieren Sie es online! Erläuterung:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Fügen Sie die Relationen in separate Zeilen ein.

.+
$& Shark

Füge jedem Shark hinzu.

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

Erweitern Sie in ganze Verse.

Neil
quelle
9

Python 3, 105 97 96 Bytes

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

Probieren Sie es online!

Eine einfache Python 3-Lösung. (9 Bytes von Jo King und Quintec gespeichert)

njha
quelle
2
Die Klammern ' doo'*6sind unnötig und Sie haben unnötige Leerzeichen
Quintec
1
Was Quintec sagte ... 97 Bytes
Jo King
2
@ReverseCold technisch gesehen, wo es keine gibt, ist []es ein Tupel, keine Liste, aber das ist für dieses Programm nicht relevant
Stephen
2
96 Bytes durch Setzen x+' Shark'auf eine Variable
Jo King
1
Dies scheint auch in 2.7 zu funktionieren?
uhoh
9

Haskell , 122 113 108 106 104 Bytes

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

Probieren Sie es online!

  • "aaa">>xWird xdreimal repliziert , ebenso "aaa"wie Länge 3.

  • s>>" doo"repliziert " doo"6 mal, wie " Shark"Länge 6 hat!

  • 2 Bytes gespart dank @Fox

  • 2 Bytes gespart dank @Laikoni
starsandspirals
quelle
2
Willkommen auf der Seite! Wir erlauben nur das Erzeugen einer festen Ausgabezeichenfolge als Ausdruck , so dass Sie die weglassen können main=putStr. Siehe auch die Zusammenfassung der Haskell-Regeln .
16.
1
Willkommen bei PPCG. Schön sparen mit s>>.
Shaggy
@xnor danke für die links!
starsandspirals
1
m=(stuff)kann nur m=stufffür zwei Bytes weniger sein
Fox
1
104 Bytes mit do-notation: Probieren Sie es online aus!
Laikoni
7

Perl 6 , 79 78 Bytes

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

Probieren Sie es online!

Ziemlich einfach.

Erläuterung:

 <...>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
Scherzen
quelle
7

JavaScript, 104 Byte

Weitere Golfspiele folgen.

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

Probieren Sie es online!

Zottelig
quelle
1
Dies ist technisch keine gültige Lösung, da weder in eine Datei geschrieben noch protokolliert wird. Wenn Sie eine gültige Lösung console.log()
erstellen,
3
@Delioth, die Rückkehr von einer Funktion ist auf dieser Site vollkommen gültig. In Meta finden Sie unsere Standard-E / A-Regeln.
Shaggy
2
Ich würde im Allgemeinen zustimmen, aber diese Frage besagt ausdrücklich, dass das Programm "den folgenden Text in die Standardausgabe oder eine beliebige Datei schreibt"
Delioth
7

Bash, 78 Bytes

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

TIO

73 Bytes, wenn nachfolgender Speicherplatz zulässig ist

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

/// 124 Bytes

/*/$!
//)/Grand//(/Baby//'/Mommy//&/Daddy//%/ doo//$/ Shark//#/a")//"/$%%%%%%
/("("("(*&"&"&"&*'"'"'"'*)p#p#p#pa*)m#m#m#ma$!

Probieren Sie es online!

Conor O'Brien
quelle
5

> <> , 158 115 Bytes

Jo King hat eine Menge Bytes gespart

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

Probieren Sie es online! Sie können den Code auch in fishlanguage.com einfügen , wo Sie eine Animation davon sehen können, wie sie schwimmt .

DLosc
quelle
121 Bytes , hauptsächlich durch Neuanordnung des Babys / Vatis / ... in mehrere Zeilen anstelle einer Zeile. Es gibt aber noch mehr zu golfen
Jo King
115 Bytes
Jo King
@JoKing Ah, danke. Ich neige dazu anzunehmen (meistens aus der Arbeit mit BitCycle), dass weniger Zeilen besser sind, aber in diesem Fall ist dies aufgrund der unterschiedlichen Stringlängen nicht der Fall.
DLosc
5

PostgreSQL, 162 156 138 Bytes

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

Ungolfed

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 Bytes gespart dank @Nahuel Fouilleul!

  • Verwenden Sie ||anstelle vonconcat()
  • Verwenden Sie unnest('{foo,bar}'::text[])anstelle vonregexp_split_to_table('foo,bar')

DB <> Geige

Peter Vandivier
quelle
1
-6 Bytes ||anstelle von concat View on 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

Haskell , 97 Bytes

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

Probieren Sie es online!

Dies ist eine Optimierung der Haskell-Lösung durch Sterne und Spiralen . Der neue Trick besteht darin, die Zeilen jeder Zeilengruppe mit einer inneren Schleife unlineszu durchlaufen und die Zeilen mithilfe von zu verbinden , ohne dass explizit neue Zeilen eingefügt werden müssen.

Die Suffixe der vier Zeilen sind [a,a,a,"!"], in denen asie " doo"repliziert 6mal mit a=s>>" doo", wo starsandspirals geschickt verwendet die sechs Zeichen lang s=" Shark". Das Schreiben [a,a,a,...]sieht ein bisschen albern aus, aber ich sehe keinen kürzeren Weg.

Eine List-Monad-Version hat die gleiche Länge, sieht aber cool aus.

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

Probieren Sie es online!

xnor
quelle
4

Ruby , 82 Bytes

%w(Baby Daddy Mommy Grandpa Grandma).map{|a|puts [a+" Shark"]*4*(" doo"*6+?\n)+?!}

Probieren Sie es online!

Kirill L.
quelle
Ich habe eine Weile gebraucht, um zu verstehen, dass Sie den Teil "doo" als Array-Trennzeichen verwendet haben. Gute Arbeit :)
Idva
4

R , 131 122 120 Bytes

-9 Bytes dank Giuseppe

-2 weitere Bytes, auch Giuseppe

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

Probieren Sie es online!

Wirklich sehr stolz darauf, vor allem, wenn R im Umgang mit Saiten ziemlich schlecht ist. Ich begann mit cat(sapply(...)), realisierte aber, dass sich eine for-Schleife um einige Bytes verringert.

Missbrauch der "?"=cdeutlich reduzierten Anzahl der benötigten Klammern.

Ich habe auch versucht, "*"=repdie einzelnen Zeilen der Strophen und der "doos" zu wiederholen, aber das hat keine Bytes abgeschabt.

111 Bytes

Die alternative (und bessere) Lösung von Giuseppe und ASCII, die einige Platzprobleme behebt.

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

Probieren Sie es online!

Sumner18
quelle
1
122 Bytes
Giuseppe
Wie immer, danke für deinen klugen Input @ Giuseppe. Ich hätte diese Golfer bemerken sollen
Sumner18
1
120 Bytes
Giuseppe
1
@ Giuseppe Wow, Vektorisierung, schön. Ich habe vergessen, dass R so eine schöne Vektorisierung hat. 114? auch 114?
Nur ASCII
1
auch 114
ASCII
3

PHP, 104 Bytes

foreach([Baby,Daddy,Mommy,Grandpa,Grandma]as$s)echo$t=$s.str_pad($u=" Shark",30," doo"),"
$t
$t
$s$u!
";

Laufen Sie mit php -nr '<code>'oder versuchen Sie es online .

Titus
quelle
103 Bytes
Night2
3

R , 126 125 Bytes

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

Dies fühlt sich nicht so 'clever' an wie die Antworten von CT Hall oder Sumner18 , aber durch die Vermeidung des Overheads beim Definieren von Variablen wird es kleiner.

Probieren Sie es online!

Bearbeiten: 1 Byte mit Wagenrücklauf nach Kommentar von Jonathan Frech gespeichert

BobbyBean
quelle
Hallo und willkommen bei PPCG! Ich habe Links zu den Antworten des Benutzers hinzugefügt, die Sie erwähnt haben, um Ihre Lösungen besser vergleichen zu können. Herzlichen Glückwunsch zu Outgolfing. Können Sie zur Vereinfachung der Überprüfung einen Link zu einer Online-Testumgebung hinzufügen?
Jonathan Frech
Danke für die Bearbeitung @JonathanFrech. Ich habe jetzt einen Link hinzugefügt, um den Code online zu testen (was meiner Antwort ein Byte hinzufügte!).
BobbyBean
Sie können eine aktuelle neue Zeile verwenden, anstatt \ndie Anzahl der Bytes erneut zu verringern.
Jonathan Frech
125 Bytes
Giuseppe
1
Nun, ich war total überfordert. Manchmal ist die einfachste Option die beste. Unterstreicht auch, wie schwierig es ist, mit Strings in der R.
CT Hall zu arbeiten.
3

R , 139 138 137 Bytes

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='
')

Es gibt wahrscheinlich einen besseren Weg, das zu tun, aber ich konnte es nicht bekommen.

Bearbeiten:
'\ n' wird auf Vorschlag von JDL durch eine aktuelle neue Zeile ersetzt.
Der nachgestellte Zeilenumbruch wurde auf Vorschlag von Giuseppe entfernt.

Probieren Sie es online aus

CT Hall
quelle
willkommen bei ppcg! Das Ersetzen des "\ n" durch eine wörtliche Newline spart mindestens ein Byte.
JDL
Vielen Dank, ich habe das getan und dann festgestellt, dass meine Ausgabe etwas abgefallen ist. Deshalb habe ich dies aktualisiert. Leider hat dies zu mehr Bytes geführt.
CT Hall
Ich glaube, Sie haben eine nachgestellte Zeile für ein zusätzliches Byte
Giuseppe
3

wenn Sie versehentlich 100Angebote schließen - 123.065 121.716 113.695 100.889 98.554 Bytes

Das Programm

Ich werde das später Golf spielen. Getan.

Ich werde diesmal Golf spielen. (Später) Fertig.

Ich werde das später noch mehr Golf spielen. GETAN.

Ich werde die Byteanzahl später auf 5 Stellen bringen. YAY.

Ich werde die Byteanzahl auf 4 Stellen bringen (ich weiß nicht, ob dies möglich ist, aber ich weiß, dass es mit meinem aktuellen Ansatz unmöglich ist, 3 Stellen zu bekommen).

MilkyWay90
quelle
Was zur Hölle ist das? Ich liebe es
Adrian Zhang
@AdrianZhang Eine Programmiersprache, die schwer zu programmieren ist. Außerdem sieht das Programm so aus, als würde eine Person schreien ('AAAAAAAAAAA ...')
MilkyWay90
3

C (gcc) , 123 122 Bytes

-1 byte dank ceilingcat

#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:"!");}

Probieren Sie es online!

Gastropner
quelle
Was sind die Regeln für C? Keine Notwendigkeit für main()oder #includefür printf?
BoBTFish
@BoBTFish: Nicht C-spezifisch, aber generell darf jede Funktion verwendet werden (Name spielt keine Rolle, in der Tat kann es sich um ein unbenanntes Lambda oder ähnliches handeln). Und Sprachen werden durch ihre (beliebige) Implementierung definiert, da dies funktioniert gcc(generiert nur Warnungen, kompiliert aber einwandfrei) und gültig ist.
22.
Ich erkannte, dass das Fehlen von #includenur ein Fehler war, weil ich immer noch als C ++ kompilierte, aber ich konnte es immer noch nicht zum Kompilieren bringen, ohne Ihre Funktion in umzubenennen main.
BoBTFish
2

cQuents , 93 89 Bytes

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

Probieren Sie es online!

Beachten Sie, dass TIO zum Zeitpunkt der Veröffentlichung nicht auf die neueste Version aktualisiert wurde, sodass der TIO-Link möglicherweise nicht funktioniert.

Erläuterung

|                               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
Stephen
quelle
2

JavaScript (Node.js) , 132 Byte

Wahrscheinlich sehr golffähig. Erzeugt die Zeile "doo doo" und erstellt dann drei davon mit dem "!" Zeile danach und wiederholt dies für jeden Hai.

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)

Probieren Sie es online!

Neil A.
quelle
Eine leicht geänderte Lösung in Javascript, aber kein Gewinn: a = ""; c = "doo"; für (b von ["Baby", "Daddy", "Mama", "Opa", "Oma"]) {b + = "Shark"; t = b + c.repeat (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
BogdanBiv
2

jq, 87 Zeichen

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

Probelauf:

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!

Probieren Sie es online!

Mann bei der Arbeit
quelle
2

Plain TeX, 147 Bytes

\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

Ziemlich enttäuschend, aber ich habe seit Ewigkeiten keine TeX-Antwort mehr gepostet. Schleifen sind in teX sehr ausführlich (und das Schleifen über Strings ist noch nicht einmal eingebaut, selbst dies ist ein bisschen langwierig)

Chris H
quelle
2

PHP , 153 147 Bytes

<?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";}

Dank an @manatwork für das Speichern von 6 Bytes durch Hinweisen str_pad('',23'doo ');ist kürzer alsrtrim(str_repeat('doo ',6));

Probieren Sie es online!

EvanBarbour3
quelle
Leider $d='doo doo doo doo doo doo'ist noch kürzer als die rtrim()+ str_repeat()Kombination. :( Aber zum Glück $d=str_pad('',23,'doo ')ist es noch kürzer. Weitere Tipps zur Optimierung finden Sie unter Tipps zum Golfen in PHP .
manatwork
@manatwork Vielen Dank für den Hinweis, ich habe den Beitrag aktualisiert, um zu reflektieren
EvanBarbour3
1
In der Zwischenzeit haben wir etwas Zeit gefunden, um ein bisschen mehr zu spielen: Probieren Sie es online aus!
Manatwork
113 Bytes . Willkommen bei PPCG!
Shaggy
2
109 Bytes
Shaggy