Sing Baby Shark

68

"Baby Shark" adalah lagu anak-anak tentang keluarga hiu. Telah lama populer sebagai lagu api unggun, telah dipopulerkan sejak pertengahan 2000-an oleh media sosial, video online dan radio. - Wikipedia

Tulis program yang tidak mengambil input, dan tulis teks berikut ke output standar atau file arbitrer:

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!

Ini adalah kode golf - kode terpendek menang.

Menemukan ini di Reddit ^ 1 ^ 2 , dan sepertinya ini tantangan yang menarik untuk golf.

Pembaruan:

Tidak ada baris baru di antara bait, yang membuatnya terlalu mudah :)

Memimpin / mengikuti baris baru tidak apa-apa.

njha
sumber
6
Apakah garis baru antara setiap bait (setiap hiu) dapat diterima? (Begitulah selalu saya melihat liriknya ditulis)
Quintec
6
Eh, hilang beberapa ayat, seperti semua tentang perenang yang berenang dan kehilangan anggota badan dalam serangan hiu.
mbomb007
2
"doo doo doo doo doo doo" benar-benar terlalu disederhanakan.
R ..
26
Sebagai orang tua, saya merasakan dorongan terkuat untuk menurunkan suara yang satu ini. Saya menekan keinginan itu karena itu bukan cara kerja Stack Exchange. Tetapi jika saya mendapati diri saya bersenandung "doo doo doo doo" hari ini, saya akan kembali ke sini dan meminta pertanggungjawaban Anda!
Cort Ammon
5
Berapa hari orang hancur sekarang karena ini di HNQ?
CactusCake

Jawaban:

74

Emojicode, 292 byte (140 karakter)

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

Menjalankannya

Diperluas:

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

Dijelaskan (per Emojicode doc):

🍇🍉

Sama dengan a {dan }(mis. Blok kode)

🏁

"Program mulai" (mis. int main())

🔤Baby🔤 ➡️ b

Penugasan variabel (mis. const char* b = "Baby";)

🍨b y o g a🍆➡️f

Mengatakan, buat daftar nilai antara 🍨 dan 🍆 dan tetapkan (➡️) ke f(misalnya const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

Baris ini mengatakan untuk mengulang elemen-elemen dalam fmenggunakan alias m, di mana ...kode adalah antara 🍇 dan 🍉.

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

Baris ini mengatakan untuk mengulangi rentang [0,3), di mana ...kode adalah antara 🍇 dan 🍉.

😀🍪 ... 🍪️❗️

Baris ini mengatakan untuk mencetak format yang ditentukan dalam ...(misalnya printf("%s\n");)

Kode diterjemahkan ke 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;
}

Setelah ini, kode asli (diposting di bawah untuk keturunan) memiliki beberapa masalah; sebagian besar bahwa blok was tidak termasuk untuk mereka yang ingin menjalankannya, dan emoji itu sebenarnya tidak benar-benar lolos, untuk itu, di sini adalah versi aktual dari kode itu:

Asli dimodifikasi untuk dijalankan: Emojicode, 224 byte (67 karakter)

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

Diperluas:

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

Yang menghasilkan output:

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

Menjalankannya

Di mana Anda memiliki emoji individu yang mewakili kata-kata:

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

Asli: Emojicode, 138 byte (47 karakter)

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

Diperluas:

🍨👶👨🤱👴👵🍆➡️f
🔂m f🍇
  🔂 i 🆕⏩⏩ 0 3❗️🍇
    😀 m 🦈💩💩💩💩💩💩❗️
  🍉
  😀 m 🦈!❗️
🍉
txtechhelp
sumber
31
Poin untuk kreativitas, tetapi ini tidak menghasilkan output yang diperlukan
Jo King
15
Selamat datang di situs ini! Ketika JoKing mulai, kami meminta agar jawaban melakukan apa yang ditanyakan di sini. Ini berarti bahwa sementara interpretasi Anda tentang tantangan itu kreatif, jawaban ini harus diperbaiki untuk menghasilkan output yang benar atau dihapus.
Wheat Wizard
12
Walaupun jawaban ini kreatif, ia tidak mengikuti persyaratan tantangan, dan karenanya tidak valid - teks harus berupa output persis seperti yang dinyatakan dalam tantangan.
Mego
8
Harap modifikasi jawaban ini untuk menghasilkan output yang benar, atau menghapusnya.
mbomb007
6
Selamat datang di situs ini! Ketika saya mencoba menjalankan kode ini secara online , saya mendapatkan kesalahan. (Ini juga menghitung 98 karakter, bukan 94). Apakah saya melewatkan sesuatu?
DJMcMayhem
31

IBM PC DOS, 8088 assembly, 115 114 109 108 byte

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

Belum dirakit:

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

Keluaran

DOS DIR, SHARK

Unduh SHARK.COM!

  • -5 byte berkat @Deadcode
640KB
sumber
6
Anda benar-benar gila.
MGOwen
5
Ketika Anda berkata Download SHARK.COM!, saya langsung memikirkan virus komputer.
MilkyWay90
@ gwaugh saya bercanda
MilkyWay90
@ gwaugh Tapi ini 109 byte
MilkyWay90
21

Python 2 , 93 byte

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

Cobalah online!

94 byte

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

Cobalah online!

Tidak
sumber
16

05AB1E , 50 41 byte

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

Bagian terakhir v4FN3Qiy'!«ë…doo6иyšðý},pasti bisa golf sedikit .. Dan saya benar, -9 byte terima kasih kepada @Emigna (bahkan lebih dari yang saya harapkan).

Cobalah online.

Penjelasan:

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

Lihat tip tambang 05AB1E ini (bagian Cara menggunakan kamus? ) Untuk memahami mengapa “‡ÍÊТ×myîºpaîºma“ini "baby daddy mommy grandpa grandma"dan 'ã¢itu "shark".

Kevin Cruijssen
sumber
2
Anda dapat bermain golf 9 byte dari bit terakhir denganv…doo6иyšÐy'!«»
Emigna
@Emigna Anda bahkan bermain golf lebih dari yang saya harapkan, terima kasih! Cara cerdas menggunakan rangkap tiga dan »!
Kevin Cruijssen
14

PowerShell, 88 86 85 80 79 76 byte

-5 byte terima kasih kepada @mazzy
-1 byte terima kasih kepada @ Joey
-3 byte terima kasih kepada @AdmBorkBork

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

Cobalah online!

Kita tentu saja sudah jauh.

PowerShell (dengan Text to Speech), 156 byte

Ini BUKAN untuk spec, tapi itu agak lucu. Terima kasih kepada @rkeet untuk idenya!

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

.NET Teks ke ucapan pengucapan adalah ... yah ... menarik. Ingatlah hal ini saat mendengarkan. Nikmati!

Gabriel Mills
sumber
2
80 byte :)
mazzy
1
Anda dapat menyimpan byte lain dengan menugaskan "$_ Shark"ke variabel dan menggunakannya kembali.
Joey
2
76 byte menggunakan echosebagai gantinya -split.
AdmBorkBork
1
Saya pikir Anda harus memiliki "text to speech" di sana juga: p Untuk itu mencoba untuk menggabungkannya sedikit dengan kode ini , tidak cukup bekerja :-)
rkeet
Tantangan @rkeet diterima! Saat ini saya bingung akan hal ini.
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+"!");}

Cobalah online!

Olivier Grégoire
sumber
Versi JDK yang mana? Saya menebak 8+ (lambdas).
NoOneIsHere
3
@NoOneIsHere Diberikan repeatmetodenya, ini versi 11+
Olivier Grégoire
9

Retina 0.8.2 , 77 75 74 byte


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

Cobalah online! Penjelasan:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Masukkan relasi pada baris yang berbeda.

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

Perluas menjadi empat baris.

s
S6$*O¶
O
 doo
S
 Shark

Perluas placeholder.

69 68 byte di Retina 1:


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

Cobalah online! Penjelasan:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Masukkan relasi pada baris yang berbeda.

.+
$& Shark

Tambahkan Shark ke masing-masing.

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

Perluas seluruh ayat.

Neil
sumber
9

Python 3, 105 97 96 byte

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

Cobalah online!

Solusi Python 3 yang sederhana. (9 byte disimpan oleh Jo King dan Quintec)

njha
sumber
2
Tanda kurung di sekitar ' doo'*6tidak perlu dan Anda memiliki ruang kosong yang tidak perlu di sana
Quintec
1
Apa kata quintec ... 97 byte
Jo King
2
@ReverseCold secara teknis di mana tidak ada []itu tuple bukan daftar, tapi itu tidak relevan dengan program ini
Stephen
2
96 byte dengan mengatur x+' Shark'ke variabel
Jo King
1
Ini tampaknya bekerja di 2,7 juga?
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"

Cobalah online!

  • "aaa">>xmereplikasi x3 kali, seperti yang "aaa"panjang 3.

  • s>>" doo"mereplikasi " doo"6 kali, seperti yang " Shark"memiliki panjang 6!

  • 2 byte disimpan berkat @Fox

  • 2 byte disimpan berkat @Laikoni
bintang dan bintang
sumber
2
Selamat datang di situs ini! Kami mengizinkan hanya menghasilkan string keluaran tetap sebagai ekspresi , sehingga Anda dapat menghilangkan main=putStr. Lihat juga ringkasan aturan Haskell .
xnor
1
Selamat datang di PPCG. Tabungan yang bagus s>>.
Shaggy
@xnata, terima kasih atas tautannya!
starsandspirals
1
m=(stuff)hanya bisa m=stuffuntuk dua byte lebih sedikit
Fox
1
104 byte dengan menggunakan do-notation: Cobalah online!
Laikoni
7

Perl 6 , 79 78 byte

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

Cobalah online!

Cukup mudah.

Penjelasan:

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

JavaScript, 104 byte

Lebih banyak golf untuk diikuti.

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

Cobalah secara Online!

Shaggy
sumber
1
Secara teknis ini bukan solusi yang valid karena tidak menulis ke file atau mencatatnya. Meskipun jika Anda menjadikannya solusi yang valid dengan membungkus dengan console.log(), Anda dapat menjadikannya bukan deklarasi lambda (hanya mendapatkan 10 karakter)
Delioth
3
@Delioth, kembali dari suatu fungsi sangat valid di situs ini. Lihat Meta untuk aturan I / O default kami.
Shaggy
2
Secara umum saya setuju, tetapi pertanyaan ini secara khusus menyatakan bahwa program "menulis teks berikut ke output standar atau file yang sewenang-wenang"
Delioth
7

bash, 78 byte

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

TIO

73 byte jika ruang trailing diizinkan

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

/// , 124 byte

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

Cobalah online!

Conor O'Brien
sumber
5

> <> , 158 115 byte

Menyimpan banyak byte berkat Jo King

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

Cobalah online! Anda mungkin juga ingin menempelkan kode di fishlanguage.com , di mana Anda dapat melihat animasi saat berenang .

DLosc
sumber
121 byte , sebagian besar melalui penataan ulang bayi / ayah / ... ke beberapa baris, bukan satu baris. Masih ada lagi golf
Jo King
115 byte
Jo King
@ Jo Ah, terima kasih. Saya cenderung berasumsi (kebanyakan dari bekerja dengan BitCycle) bahwa lebih sedikit garis yang lebih baik, tetapi dalam hal ini itu tidak benar karena panjang tali yang berbeda.
DLosc
5

PostgreSQL, 162 156 138 byte

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

Tidak disatukan

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

Disimpan 6 24 byte, terima kasih @Nahuel Fouilleul!

  • gunakan ||sebagai ganticoncat()
  • gunakan unnest('{foo,bar}'::text[])sebagai gantiregexp_split_to_table('foo,bar')

DB <> biola

Peter Vandivier
sumber
1
-6 byte menggunakan ||bukannya View
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 byte

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

Cobalah online!

Ini adalah pengoptimalan solusi Haskell oleh starsandspirals . Trik baru adalah untuk beralih di atas baris setiap bait dengan loop batin, dan bergabung dengan garis menggunakan unlines, menyimpan kebutuhan untuk secara eksplisit memasukkan baris baru.

Akhiran dari empat garis [a,a,a,"!"], mana ayang " doo"direplikasi 6 kali dengan a=s>>" doo", di mana starsandspirals cerdik menggunakan kembali enam karakter panjang s=" Shark". Menulis [a,a,a,...]terlihat agak konyol, tetapi saya tidak melihat cara yang lebih pendek.

Versi list-monad memiliki panjang yang sama tetapi terlihat keren.

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

Cobalah online!

Tidak
sumber
4

Ruby , 82 byte

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

Cobalah online!

Kirill L.
sumber
Butuh beberapa saat untuk memahami bahwa Anda menggunakan bagian "doo" sebagai pemisah array.
Kerja
4

R , 131 122 120 byte

-9 byte terima kasih kepada Giuseppe

-2 byte lagi, juga Giuseppe

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

Cobalah online!

Cukup bangga dengan ini sebenarnya, terutama dengan R yang agak miskin dalam menangani string. Saya mulai menggunakan cat(sapply(...)), tetapi menyadari loop for mencukur beberapa byte.

Menyalahgunakan "?"=csecara signifikan mengurangi jumlah kurung yang dibutuhkan.

Saya juga mencoba melakukan "*"=repuntuk mengulangi baris individual dari bait dan "doos", tetapi itu tidak memotong byte.

111 byte

Solusi alternatif Giuseppe dan ASCII saja, (dan lebih baik) yang memperbaiki beberapa masalah jarak.

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

Cobalah online!

Sumner18
sumber
1
122 bytes
Giuseppe
Seperti biasa, terima kasih atas masukan bijak Anda @Giuseppe. Saya seharusnya memperhatikan golf itu
Sumner18
1
120 byte
Giuseppe
1
@ Giuseppe wow, vektorisasi, bagus. Saya lupa R memiliki vektorisasi yang bagus seperti ini. 114? juga 114?
ASCII
1
juga 114
ASCII
3

PHP, 104 byte

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

Jalankan dengan php -nr '<code>'atau coba online .

Titus
sumber
103 bytes
Night2
3

R , 126 125 byte

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

Ini tidak terasa sepintar jawaban CT Hall atau Sumner18 , tetapi dengan menghindari overhead dari mendefinisikan variabel, hasilnya menjadi lebih kecil.

Cobalah online!

Sunting: Disimpan 1 byte dengan menggunakan carriage return sesuai komentar oleh Jonathan Frech

BobbyBean
sumber
Halo dan selamat datang di PPCG! Saya telah menambahkan tautan ke jawaban pengguna yang Anda sebutkan untuk lebih baik membandingkan solusi Anda. Selamat atas mengalahkan keduanya, dapatkah Anda menambahkan tautan ke lingkungan pengujian online untuk kemudahan verifikasi?
Jonathan Frech
Terima kasih atas hasil edit @JonathanFrech. Saya sekarang telah menambahkan tautan untuk menguji kode secara online (yang menambahkan satu byte ke jawaban saya!).
BobbyBean
Anda dapat menggunakan baris baru yang sebenarnya alih-alih \nmengembalikan byte byte Anda kembali.
Jonathan Frech
125 byte
Giuseppe
1
Yah aku benar-benar kalah; terkadang pilihan paling sederhana adalah yang terbaik. Juga menyoroti betapa sulitnya untuk bekerja dengan string dalam R.
CT Hall
3

R , 139 138 137 byte

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

Mungkin ada cara yang lebih baik untuk melakukan 'doo tetapi saya tidak bisa mendapatkannya.

Sunting:
Diganti '\ n' dengan baris baru yang sebenarnya atas saran JDL;
Dihapus mengikuti baris baru atas saran Giuseppe.

Cobalah online

CT Hall
sumber
selamat datang di ppcg! Paling tidak, mengganti "\ n" dengan baris baru literal akan menghemat satu byte.
JDL
Terima kasih, saya melakukannya, dan kemudian menyadari bahwa output saya sedikit berkurang sehingga saya memperbaruinya, sayangnya menghasilkan lebih banyak byte.
CT Hall
Saya yakin Anda memiliki baris tambahan tambahan untuk byte tambahan
Giuseppe
3

ketika Anda secara kebetulan kehilangan 100 negara mendukung negara bagian - 123.065 121.716 113.695 100.889 98.554 byte

Program

Saya akan golf ini nanti. Selesai.

Saya akan bermain golf ini lebih banyak (nanti) Selesai.

Saya akan bermain golf ini lebih lama lagi. SELESAI.

Saya akan mendapatkan jumlah byte hingga 5 digit nanti. YAY.

Saya akan mendapatkan jumlah byte hingga 4 digit (saya tidak tahu apakah ini mungkin, tetapi saya tahu tidak mungkin untuk mendapatkan 3 digit dengan pendekatan saya saat ini).

MilkyWay90
sumber
Apa-apaan ini? Saya menyukainya
Adrian Zhang
@AdrianZhang Bahasa pemrograman yang sulit diprogram. Selain itu, program ini terlihat seperti orang yang berteriak ('AAAAAAAAAAAA ...')
MilkyWay90
3

C (gcc) , 123 122 byte

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

Cobalah online!

gastropner
sumber
Apa aturan untuk C? Tidak perlu main(), atau #includeuntuk printf?
BoBTFish
@BoBTFish: Tidak spesifik-C tetapi secara umum diizinkan untuk menggunakan fungsi apa pun (nama tidak masalah, memang itu bisa berupa lambda tanpa nama atau sejenisnya). Dan bahasa didefinisikan oleh implementasinya, karena ini bekerja pada gcc(hanya menghasilkan peringatan, tetapi mengkompilasi dengan baik) itu valid.
ბიმო
Saya menyadari kekurangan #includeitu hanya kesalahan karena saya masih mengkompilasi sebagai C ++, tapi saya masih tidak bisa mengkompilasinya tanpa mengubah nama fungsi Anda menjadi main.
BoBTFish
2

cQuents , 93 89 bytes

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

Cobalah online!

Perhatikan bahwa pada saat memposting TIO tidak diperbarui ke versi terbaru, maka tautan TIO mungkin tidak berfungsi.

Penjelasan

|                               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
sumber
2

JavaScript (Node.js) , 132 byte

Mungkin sangat golf. Buat baris "doo doo", lalu buat tiga dari mereka dengan "!" baris setelah, dan ulangi ini untuk setiap hiu.

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)

Cobalah online!

Neil A.
sumber
Sebuah solusi yang sedikit berubah dalam Javascript, meskipun tidak menghasilkan: a = ""; c = "doo"; untuk (b dari ["Baby", "Daddy", "Mommy", "Kakek", "Nenek"]) {b + = "Shark"; t = b + c.ulangi (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
BogdanBiv
2

jq, 87 karakter

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

Contoh dijalankan:

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!

Cobalah online!

manatwork
sumber
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

Agak mengecewakan, tapi saya belum mengirim jawaban TeX di usia. Loop sangat bertele-tele dalam teX (dan looping pada string bahkan tidak built-in jadi bahkan ini sedikit peregangan)

Chris H.
sumber
2

PHP , 153 147 byte

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

Terima kasih kepada @manatwork karena telah menghemat 6 byte dengan menunjukkan str_pad('',23'doo ');lebih pendek darirtrim(str_repeat('doo ',6));

Cobalah online!

EvanBarbour3
sumber
Sayangnya bahkan $d='doo doo doo doo doo doo'lebih pendek dari kombinasi rtrim()+ itu str_repeat(). :( Tapi untungnya $d=str_pad('',23,'doo ')lebih pendek. Untuk kiat pengoptimalan lebih lanjut, lihat Kiat bermain golf di PHP .
manatwork
@manatwork Terima kasih telah menunjukkan hal itu, saya telah memperbarui pos untuk mencerminkan
EvanBarbour3
1
Sementara itu temukan waktu untuk bermain sedikit lebih banyak: Cobalah online!
manatwork
113 byte . Selamat datang di PPCG!
Shaggy
2
109 byte
Shaggy