Sing Bebek Köpekbalığı


68

"Bebek Köpekbalığı", köpekbalığı ailesi ile ilgili bir çocuk şarkısıdır. Uzun zamandır kamp ateşi şarkısı olarak popüler olan bu reklam, 2000'li yılların ortasından beri sosyal medya, çevrimiçi video ve radyo ile popüler hale geldi. - Wikipedia

Girdi almayan bir program yazın ve aşağıdaki metni standart çıktıya veya rastgele bir dosyaya yazar:

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!

Bu kod golf - en kısa kod kazanır.

Bunu Reddit ^ 1 ^ 2'de buldum ve golf oynamak için ilginç bir mücadele gibi görünüyor.

Güncellemeler:

Stanzalar arasında yeni bir çizgi yok, bu da onu çok kolaylaştırıyor :)

Önde gelen / takip eden yeni satırlar tamam.


6
Her stanza (her köpekbalığı) arasındaki yeni satır kabul edilebilir mi? (Bu şarkı sözlerini her zaman böyle gördüm)
Quintec

6
Eh, bir kaç ayeti kaçırıyor, aynı yüzücülerin yüzme ve köpekbalığı ataklarında uzuvlarını kaybetmeleri gibi.
mbomb007

2
"Doo Doo Doo Doo Doo Doo" gerçekten aşırı basitleştirilmiş.
R. ..

26
Bir ebeveyn olarak, bunu düşürmek için en büyük dürtüyü hissediyorum. Dürtüyü bastırıyorum çünkü Stack Exchange böyle çalışmıyor. Ama bugün kendimi "doo doo doo doo" gibi mırıldanırsam, buraya geri döneceğim ve seni sorumlu tutuyorum!
Cort Ammon

5
HNQ'larda olduğu için kaç insanın günü mahvoldu?
CactusCake

Yanıtlar:



74

Emojicode, 292 bayt (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🔤!🔤🍪❗️🍉🍉

Koş

Genişletilmiş:

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

Açıklanan ( Emojicode dokümanı başına ):

🍇🍉

A {ve }(örneğin bir kod bloğu) ile aynı

🏁

"Program başlangıcı" (örneğin int main())

🔤Baby🔤 ➡️ b

Değişken atama (örneğin const char* b = "Baby";)

🍨b y o g a🍆➡️f

Diyelim ki between ve 🍆 arasında bir değerler listesi oluşturun ve (➡️) 'a f(örneğin const char* f[] = {b,y,o,g,a};) ata

🔂m f🍇 ... 🍉

Bu çizgi öğeler boyunca döngü diyor ftakma adını kullanarak m, ...🍇 ve 🍉 arasındaki kodudur.

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

Bu satır ..., 0, ve 🍉 arasındaki kodun olduğu [0,3) aralığında dönmeye devam ettiğini söylüyor .

😀🍪 ... 🍪️❗️

Bu satır, ...(örn. printf("%s\n");) 'De belirtilen formatta yazdırılacağını söylüyor.

C'ye çevrilmiş kod:

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

Bunu takiben, asıl kodun (gelecek için aşağıya gönderildi) bazı sorunları vardı; çoğunlukla 🏁🍇🍉 bloğunu çalıştırmak isteyenler için dahil edilmedi ve emoji'ler aslında doğru bir şekilde kaçamadılardı, işte bu kodun asıl çalışan versiyonu:

Orijinal çalışması için değiştirildi: Emojicode, 224 bytes (67 karakter)

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

Genişletilmiş:

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

Hangi çıktıyı üretir:

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

Koş

Bireysel emojilerin kelimeleri temsil ettiği yerde:

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

Orijinal: Emojicode, 138 bayt (47 karakter)

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

Genişletilmiş:

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

31
Yaratıcılık için puan, ancak bu gerekli çıktıyı üretmez
Jo King

15
Siteye Hoşgeldiniz! JoKing'in elde ettiği gibi, cevapların burada sorulanın aynısını yapmasını gerektirir. Bu, meydan okuma hakkındaki yorumunuzun yaratıcı olmasına rağmen, bu cevabın doğru çıktıyı üretmek için düzeltilmesi veya silinmesi gerektiği anlamına gelir.
Buğday Sihirbazı

12
Bu cevap yaratıcı olsa da, zorunlulukların gerekliliklerini yerine getirmiyor ve bu nedenle geçerli değil - metin tam olarak zorla belirtildiği gibi çıktılanmalıdır.
Mego

8
Lütfen doğru çıktıyı üretmek için bu cevabı değiştirin veya silin.
mbomb007

6
Siteye Hoşgeldiniz! Bu kodu çevrimiçi olarak çalıştırmayı denediğimde hata alıyorum. (Ayrıca 94 yerine 98 karakter sayar). Bir şey mi eksik?
DJMcMayhem

31

IBM PC DOS, 8088 derlemesi, 115 114 109 108 bayt

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

unassembled:

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

Çıktı

DOS DIR, SHARK

SHARK.COM'u indirin!

  • @Deadcode sayesinde -5 bayt

6
Seni mutlak deli adam.
MGOwen

5
Dediğiniz zaman Download SHARK.COM!, hemen bilgisayar virüslerinin düşündük.
MilkyWay90

@gwaugh Şaka yapıyordum
MilkyWay90

@gwaugh Ama bu 109 bayt
MilkyWay90


16

05AB1E , 50 41 bayt

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

Son kısım v4FN3Qiy'!«ë…doo6иyšðý},kesinlikle biraz golf oynayabilir .. Ve haklıydım, @Emigna sayesinde -9 bayt (beklediğimden bile fazla).

Çevrimiçi deneyin.

Açıklama:

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

Benim bu 05AB1E ucu bakın (bölüm nasıl sözlüğü kullanılır? ) Anlamak için “‡ÍÊТ×myîºpaîºma“ise "baby daddy mommy grandpa grandma"ve 'ã¢olup "shark".


2
Bu son bitin 9 baytını golf v…doo6иyšÐy'!«»
oynayabilirsiniz

@Emigna Beklediğimden daha fazla golf oynadın, teşekkürler! Üçlü kullanmanın akıllı yolu ve »!
Kevin Cruijssen

14

PowerShell, 88 86 85 80 79 76 bayt

@AdzyBorkBork sayesinde @mazzy
-1 bayt sayesinde @Joey
-3 bayt sayesinde -5 bayt

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

Çevrimiçi deneyin!

Kesinlikle çok yol kat ettik.

PowerShell (Metinden Konuşmaya), 156 bayt

Bu spesifik değil, ama biraz eğlenceli. Fikir için @ rkeet'e teşekkürler!

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

.NET Konuşma telaffuz metni ... şey ... ilginç. Dinlerken bunu aklınızda bulundurun. Keyfini çıkarın!



1
"$_ Shark"Bir değişkene atayarak ve onu kullanarak başka bir bayttan tasarruf edebilirsiniz .
Joey

2
76 bayt kullanılarak echoyerine -split.
AdmBorkBork

1
Ben de orada bir "konuşma metni" olması gerektiğini düşünüyorum: p Cehennem için bu kodu biraz birleştirmeye çalıştım , pek işe yaramadı :-)
rkeet

@rkeet Mücadelesi kabul edildi! Şu anda bu şaşırtıcı.
Gabriel Mills


9

Retina 0.8.2 , 77 75 74 bayt


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

Çevrimiçi deneyin! Açıklama:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

İlişkileri ayrı satırlara yerleştirin.

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

Dört satıra genişletin.

s
S6$*O¶
O
 doo
S
 Shark

Yer tutucuları genişletin.

Retina 1'de 69 68 bayt :


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

Çevrimiçi deneyin! Açıklama:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

İlişkileri ayrı satırlara yerleştirin.

.+
$& Shark

Her birine Köpekbalığı ekleyin.

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

Bütün ayetler içine genişletin.


9

Python 3, 105 97 96 bayt

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

Çevrimiçi deneyin!

Basit bir Python 3 çözümü. (Jo King ve Quintec tarafından kaydedilen 9 bayt)


2
Etraftaki parantezler ' doo'*6gereksiz ve orada gereksiz boş alan var
Quintec

1
Ne quintec dedi ki ... 97 bytes
Jo King

2
@ReverseCold teknik olarak hiçbir olduğu yerde []bir tanımlama grubu değil listesi, ama bu programla ilgili değil
Stephen

2
x+' Shark'Bir değişkene ayarlayarak 96 bayt
Jo King

1
Bu 2.7 de çalışıyor gibi görünüyor?
01:54

9

Haskell , 122 113 108 106 104 bayt

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

Çevrimiçi deneyin!

  • "aaa">>xuzunluğu 3 xolduğu gibi 3 kez çoğalır "aaa".

  • s>>" doo"uzunluğu 6 " doo"olduğu gibi 6 kez çoğaltır " Shark"!

  • @Fox sayesinde 2 bayt kaydedildi

  • @Laikoni sayesinde 2 bayt kaydedildi

2
Siteye Hoşgeldiniz! Sadece bir ifade olarak sabit bir çıktı dizisi oluşturmaya izin veriyoruz , böylece ihmal edebilirsiniz main=putStr. Ayrıca bkz. Haskell kuralları özeti .
xnor

1
PPCG'ye Hoşgeldiniz. İle tasarruf güzel s>>.
Shaggy

@xnor linkler için teşekkürler!
starsandspirals

1
m=(stuff)sadece m=stuffiki daha az bayt için olabilir
Fox

1
do-Notation kullanarak 104 bayt : Çevrimiçi deneyin!
Laikoni

7

Perl 6 , 79 78 bayt

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

Çevrimiçi deneyin!

Oldukça basit.

Açıklama:

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

İzlenecek daha fazla golf.

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

Çevrimiçi Deneyin!


1
Bu teknik olarak geçerli bir çözüm değildir, çünkü ne bir dosyaya hem de dosyaya yazmaz, ne de kaydını tutar. A ile console.log()
silerek

3
@Delioth, bir işlevden dönen bu sitede mükemmel geçerlidir. Varsayılan G / Ç kurallarımız için Meta'ya bir göz atın.
Shaggy

2
Genelde hemfikir olurdum, fakat bu soru özellikle "aşağıdaki metni standart çıktıya veya keyfi bir dosyaya yazıyor" programını belirtir
Delioth

7

bash, 78 bayt

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

TIO

İzleyen alana izin verilirse 73 bayt

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


5

> <> , 158 115 bayt

Jo King sayesinde çok sayıda bayt kurtarıldı

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

Çevrimiçi deneyin! Aşağıdaki adreste kodu yapıştırın isteyebilirsiniz fishlanguage.com bunu animasyonunu görebilirsiniz yüzme çalışan.


121 bayt , çoğunlukla bebeği / babacığı / ... bir satır yerine birden çok satıra yeniden düzenleyerek. Yine de golf
Jo King,


@JoKing Ah, teşekkürler. (Çoğunlukla BitCycle ile çalışmaktan) daha az sayıda satırın daha iyi olduğunu kabul ediyorum, ancak bu durumda farklı dizi uzunlukları nedeniyle bu doğru değil.
DLosc

5

PostgreSQL, 162 156 138 bayt

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

Sayesinde 6 24 bayt kaydedildi @Nahuel Fouilleul!

  • ||yerine kullanmakconcat()
  • unnest('{foo,bar}'::text[])yerine kullanmakregexp_split_to_table('foo,bar')

DB <> keman


1
-6 bayt ||concat yerine kullanıyor DB
Fiddle'da

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 bayt

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

Çevrimiçi deneyin!

Bu Haskell çözümünün starsandspirals tarafından optimizasyonu . Yeni numara, her stanza'nın sıralarını bir iç döngü ile yinelemektir ve kullanarak satırları birleştirerek unlinesaçıkça yeni satırlar eklemeye gerek kalmadan tasarruf etmektir.

Dört satır ekleri olan [a,a,a,"!"]yerde, abir " doo"ile 6 defa tekrarlanır a=s>>" doo"starsandspirals akıllıca altı karakterli boyu yeniden kullanır burada, s=" Shark". Yazma [a,a,a,...]biraz saçma görünüyor, ama daha kısa bir yol göremiyorum.

Bir liste monad sürümü aynı uzunluktadır, ancak güzel görünüyor.

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

Çevrimiçi deneyin!


4

Ruby , 82 bayt

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

Çevrimiçi deneyin!


"Doo" bölümünü dizi ayırıcılar olarak kullandığınızı anlamam biraz zaman aldı. İyi iş :)
Idva

4

R , 131 122 120 bayt

Giuseppe sayesinde -9 bayt

-2 bayt daha, ayrıca Giuseppe

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

Çevrimiçi deneyin!

Bununla gerçekten gurur duyuyorum, özellikle de R'nin iplerle başa çıkmada oldukça fakir olması. Kullanmaya başladım cat(sapply(...)), ancak bir for byte tıraşının birkaç bayttan oluştuğunu fark ettim.

Kötüye kullanılması, "?"=cgerekli parantez miktarını önemli ölçüde azaltmıştır.

Ayrıca "*"=rep, stanzaların ve "doos" un bireysel çizgilerini tekrarlamaya çalıştım , ama bu baytları tıraş etmedi.

111 bayt

Giuseppe ve ASCII-only'ın bazı aralıklandırma sorunlarını gideren alternatif, (ve daha iyi) çözümü.

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

Çevrimiçi deneyin!



Her zaman olduğu gibi, bilge girişiniz @Giuseppe için teşekkür ederiz. Bu
golfleri


1
@Giuseppe vay, vectorization, güzel. R'nin böyle güzel bir vektörleşmesi olduğunu unuttum. 114? ayrıca 114?
ASCII-sadece




3

R , 126 125 bayt

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

Bu, CT Hall ya da Sumner18'in cevapları kadar 'zeki' hissetmez , ancak değişkenleri tanımlamanın ek yükünden kaçınarak küçük hale gelir.

Çevrimiçi deneyin!

Düzenleme: Jonathan Frech yorumuna göre satır başı kullanarak 1 bayt kaydedildi


Merhaba ve PPCG'ye hoş geldiniz! Çözümlerinizi daha iyi karşılaştırmak için kullanıcının belirttiğiniz yanıtlara bağlantılar ekledim. Her ikisini de geçtiğiniz için tebrikler, doğrulama kolaylığı için çevrimiçi bir test ortamına bir bağlantı ekleyebilir misiniz?
Jonathan Frech

@JonathanFrech düzenleme için teşekkürler. Şimdi çevrimiçi kodları test etmek için bir bağlantı ekledim (cevabımın bir baytı eklendi!).
BobbyBean

\nBayt sayınızı bir kez daha geri getirmek için gerçek bir yeni satır kullanabilirsiniz .
Jonathan Frech


1
Eh, ben tamamen kızgınım; bazen en basit seçenek en iyisidir. Ayrıca, R'de dizelerle çalışmanın ne kadar zor olduğunu vurgulamaktadır
CT Hall

3

R , 139 138 137 bayt

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

Muhtemelen yapılacak doo yapmanın daha iyi bir yolu var, ama alamadım.

Düzenleme:
'\ n', JDL'nin önerisindeki yeni satırla değiştirildi;
Giuseppe'nin önerisinde kaldırılan son satır kaldırıldı.

Çevrimiçi deneyin


ppcg'ye hoş geldiniz! En azından, "\ n" nin değişmez bir yeni satırla değiştirilmesi bir bayttan tasarruf sağlayacaktır.
JDL

Teşekkürler, yaptım ve sonra çıktımın biraz kapalı olduğunu farkettim, bu yüzden bunu güncelledim, ne yazık ki daha fazla bayt ile sonuçlandı.
CT Hall

Ekstra bir bayt için son bir yeni hattınız olduğuna inanıyorum
Giuseppe

3

ne zaman kazara ölürsünol 100endorsementsinnationstates - 123,065 121,716 113,695 100,889 98,554 bayt

Program

Bunu sonra golf oynarım. Bitti.

Bunu daha sonra golf oynayacağım (daha sonra) Yapıldı.

Bunu daha sonra golf oynayacağım. YAPILAN.

Bayt sayısını 5 basamağa getireceğim. YUPPİ.

Bayt sayısını 4 basamağa alacağım (bunun mümkün olup olmadığını bilmiyorum, ancak şu anki yaklaşımımla 3 basamak almanın imkansız olduğunu biliyorum).


Bu da nedir böyle? Bayıldım
Adrian Zhang

@AdrianZhang Programlanması zor bir programlama dili. Ayrıca, program çığlık atan bir kişi gibi görünüyor ('AAAAAAAAAAA ...')
MilkyWay90

3

C (gcc) , 123 122 bayt

Ceilingcat sayesinde -1 bayt

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

Çevrimiçi deneyin!


C kuralları nelerdir? Gerek yok main()ya #includeiçin printf?
BoBTFish

@BoBTFish: C'ye özgü değildir, ancak genel olarak herhangi bir işlevi kullanmasına izin verilir (adın önemi yoktur, aslında adsız bir lambda veya benzeri olabilir). Ve diller (herhangi) uygulamalarıyla tanımlanır, çünkü bunun üzerinde çalıştığı için gcc(yalnızca uyarılar üretir, ancak para cezası derler) geçerlidir.
ბიმო

Eksikliğinin #includesadece bir hata olduğunu fark ettim, çünkü hala C ++ olarak derledim, ama yine de işlevinizi yeniden adlandırmadan derlemeyi başaramadım main.
BoBTFish

2

cQuents , 93 89 bayt

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

Çevrimiçi deneyin!

TIO gönderimden itibaren en son sürüme güncellenmediğinden, TIO bağlantısının çalışmayabileceğini unutmayın.

açıklama

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

Muhtemelen çok golf yapabiliyor. "Doo doo" satırını oluşturur, daha sonra "!" İle üç tanesini oluşturur. sonra satır ve her köpekbalığı için bunu tekrarlar.

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)

Çevrimiçi deneyin!


Javascript'te biraz değiştirilmiş bir çözüm, ancak hiçbir kazanç yok: a = ""; c = "doo"; (("Bebek", "Baba", "Anne", "Büyükbaba", "Büyükanne") için b) {b + = "Shark"; t = b + c.resit (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+"!"

Örnek çalışma:

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!

Çevrimiçi deneyin!


2

Düz TeX, 147 Bayt

\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

Oldukça hayal kırıklığı yaratıyor, ancak çok uzun zamandır bir TeX mesajı göndermedim. Döngüler teX'te çok ayrıntılıdır (ve dizgelerin üzerinden döngü bile yerleşik değildir, bu yüzden bu biraz gergindir)


2

PHP , 153 147 bayt

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

6 bayt tasarruf için @manatwork teşekkürler işaret ederek str_pad('',23'doo ');kısartrim(str_repeat('doo ',6));

Çevrimiçi deneyin!


Maalesef $d='doo doo doo doo doo doo'bu rtrim()+ str_repeat()kombinasyonundan bile daha kısa . : (Neyse ki $d=str_pad('',23,'doo ')daha da kısadır. Daha fazla optimizasyon ipucu için bkz . PHP'de golf oynamaya ilişkin ipuçları .)
Manatwork

@manatwork Buna dikkat çektiğiniz için teşekkür ederiz,
yazıyı

1
Bu arada biraz daha oynamak için biraz zaman buldu: Çevrimiçi deneyin!
Manatwork

113 bayt . PPCG'ye Hoşgeldiniz!
Shaggy

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.