Chanter bébé requin

68

"Baby Shark" est une chanson pour enfants sur une famille de requins. Populaire depuis longtemps comme chanson de feu de camp, elle est popularisée depuis le milieu des années 2000 par les médias sociaux, la vidéo en ligne et la radio. - Wikipedia

Programme d'écriture qui ne prend aucune entrée et écrit le texte suivant sur la sortie standard ou dans un fichier arbitraire:

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!

C'est du code golf - le code le plus court gagne.

Trouvé ceci sur Reddit ^ 1 ^ 2 , et cela semble être un défi intéressant pour le golf.

Mises à jour:

Pas de nouvelle ligne entre les strophes, cela rend les choses trop faciles :)

Les nouvelles lignes principales / finales sont acceptables.

njha
la source
6
Une nouvelle ligne entre chaque strophe (chaque requin) est-elle acceptable? (C'est toujours ainsi que j'ai vu les paroles écrites)
Quintec
6
Eh, manque quelques versets, comme tous ceux sur les nageurs qui nagent et perdent des membres lors d'attaques de requins.
mbomb007 le
2
"doo doo doo doo doo doo" est vraiment trop simplifié.
R ..
26
En tant que parent, je ressens le besoin le plus pressant d’abaisser celui-ci. Je réprime cette envie, car ce n'est pas ainsi que Stack Exchange fonctionne. Mais si je me retrouve à fredonner "doo doo doo doo" plus tard aujourd'hui, je reviens ici et je vous tiens responsable!
Cort Ammon
5
Combien de jours de personnes ont été ruinés maintenant que c'est sur HNQ?
CactusCake le

Réponses:

74

Emojicode, 292 octets (140 caractères)

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

Exécuter

Élargi:

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

Expliqué (par le doc Emojicode ):

🍇🍉

Identique à un {et }(par exemple un bloc de code)

🏁

Le "démarrage du programme" (par exemple int main())

🔤Baby🔤 ➡️ b

Affectation variable (par exemple const char* b = "Baby";)

🍨b y o g a🍆➡️f

Dit, créer une liste de valeurs entre et 🍆 et assigner (➡️) à f(par exemple const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

Cette ligne dit de faire une boucle sur les éléments en futilisant l'alias m, où le ...est le code entre et.

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

Cette ligne dit de boucler sur la plage [0,3), où ...est le code entre et.

😀🍪 ... 🍪️❗️

Cette ligne indique d’imprimer le format spécifié dans ...(par exemple printf("%s\n");)

Le code traduit en 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;
}

Suite à cela, le code original (affiché ci-dessous pour la postérité) présentait quelques problèmes; principalement que le bloc n'a pas été inclus pour ceux qui souhaitent l'exécuter, et que les emoji ne sont pas réellement échappés. Pour cela, voici la version courante de ce code:

Original modifié pour fonctionner: Emojicode, 224 octets (67 caractères)

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

Élargi:

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

Qui produit la sortie:

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

Exécuter

Où en vous avez les emoji individuels représentant les mots:

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

Original: Emojicode, 138 octets (47 caractères)

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

Élargi:

🍨👶👨🤱👴👵🍆➡️f
🔂m f🍇
  🔂 i 🆕⏩⏩ 0 3❗️🍇
    😀 m 🦈💩💩💩💩💩💩❗️
  🍉
  😀 m 🦈!❗️
🍉
txtechhelp
la source
31
Des points pour la créativité, mais cela ne produit pas le résultat requis
Jo King
15
Bienvenue sur le site! Alors que JoKing en arrivait, nous avons besoin de réponses qui répondent exactement à la question posée. Cela signifie que, même si votre interprétation du défi est créative, cette réponse doit être corrigée pour produire le bon résultat ou supprimée.
Wheat Wizard
12
Bien que cette réponse soit créative, elle ne répond pas aux exigences du défi et n’est donc pas valide. Le texte doit être reproduit exactement comme indiqué dans le défi.
Mego
8
Modifiez cette réponse pour produire la sortie correcte ou supprimez-la.
mbomb007 le
6
Bienvenue sur le site! Lorsque j'essaie d' exécuter ce code en ligne , j'obtiens une erreur. (Il compte également 98 caractères au lieu de 94). Est-ce que je manque quelque chose?
DJMcMayhem
31

IBM PC DOS, assemblage 8088, 115 114 109 108 octets

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

Non assemblé:

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

Sortie

DOS DIR, SHARK

Téléchargez SHARK.COM!

  • -5 octets grâce à @Deadcode
640 Ko
la source
6
Tu es fou absolu.
MGOwen
5
Lorsque vous avez dit Download SHARK.COM!, j'ai immédiatement pensé aux virus informatiques.
MilkyWay90
@gwaugh je plaisantais
MilkyWay90
@gwaugh Mais c'est 109 octets
MilkyWay90
21

Python 2 , 93 octets

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

Essayez-le en ligne!

94 octets

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

Essayez-le en ligne!

Xnor
la source
16

05AB1E , 50 41 octets

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

La dernière partie v4FN3Qiy'!«ë…doo6иyšðý},peut certainement être un peu golfée .. Et j'avais raison, -9 octets grâce à @Emigna (encore plus que ce à quoi je m'attendais).

Essayez-le en ligne.

Explication:

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

Voir ce conseil 05AB1E (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi “‡ÍÊТ×myîºpaîºma“est "baby daddy mommy grandpa grandma"et 'ã¢est "shark".

Kevin Cruijssen
la source
2
Vous pouvez v…doo6иyšÐy'!«»
jouer
@ Emigna Vous avez même joué plus que prévu, merci! Une façon intelligente d'utiliser le triplicata et »!
Kevin Cruijssen le
14

PowerShell, 88 86 85 80 79 76 octets

-5 octets grâce à @mazzy
-1 octet grâce à @Joey
-3 octets grâce à @AdmBorkBork

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

Essayez-le en ligne!

Nous avons certainement parcouru un long chemin.

PowerShell (avec synthèse vocale), 156 octets

Ce n'est pas à la hauteur, mais c'est un peu drôle. Merci à @rkeet pour l'idée!

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

La prononciation de texte en .NET est ... bien ... intéressante. Gardez cela à l'esprit lorsque vous écoutez. Prendre plaisir!

Gabriel Mills
la source
2
80 octets :)
mazzy le
1
Vous pouvez enregistrer un autre octet en affectant "$_ Shark"une variable et en la réutilisant.
Joey le
2
76 octets utilisant echoau lieu de -split.
AdmBorkBork
1
Je pense que vous devriez également avoir un "text to speech": p Pour le plaisir de le combiner un peu avec ce code , cela n’a pas vraiment fonctionné :-)
rkeet le
@rkeet Challenge accepté! Je suis actuellement en train de me perdre.
Gabriel Mills
10

Java (JDK) , 135 octets

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

Essayez-le en ligne!

Olivier Grégoire
la source
Quelle version de JDK? Je devine 8+ (lambdas).
NoOneIsHere le
3
@NoOneIsHere Etant donné la repeatméthode, c'est la version 11+
Olivier Grégoire
9

Retina 0.8.2 , 77 75 74 octets


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

Essayez-le en ligne! Explication:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Insérer les relations sur des lignes séparées.

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

Développer en quatre lignes.

s
S6$*O¶
O
 doo
S
 Shark

Développez les espaces réservés.

69 68 octets dans Retina 1:


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

Essayez-le en ligne! Explication:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Insérer les relations sur des lignes séparées.

.+
$& Shark

Ajouter le requin à chacun.

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

Développez des versets entiers.

Neil
la source
9

Python 3, 105 97 96 octets

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

Essayez-le en ligne!

Une solution simple Python 3. (9 octets enregistrés par Jo King et Quintec)

njha
la source
2
Les parenthèses autour ' doo'*6sont inutiles et vous avez des espaces inutiles
Quintec
1
Ce que quintec a dit ... 97 octets
Jo King
2
@ReverseCold techniquement où il n'y a pas []c'est un tuple, pas une liste, mais ce n'est pas pertinent pour ce programme
Stephen
2
96 octets en définissant x+' Shark'une variable
Jo King
1
Cela semble fonctionner dans la version 2.7 également?
Uhoh
9

Haskell , 122 113 108 106 104 octets

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

Essayez-le en ligne!

  • "aaa">>xse réplique x3 fois, de même que la "aaa"longueur 3.

  • s>>" doo"réplique " doo"6 fois, de même que la " Shark"longueur 6!

  • 2 octets enregistrés grâce à @Fox

  • 2 octets sauvegardés grâce à @Laikoni
étoilesandpirales
la source
2
Bienvenue sur le site! Nous permettons simplement de générer une chaîne de sortie fixe sous forme d'expression , vous pouvez donc omettre le main=putStr. Voir aussi le résumé des règles Haskell .
xnor
1
Bienvenue chez PPCG. Belle économie avec s>>.
Shaggy le
@xnor merci pour les liens!
starsandspirals
1
m=(stuff)peut juste être m=stuffpour deux moins d'octets
Fox
1
104 octets en utilisant do-notation: essayez-le en ligne!
Laikoni
7

Perl 6 , 79 78 octets

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

Essayez-le en ligne!

Assez simple.

Explication:

 <...>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
Jo King
la source
7

JavaScript, 104 octets

Plus de golf à suivre.

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

Essayez-le en ligne!

Hirsute
la source
1
Techniquement, cela n’est pas une solution valable car il n’écrit ni dans un fichier, ni dans un journal. Cependant, si vous en faites une solution valide en le recouvrant de console.log(), vous pouvez ne pas en faire une déclaration lambda (gain de 10 caractères seulement)
Delioth
3
@Delioth, le retour d'une fonction est parfaitement valable sur ce site. Consultez Meta pour connaître nos règles d'E / S par défaut.
Shaggy
2
Je serais généralement d’accord, mais cette question précise que le programme "écrit le texte suivant dans la sortie standard ou dans un fichier arbitraire"
Delioth le
7

bash, 78 octets

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

TIO

73 octets si l'espace de fin est autorisé

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

/// , 124 octets

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

Essayez-le en ligne!

Conor O'Brien
la source
5

> <> , 158 115 octets

Économisé beaucoup d'octets grâce à Jo King

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

Essayez-le en ligne! Vous pouvez également coller le code sur fishlanguage.com , où vous pouvez voir une animation de la course à pied.

DLosc
la source
121 octets , principalement en réarrangeant bébé / papa / ... en plusieurs lignes au lieu d’une ligne. Il y a plus que le golf
Jo King
115 octets
Jo King le
@JoKing Ah, merci. J'ai tendance à supposer (principalement en travaillant avec BitCycle) que moins de lignes sont préférables, mais dans ce cas, ce n'est pas vrai en raison des longueurs de chaîne différentes.
DLosc
5

PostgreSQL, 162 156 138 octets

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

Sauvegardé 6 24 octets grâce à @Nahuel Fouilleul!

  • utiliser ||au lieu deconcat()
  • utiliser unnest('{foo,bar}'::text[])au lieu deregexp_split_to_table('foo,bar')

DB <> violon

Peter Vandivier
la source
1
-6 octets utilisant ||au lieu de concat Voir sur 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 le
5

Haskell , 97 octets

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

Essayez-le en ligne!

Ceci est une optimisation de la solution Haskell par starsandspirals . La nouvelle astuce consiste à parcourir les lignes de chaque strophe avec une boucle interne et à joindre les lignes à l'aide de unlines, en évitant la nécessité d'insérer explicitement des nouvelles lignes.

Les suffixes des quatre lignes sont [a,a,a,"!"], où aest " doo"répliqué 6 fois a=s>>" doo", où starsandpirals réutilise intelligemment le long de six caractères s=" Shark". Ecrire [a,a,a,...]semble un peu bête, mais je ne vois pas de chemin plus court.

Une version list-monad a la même longueur mais elle a l'air cool.

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

Essayez-le en ligne!

Xnor
la source
4

Ruby , 82 octets

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

Essayez-le en ligne!

Kirill L.
la source
Il m'a fallu un certain temps pour comprendre que vous utilisiez la partie "doo" comme séparateurs de tableaux. Bon travail :)
Idva
4

R , 131 122 120 octets

-9 octets grâce à Giuseppe

-2 plus d'octets, également Giuseppe

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

Essayez-le en ligne!

Très fier de cela en fait, surtout que R est plutôt pauvre en manipulation de chaînes. J'ai commencé par utiliser cat(sapply(...)), mais je me suis rendu compte qu'une boucle for supprimait quelques octets.

L'abus a "?"=cconsidérablement réduit la quantité de parenthèses nécessaires.

J'ai aussi essayé de "*"=reprépéter les lignes individuelles des strophes et des "doos", mais cela n'a pas supprimé les octets.

111 octets

Solution alternative (et meilleure) de Giuseppe et d'ASCII uniquement qui résout certains problèmes d'espacement.

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

Essayez-le en ligne!

Sumner18
la source
1
122 octets
Giuseppe
Comme toujours, merci pour votre avis judicieux @ Giuseppe. J'aurais dû remarquer ces golfs
Sumner18
1
120 octets
Giuseppe
1
@ Gauseppe wow, vectorisation, sympa. J'ai oublié que R a une belle vectorisation comme celle-ci. 114? aussi 114?
ASCII uniquement
1
aussi 114
ASCII seulement
3

PHP, 104 octets

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

Courez avec php -nr '<code>'ou essayez-le en ligne .

Titus
la source
103 octets
nuit2 le
3

R , 126 125 octets

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

Cela ne semble pas aussi «intelligent» que les réponses de CT Hall ou de Sumner18 , mais en évitant la surcharge liée à la définition de variables, le résultat est plus petit.

Essayez-le en ligne!

Edit: enregistré 1 octet en utilisant le retour chariot selon le commentaire de Jonathan Frech

BobbyBean
la source
Bonjour et bienvenue sur PPCG! J'ai ajouté des liens vers les réponses de l'utilisateur que vous avez mentionnées afin de mieux comparer vos solutions. Félicitations, vous pouvez ajouter un lien vers un environnement de test en ligne pour faciliter la vérification?
Jonathan Frech
Merci pour l'édition @JonathanFrech. J'ai maintenant ajouté un lien pour tester le code en ligne (ce qui a ajouté un octet à ma réponse!).
BobbyBean le
Vous pouvez utiliser une nouvelle ligne au lieu de \nramener votre nombre d'octets à un.
Jonathan Frech
125 octets
Giuseppe
1
Eh bien, j'ai été totalement gommé; Parfois, l'option la plus simple est la meilleure.
CT Hall
3

R , 139 138 137 octets

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

Il y a probablement une meilleure façon de faire le 'doo's mais je n'ai pas pu l'obtenir.

Edit:
Remplacé '\ n' par la nouvelle ligne à la suggestion de JDL;
Suppression du retour à la ligne suivant la suggestion de Giuseppe.

Essayez-le en ligne

CT Hall
la source
Bienvenue sur ppcg! À tout le moins, le remplacement du "\ n" par un retour à la ligne sauvera un octet.
JDL
Merci, je l’ai fait, puis j’ai réalisé que ma sortie était un peu désagréable, alors j’ai mis à jour le fait que cela a malheureusement entraîné plus d’octets.
CT Hall le
Je crois que vous avez un retour à la ligne pour un octet supplémentaire
Giuseppe
3

Lorsque vous perdez accidentellement 100endorsementsinnationstates - 123 065 121 716 113 695 100 889 98 554 octets

Le programme

Je vais jouer au golf plus tard. Terminé.

Je vais jouer au golf plus tard .

Je vais jouer au golf encore plus tard. TERMINÉ.

Je vais obtenir le nombre d'octets à 5 chiffres plus tard. YAY.

Je vais avoir le nombre d'octets à 4 chiffres (je ne sais pas si cela est possible, mais je sais qu'il est impossible d'obtenir 3 chiffres avec mon approche actuelle).

MilkyWay90
la source
Qu'est-ce que c'est que ça? Je l'aime
Adrian Zhang
@AdrianZhang Un langage de programmation difficile à programmer. En outre, le programme ressemble à une personne qui crie ('AAAAAAAAAAA ...')
MilkyWay90
3

C (gcc) , 123 122 octets

-1 octet grâce à 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:"!");}

Essayez-le en ligne!

gastropner
la source
Quelles sont les règles pour C? Pas besoin de main(), ou #includepour printf?
BoBTFish le
@BoBTFish: Pas spécifique à C, mais il est généralement permis d'utiliser n'importe quelle fonction (le nom importe peu, en effet il peut s'agir d'un lambda sans nom ou similaire). Et les langues sont définies par leur implémentation (n'importe laquelle), puisque cela fonctionne gcc(ne génère que des avertissements, mais compile bien), il est valide.
ბიმო
J'ai réalisé que l'absence de #includen'était qu'une erreur, car je compilais toujours en C ++, mais je ne pouvais toujours pas le faire compiler sans renommer votre fonction main.
BoBTFish le
2

cQuents , 93 89 octets

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

Essayez-le en ligne!

Notez que lors de la publication de TIO n'est pas mis à jour à la dernière version, le lien TIO peut ne pas fonctionner.

Explication

|                               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
la source
2

JavaScript (Node.js) , 132 octets

Probablement très golfable. Génère la ligne "doo doo", puis en crée trois avec le "!" ligne après, et répète cela pour chaque requin.

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)

Essayez-le en ligne!

Neil A.
la source
Une solution légèrement modifiée en Javascript, pas de gain cependant: a = ""; c = "doo"; pour (b de ["bébé", "papa", "maman", "grand-père", "grand-mère"]) {b + = "Requin"; t = b + répétition (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
BogdanBiv le
2

jq, 87 caractères

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

Échantillon échantillon:

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!

Essayez-le en ligne!

homme au travail
la source
2

TeX simple, 147 octets

\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

Plutôt décevant, mais je n'ai pas posté de réponse TeX depuis longtemps. Les boucles sont très verbeuses dans teX (et la boucle sur les chaînes n'est même pas intégrée, donc c'est un peu exagéré)

Chris H
la source
2

PHP , 153 147 octets

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

Merci à @manatwork pour la sauvegarde de 6 octets en soulignant qu’il str_pad('',23'doo ');est plus court quertrim(str_repeat('doo ',6));

Essayez-le en ligne!

EvanBarbour3
la source
Malheureusement, même $d='doo doo doo doo doo doo'est plus courte que cette combinaison rtrim()+ str_repeat(). :( Mais heureusement, $d=str_pad('',23,'doo ')c’est encore plus court. Pour plus d’optimisations, consultez la section Conseils de golf en PHP .
manatwork
@manatwork Merci de l'avoir signalé, j'ai mis à jour le message pour en tenir compte
EvanBarbour3
1
En attendant, trouvez du temps pour jouer un peu plus: essayez-le en ligne!
manatwork le
113 octets . Bienvenue chez PPCG!
Shaggy le
2
109 octets
Shaggy le