Sing Baby Shark


68

"Baby Shark" es una canción infantil sobre una familia de tiburones. Habiendo sido popular durante mucho tiempo como una canción de fogata, se ha popularizado desde mediados de la década de 2000 en las redes sociales, los videos en línea y la radio. - Wikipedia

Escriba un programa que no tome entrada y escriba el siguiente texto en la salida estándar o en un archivo arbitrario:

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!

Este es el código de golf: el código más corto gana.

Encontré esto en Reddit ^ 1 ^ 2 , y parece un desafío interesante para el golf.

Actualizaciones:

No hay nueva línea entre estrofas, eso lo hace demasiado fácil :)

Las nuevas líneas iniciales / finales están bien.


66
¿Es aceptable una nueva línea entre cada estrofa (cada tiburón)? (Así es como he visto la letra escrita)
Quintec

66
Eh, faltan algunos versos, como todos los de los nadadores que nadan y pierden extremidades en los ataques de tiburones.
mbomb007

2
"doo doo doo doo doo doo" está realmente simplificado en exceso.
R ..

26
Como padre, siento el impulso más fuerte de rechazar este. Estoy reprimiendo el impulso porque no es así como funciona Stack Exchange. Pero si me encuentro tarareando "doo doo doo doo" más tarde hoy, ¡volveré aquí y lo haré responsable!
Cort Ammon

55
¿Cuántos días de personas arruinaron ahora que esto está en HNQ?
CactusCake

Respuestas:



74

Emojicode, 292 bytes (140 caracteres)

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

Ejecutarlo

Ampliado:

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

Explicado (según el documento de Emojicode ):

🍇🍉

Lo mismo que una {y }(por ejemplo, un bloque de código)

🏁

El "inicio del programa" (p int main(). Ej. )

🔤Baby🔤 ➡️ b

Asignación variable (p const char* b = "Baby";. Ej. )

🍨b y o g a🍆➡️f

Dice, cree una lista de valores entre 🍨 y 🍆 y asigne (➡️) a f(por ejemplo const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

Esta línea dice que se repitan los elementos al fusar el alias m, donde ...es el código entre 🍇 y 🍉.

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

Esta línea dice que se repita en el rango [0,3), donde ...es el código entre 🍇 y 🍉.

😀🍪 ... 🍪️❗️

Esta línea dice que imprima el formato especificado en ...(p printf("%s\n");. Ej. )

El código traducido a 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;
}

Después de esto, el código original (publicado a continuación para la posteridad) tuvo algunos problemas; principalmente que el bloque 🏁🍇🍉 no se incluyó para aquellos que desean ejecutarlo, y los emoji no se escaparon correctamente, para eso, aquí está la versión real de ese código:

Original modificado para ejecutar: Emojicode, 224 bytes (67 caracteres)

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

Ampliado:

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

Que produce la salida:

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

Ejecutarlo

¿Dónde tienes los emoji individuales que representan las palabras?

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

Original: Emojicode, 138 bytes (47 caracteres)

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

Ampliado:

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

31
Puntos para la creatividad, pero esto no produce el resultado requerido
Jo King

15
Bienvenido al sitio! A medida que JoKing llegaba, exigimos que las respuestas hagan exactamente lo que la pregunta hace aquí. Esto significa que, si bien su interpretación del desafío es creativa, esta respuesta debe repararse para producir el resultado correcto o eliminarse.
Wheat Wizard

12
Si bien esta respuesta es creativa, no sigue los requisitos del desafío y, por lo tanto, no es válida: el texto debe enviarse exactamente como se indica en el desafío.
Mego

8
Modifique esta respuesta para producir la salida correcta o elimínela.
mbomb007

66
Bienvenido al sitio! Cuando intento ejecutar este código en línea , aparece un error. (También cuenta 98 ​​caracteres en lugar de 94). ¿Me estoy perdiendo de algo?
DJMcMayhem

31

IBM PC DOS, ensamblaje 8088, 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

Desmontado:

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

Salida

DOS DIR, TIBURÓN

Descargar SHARK.COM!

  • -5 bytes gracias a @Deadcode

66
Eres un loco total.
MGOwen

55
Cuando dijiste Download SHARK.COM!, inmediatamente pensé en los virus informáticos.
MilkyWay90

@gwaugh estaba bromeando
MilkyWay90

@gwaugh Pero son 109 bytes
MilkyWay90


16

05AB1E , 50 41 bytes

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

La última parte v4FN3Qiy'!«ë…doo6иyšðý},definitivamente se puede jugar un poco al golf ... Y tenía razón, -9 bytes gracias a @Emigna (incluso más de lo que esperaba).

Pruébalo en línea.

Explicación:

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

Vea esta sugerencia mía 05AB1E (sección ¿Cómo usar el diccionario? ) Para comprender por qué “‡ÍÊТ×myîºpaîºma“es "baby daddy mommy grandpa grandma"y 'ã¢es "shark".


2
Puedes jugar 9 bytes de ese último bit conv…doo6иyšÐy'!«»
Emigna

@Emigna Incluso jugaste más de lo que esperaba, ¡gracias! Manera inteligente de usar el triplicado y »!
Kevin Cruijssen

14

PowerShell, 88 86 85 80 79 76 bytes

-5 bytes gracias a @mazzy
-1 byte gracias a @Joey
-3 bytes gracias a @AdmBorkBork

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

Pruébalo en línea!

Ciertamente hemos recorrido un largo camino.

PowerShell (con texto a voz), 156 bytes

Esto NO está a la altura, pero es un poco divertido. ¡Gracias a @rkeet por la idea!

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

La pronunciación de texto a voz .NET es ... bueno ... interesante. Tenga esto en cuenta cuando escuche. ¡Disfrutar!



1
Puede guardar otro byte asignándolo "$_ Shark"a una variable y reutilizándolo.
Joey

2
76 bytes usando en echolugar de -split.
AdmBorkBork

1
Creo que también deberías tener un "texto a voz": p Por el mal que intentó combinarlo un poco con este código , no funcionó :-)
rkeet

¡Desafío @rkeet aceptado! Actualmente estoy desconcertando esto.
Gabriel Mills


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

Pruébalo en línea! Explicación:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Insertar las relaciones en líneas separadas.

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

Expande en cuatro líneas.

s
S6$*O¶
O
 doo
S
 Shark

Expande los marcadores de posición.

69 68 bytes en Retina 1:


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

Pruébalo en línea! Explicación:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Insertar las relaciones en líneas separadas.

.+
$& Shark

Añadir tiburón a cada uno.

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

Expandir en versos enteros.


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+"!")

Pruébalo en línea!

Una solución simple de Python 3. (9 bytes guardados por Jo King y Quintec)


2
Los paréntesis ' doo'*6son innecesarios y hay espacios en blanco innecesarios allí
Quintec

1
Lo que quintec dijo ... 97 bytes
Jo King

2
@ReverseCold técnicamente donde no hay []es una tupla, no una lista, pero eso no es relevante para este programa
Stephen

2
96 bytes configurando x+' Shark'una variable
Jo King

1
¿Esto parece funcionar también en 2.7?
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"

Pruébalo en línea!

  • "aaa">>xreplica x3 veces, ya que "aaa"tiene longitud 3.

  • s>>" doo"replica " doo"6 veces, como " Shark"tiene longitud 6!

  • 2 bytes guardados gracias a @Fox

  • 2 bytes guardados gracias a @Laikoni

2
Bienvenido al sitio! Permitimos simplemente generar una cadena de salida fija como una expresión , por lo que puede omitir el main=putStr. Ver también el resumen de reglas de Haskell .
xnor

1
Bienvenido a PPCG. Buen ahorro con s>>.
Shaggy

@xnor gracias por los enlaces!
Starsandspirals

1
m=(stuff)puede ser m=stuffpor dos bytes menos
Fox

1
104 bytes usando do-notation: ¡ Pruébelo en línea!
Laikoni

7

Perl 6 , 79 78 bytes

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

Pruébalo en línea!

Bastante simple.

Explicación:

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

JavaScript, 104 bytes

Más golf para seguir.

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

¡Pruébelo en línea!


1
Esto técnicamente no es una solución válida ya que ni escribe en un archivo ni lo registra. Aunque si lo convierte en una solución válida envolviendo con un console.log(), puede hacerlo no como una declaración lambda (solo 10 caracteres de ganancia)
Delioth

3
@Delioth, regresar de una función es perfectamente válido en este sitio. Echa un vistazo a Meta para conocer nuestras reglas de E / S predeterminadas.
Shaggy

2
En general, estaría de acuerdo, pero esta pregunta establece específicamente que el programa "escribe el siguiente texto en la salida estándar o en un archivo arbitrario"
Delioth

7

bash, 78 bytes

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

TIO

73 bytes si se permite el espacio final

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


5

> <> , 158115 bytes

Ahorré muchos bytes gracias a Jo King

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

Pruébalo en línea! También puede pegar el código en fishlanguage.com , donde puede ver una animación de él nadando corriendo.


121 bytes , principalmente mediante la reorganización del bebé / papá / ... a varias líneas en lugar de una sola. Sin embargo
Jo King


@JoKing Ah, gracias. Tiendo a suponer (principalmente por trabajar con BitCycle) que menos líneas son mejores, pero en este caso eso no es cierto debido a las diferentes longitudes de cadena.
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

Sin golf

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

Guardado 6 24 bytes gracias a @Nahuel Fouilleul!

  • usar en ||lugar deconcat()
  • usar en unnest('{foo,bar}'::text[])lugar deregexp_split_to_table('foo,bar')

DB <> violín


1
-6 bytes usando en ||lugar de concat Ver en 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"

Pruébalo en línea!

Esta es una optimización de la solución Haskell por estrellas y espirales . El nuevo truco es iterar sobre las filas de cada estrofa con un bucle interno, y unir las líneas usando unlines, ahorrando la necesidad de insertar líneas nuevas explícitamente.

Los sufijos de las cuatro líneas son [a,a,a,"!"], donde ase " doo"replica 6 veces con a=s>>" doo", donde las estrellas y las espirales reutilizan inteligentemente los seis caracteres de largo s=" Shark". Escribir [a,a,a,...]parece un poco tonto, pero no veo un camino más corto.

Una versión lista-mónada tiene la misma longitud pero se ve genial.

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

Pruébalo en línea!


4

Ruby , 82 bytes

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

Pruébalo en línea!


Me tomó un tiempo entender que usaste la parte "doo" como separadores de matrices. Buen trabajo :)
Idva

4

R , 131 122 120 bytes

-9 bytes gracias a Giuseppe

-2 bytes más, también Giuseppe

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

Pruébalo en línea!

Muy orgulloso de esto en realidad, especialmente porque R es bastante pobre en el manejo de cadenas. Comencé a usar cat(sapply(...)), pero me di cuenta de un bucle for afeitado de unos pocos bytes.

Abusar de esto "?"=credujo significativamente la cantidad de paréntesis necesarios.

También intenté "*"=reprepetir las líneas individuales de las estrofas y los "doos", pero eso no eliminó ningún byte.

111 bytes

La solución alternativa (y mejor) de Giuseppe y ASCII-only que soluciona algunos problemas de espacio.

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

Pruébalo en línea!



Como siempre, gracias por su sabio aporte @Giuseppe. Debería haber notado esos campos de golf
Sumner18


1
@Giuseppe wow, vectorización, agradable. Olvidé que R tiene una buena vectorización como esta. 114? también 114?
Solo ASCII




3

R , 126125 bytes

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

Esto no se siente tan 'inteligente' como las respuestas de CT Hall o Sumner18 , pero al evitar la sobrecarga de definir variables resulta más pequeña.

Pruébalo en línea!

Editar: guardado 1 byte mediante el retorno de carro según el comentario de Jonathan Frech


Hola y bienvenidos a PPCG! He agregado enlaces a las respuestas del usuario que mencionó para comparar mejor sus soluciones. Felicitaciones por superar a ambos, ¿podría agregar un enlace a un entorno de prueba en línea para facilitar la verificación?
Jonathan Frech

Gracias por editar @JonathanFrech. Ahora he agregado un enlace para probar el código en línea (¡que agregó un byte a mi respuesta!).
BobbyBean

Puede usar una nueva línea real en lugar de \nvolver a bajar el número de bytes uno.
Jonathan Frech


1
Bueno, me han superado totalmente; a veces la opción más simple es la mejor. También destaca lo difícil que es trabajar con cuerdas en R.
CT Hall

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

Probablemente haya una mejor manera de hacer el 'doo' pero no pude conseguirlo.

Editar:
Reemplazado '\ n' con una nueva línea real a sugerencia de JDL;
Se eliminó la nueva línea final a sugerencia de Giuseppe.

Pruébalo en línea


bienvenido a ppcg! Como mínimo, reemplazar el "\ n" con una nueva línea literal ahorrará un byte.
JDL

Gracias, lo hice, y luego me di cuenta de que mi salida estaba un poco apagada, así que actualicé eso, lamentablemente resultó en más bytes.
CT Hall

Creo que tiene una nueva línea final para un byte adicional
Giuseppe

3

cuando accidentalmente se cierran 100 establecimientos de proveedores - 123,065 121,716 113,695 100,889 98,554 bytes

El programa

Jugaré golf más tarde. Hecho.

Voy a jugar al golf más (más tarde) Listo.

Golfé esto aún más tarde. HECHO.

Obtendré el recuento de bytes hasta 5 dígitos más tarde. HURRA.

Obtendré el recuento de bytes a 4 dígitos (no sé si esto es posible, pero sí sé que es imposible obtener 3 dígitos con mi enfoque actual).


¿Qué demonios es esto? Me encanta
Adrian Zhang

@AdrianZhang Un lenguaje de programación difícil de programar. Además, el programa parece que es una persona gritando ('AAAAAAAAAAA ...')
MilkyWay90

3

C (gcc) , 123122 bytes

-1 byte gracias a 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:"!");}

Pruébalo en línea!


¿Cuáles son las reglas para C? ¿No es necesario main()o #includepara printf?
BoBTFish

@BoBTFish: no es específico de C, pero en general está permitido usar cualquier función (el nombre no importa, de hecho puede ser una lambda sin nombre o similar). Y los idiomas se definen por su (cualquier) implementación, ya que esto funciona gcc(solo genera advertencias, pero se compila bien) es válido.
ბიმო

Me di cuenta de que la falta #includeera solo un error porque todavía estaba compilando como C ++, pero todavía no podía hacer que compilara sin cambiar el nombre de su función main.
BoBTFish

2

cQuents , 93 89 bytes

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

Pruébalo en línea!

Tenga en cuenta que a partir de la publicación de TIO no se actualiza a la última versión, por lo que el enlace TIO puede no funcionar.

Explicación

|                               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

JavaScript (Node.js) , 132 bytes

Probablemente muy apto para el golf. Genera la línea "doo doo", luego crea tres de esos con el "!" línea después, y repite esto para cada tiburón.

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)

Pruébalo en línea!


Una solución ligeramente cambiada en Javascript, sin embargo, sin ganancia: a = ""; c = "doo"; para (b de ["Baby", "Daddy", "Mommy", "Grandpa", "Grandma"]) {b + = "Tiburón"; t = b + c. Repetición (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
BogdanBiv

2

jq, 87 caracteres

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

Ejecución de muestra:

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!

Pruébalo en línea!


2

TeX simple, 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

Más bien decepcionante, pero no he publicado una respuesta TeX en años. Los bucles son muy detallados en teX (y el bucle sobre las cadenas ni siquiera está incorporado, por lo que incluso esto es un poco exagerado)


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

Gracias a @manatwork por guardar 6 bytes al señalar que str_pad('',23'doo ');es más corto quertrim(str_repeat('doo ',6));

Pruébalo en línea!


Desafortunadamente, incluso $d='doo doo doo doo doo doo'es más corto que esa combinación rtrim()+ str_repeat(). :( Pero afortunadamente $d=str_pad('',23,'doo ')es aún más corto. Para obtener más consejos de optimización, consulte Consejos para jugar golf en PHP .
manatwork

@manatwork Gracias por señalarlo, he actualizado la publicación para reflejar
EvanBarbour3

1
Mientras tanto, encontré algo de tiempo para jugar un poco más: ¡ Pruébelo en línea!
manatwork

113 bytes . Bienvenido a PPCG!
Shaggy

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.