赤ちゃんサメを歌う


68

「サメの赤ちゃん」は、サメの家族に関する子供向けの歌です。キャンプファイヤーの歌として長い間人気がありましたが、2000年代半ばからソーシャルメディア、オンラインビデオ、ラジオで人気を博しています。- ウィキペディア

入力を受け取らず、次のテキストを標準出力または任意のファイルに書き込むプログラムを作成します。

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!

これはコードゴルフです。最短のコードが勝ちます。

これはReddit ^ 1 ^ 2で発見され、ゴルフへの興味深い挑戦のようです。

更新:

スタンザ間に改行はありません。簡単になります:)

先頭/末尾の改行は問題ありません。


6
各スタンザ(各サメ)間の改行は許容されますか?(それが常に私が書いた歌詞を見た方法です)
Quintec

6
ええと、サメの攻撃で泳いで手足を失ったスイマーについてのすべてのもののように、いくつかの詩がありません。
mbomb007

2
「ドゥードゥードゥードゥードゥードゥー」は本当に単純化されすぎています。
R ..

26
親として、私はこれを支持する最も強い衝動を感じます。Stack Exchangeの仕組みではないので、私は衝動を抑えています。しかし、今日遅くなって「ドゥードゥードゥードゥー」と口ずさむことに気付いたら、ここに戻ってあなたに説明責任を持たせます!
コートアンモン

5
これがHNQ上にあるため、今では何日が台無しになっていますか?
CactusCake

回答:



74

絵文字コード、292バイト(140文字)

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

それを実行します

展開された:

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

説明(Emojicode文書による):

🍇🍉

{および}(コードブロックなど)と同じ

🏁

「プログラム開始」(例int main()

🔤Baby🔤 ➡️ b

変数の割り当て(例const char* b = "Baby";

🍨b y o g a🍆➡️f

ysと🍨の間の値のリストを作成し、(🍆️)をf(例const char* f[] = {b,y,o,g,a};)に割り当てる

🔂m f🍇 ... 🍉

この行はf、エイリアスを使用して要素をループすることを示しています。mここで、the ...はtheとbetweenの間のコードです。

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

この行は、範囲[0,3)でループすること...を示しています。ここで、は🍉とbetweenの間のコードです。

😀🍪 ... 🍪️❗️

この行は、で指定された形式を印刷するように指示します...(例printf("%s\n");

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

これに続いて、元のコード(後世のために以下に投稿)にはいくつかの問題がありました。ほとんどの場合、🏁🍇🍉ブロックは実行したい人には含まれておらず、絵文字は実際には適切にエスケープされていなかったため、ここにそのコードの実際の実行バージョンがあります:

修正されたオリジナル:Emojicode、224バイト(67文字)

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

展開された:

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

出力を生成します:

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

それを実行します

個々の絵文字が単語を表している場所:

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

オリジナル:絵文字コード、138バイト(47文字)

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

展開された:

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

31
創造性のポイントですが、これは必要な出力を生成しません
Jo King

15
サイトへようこそ!JoKingが目指していたように、ここでの質問のとおりに答えを行う必要があります。つまり、チャレンジの解釈は創造的ですが、この答えは修正して正しい出力を生成するか、削除する必要があります。
ウィートウィザード

12
この答えは創造的ですが、チャレンジの要件に従っていないため、有効ではありません-チャレンジに記載されているとおりにテキストを出力する必要があります。
Mego

8
この回答を修正して正しい出力を生成するか、削除してください。
mbomb007

6
サイトへようこそ!このコードをオンライン実行しようとすると、エラーが発生します。(94文字ではなく98文字もカウントします)。何か不足していますか?
DJMcMayhem

31

IBM PC DOS、8088アセンブリ、 115 114 109 108バイト

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

組み立てられていない:

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

出力

DOS DIR、サメ

SHARK.COMをダウンロードしてください!

  • @Deadcodeのおかげで-5バイト

6
あなたは絶対狂人。
MGOwen

5
あなたが言ったときDownload SHARK.COM!、私はすぐにコンピューターウイルスについて考えました。
MilkyWay90

@gwaugh私は冗談だった
MilkyWay90

@gwaughしかし、それは109バイトです
MilkyWay90


16

05AB1E50 41 バイト

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

最後の部分v4FN3Qiy'!«ë…doo6иyšðý},は、間違いなく少しゴルフをすることができます。そして、@ Emignaのおかげで、-9バイトのおかげで正しかったです(予想以上でした)。

オンラインでお試しください。

説明:

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

(セクション鉱山のこの05AB1Eチップを参照してください。辞書を使用する方法?理由を理解すること“‡ÍÊТ×myîºpaîºma“である"baby daddy mommy grandpa grandma"'ã¢されます"shark"


2
あなたはゴルフができでその最後のビットの9バイトv…doo6иyšÐy'!«»
Emigna

@Emignaあなたは私が予想した以上にゴルフをしました、ありがとう!トリプリケートと»
ケビンクルーッセン

14

PowerShell、88 86 85 80 79 76バイト

@mazzyのおかげで-5バイト@Joeyのおかげで
-1バイト@AdmBorkBorkの
おかげで-3バイト

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

オンラインでお試しください!

確かに長い道のりを歩んできました。

PowerShell(Text to Speechを使用)、156バイト

これは仕様次第ではありませんが、ちょっとおかしいです。@rkeetのアイデアに感謝します!

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

.NET Text to Speechの発音は...まあ...面白いです。聞いているとき、これを覚えておいてください。楽しい!



1
"$_ Shark"変数に割り当てて再利用することにより、別のバイトを保存できます。
ジョーイ

2
echo代わりに使用する76バイト-split
AdmBorkBork

1
私はあなたもそこに「スピーチへのテキスト」を持っているべきだと思う:pそれの地獄のためにそれをこのコードと少し組み合わせようとしたが、うまく
いき

@rkeetチャレンジが受け入れられました!私は現在これを不可解にしています。
ガブリエルミルズ


9

網膜0.8.277の 75 74バイト


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

オンラインでお試しください!説明:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

リレーションを別の行に挿入します。

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

4行に展開します。

s
S6$*O¶
O
 doo
S
 Shark

プレースホルダーを展開します。

Retina 1 で69 68バイト


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

オンラインでお試しください!説明:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

リレーションを別の行に挿入します。

.+
$& Shark

それぞれにサメを追加します。

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

全体の詩に展開します。


9

Python 3、105 97 96バイト

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

オンラインでお試しください!

シンプルなPython 3ソリューション。(Jo KingとQuintecにより9バイト保存)


2
括弧' doo'*6は不要であり、不要な空白があります
Quintec

1
quintecが言ったこと... 97バイト
Jo King

2
@ReverseColdは技術的に[]はリストではなくタプルですが、このプログラムには関係ありません
Stephen

2
x+' Shark'変数に設定して96バイト
Jo King

1
これは2.7でも動作するようです?
uhoh

9

ハスケル122の 113 108 106 104バイト

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

オンラインでお試しください!

  • "aaa">>x長さ3のxよう"aaa"に、3回複製します。

  • s>>" doo"長さ6の" doo"よう" Shark"に、6回複製します!

  • @Foxのおかげで2バイト節約

  • @Laikoniのおかげで2バイト節約

2
サイトへようこそ!式として固定出力文字列を生成するだけでよいため、main=putStrHaskellルールの概要も参照してください。
xnor

1
PPCGへようこそ。で素敵な節約s>>
シャギー

@xnorリンクをありがとう!
スターアンドスパイラルズ

1
m=(stuff)m=stuff2バイト少なくすることができます
Fox

1
do-notation を使用して104バイト:オンラインで試してください!
ライコニ


7

JavaScript、104バイト

続くゴルフ。

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

オンラインでお試しください!


1
これは、ファイルへの書き込みもログへの記録も行わないため、技術的には有効なソリューションではありません。console.log()ただし、でラップして有効なソリューションにする場合は、ラムダ宣言ではなく(10文字のゲインのみ)にすることができます
Delioth

3
関数から戻る@Deliothは、このサイトで完全に有効です。デフォルトのI / Oルールについては、Metaをご覧ください。
シャギー

2
私は一般的に同意しますが、この質問は、プログラムが「次のテキストを標準出力または任意のファイルに書き込む」ことを明確に述べています
Delioth

7

bash、78バイト

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

TIO

後続スペースが許可されている場合は73バイト

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


5

> <>158 115バイト

ジョー・キングのおかげで多くのバイトを節約しました

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

オンラインでお試しください!また、fishlanguage.comにコードを貼り付けることもできます。ここでは、実行中の水泳のアニメーションを見ることができます。


121バイト。主にbaby / daddy / ...を1行ではなく複数行に再配置します。ゴルフに
ジョーキング


@JoKingあ、ありがとう。私は(主にBitCycleでの作業から)より少ない行がより良いと仮定する傾向がありますが、この場合、異なる文字列の長さのためにそれは真実ではありません。
DLosc

5

PostgreSQL、162 156 138バイト

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

非ゴルフ

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

おかげで6 24バイト節約@Nahuel Fouilleul

  • ||代わりに使用するconcat()
  • unnest('{foo,bar}'::text[])代わりに使用するregexp_split_to_table('foo,bar')

DB <>フィドル



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
ナウエル・フイユル

5

Haskell、97バイト

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

オンラインでお試しください!

これは、最適化されHaskellのソリューションによってstarsandspirals。新しいトリックは、各ループの行を内部ループで繰り返し、を使用して行を結合することunlinesです。明示的に改行を挿入する必要がありません。

4行の接尾辞である[a,a,a,"!"]a" doo"で6回複製a=s>>" doo"starsandspiralsが巧み6文字長を再利用し、s=" Shark"。書くの[a,a,a,...]は少しばかげているように見えますが、もっと短い方法は見当たりません。

リストモナドバージョンは同じ長さですが、見た目はクールです。

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

オンラインでお試しください!



4

R131の 122 120バイト

ジュゼッペのおかげで-9バイト

-2バイト以上、ジュゼッペ

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

オンラインでお試しください!

実際、これは非常に誇りに思っています。特に、Rは文字列の処理がかなり苦手です。私はを使い始めましたcat(sapply(...))が、forループが数バイトを削ることに気付きました。

を乱用すると、"?"=c必要な括弧の量が大幅に削減されました。

"*"=repスタンザと「ドゥー」の個々の行を繰り返すことも試みましたが、それはバイトを削りませんでした。

111バイト

ジュゼッペとASCIIのみの代替、およびいくつかの間隔の問題を修正する(より良い)ソリューション。

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

オンラインでお試しください!



いつものように、賢明な入力@Giuseppeに感謝します。私はそれらのgolfs気づいているはず
Sumner18


1
@Giuseppeすごい、ベクトル化、いいね。Rにはこのような素晴らしいベクトル化があることを忘れていました。114? また114?
ASCIIのみ




3

R126125バイト

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

これはCT HallSumner18の答えのように「賢い」とは感じませんが、変数を定義するオーバーヘッドを回避することで、より小さくなります。

オンラインでお試しください!

編集:ジョナサンフレッチによるコメントごとにキャリッジリターンを使用して1バイトを保存


こんにちは、PPCGへようこそ!ソリューションをよりよく比較するために、あなたが言及したユーザーの回答へのリンクを追加しました。両方のアウトゴルフをおめでとうございます。検証を容易にするために、オンラインテスト環境へのリンクを追加できますか?
ジョナサンフレッチ

@JonathanFrechを編集してくれてありがとう。オンラインでコードをテストするためのリンクを追加しました(回答に1バイト追加されました!)。
ボビービーン

\nバイトカウントを1に戻す代わりに、実際の新しい行を使用できます。
ジョナサンフレッチ


1
まあ、私は完全にアウトゴルフされています。場合によっては、最も単純なオプションが最適です。また、それはR.内の文字列で作業するのがいかに難しい浮き彫りに
CTホール

3

R139の 138 137バイト

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

「ドゥー」を行うより良い方法はおそらくありますが、私はそれを得ることができませんでした。

編集:
JDLの提案で「\ n」を実際の新しい行に置き換えました。
Giuseppeの提案で末尾の改行を削除しました。

オンラインで試す


ppcgへようこそ!少なくとも、「\ n」をリテラルの改行で置き換えると、1バイト節約されます。
JDL

おかげで、そうしましたが、出力が少しずれていることに気づいたので、それを更新しました。
CTホール

余分なバイトの末尾に改行があると思います
ジュゼッペ

3

whenyouaccidentallylose100endorsementsinnationstates - 123065の 121716 113695 100889 98554バイト

プログラム

これは後でゴルフします。できた

私はこれからもっとゴルフをします(後で)

私はこれをさらに後でゴルフします。できました。

バイトカウントを5桁後に取得します。わーい。

バイトカウントを4桁にします(これが可能かどうかはわかりませんが、現在のアプローチでは3桁を取得することは不可能です)。


これはなに?大好きです
エイドリアン・チャン

@AdrianZhangプログラミングが難しいプログラミング言語。また、プログラムは叫んでいる人のように見えます( 'AAAAAAAAAAA ...')
MilkyWay90

3

C(gcc)123 122バイト

ceilingcatのおかげで-1バイト

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

オンラインでお試しください!


Cのルールは何ですか?必要はありませんmain()、または#includeのためにprintf
BoBTFish

@BoBTFish:C固有ではありませんが、通常は任意の関数を使用できます(名前は関係ありません。実際、名前のないラムダなどでもかまいません)。また、言語は(任意の)実装によって定義されgccます。これは有効であるため(警告のみを生成しますが、コンパイルは正常に行われます)。
ბიმო

#includeはまだC ++としてコンパイルしているので、不足はエラーにすぎないことに気付きましたが、関数の名前をに変更しないとコンパイルできませんでしたmain
BoBTFish

2

cQuents93 89バイト

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

オンラインでお試しください!

TIOの投稿時点では、TIOは最新バージョンに更新されていないため、TIOリンクが機能しない場合があります。

説明

|                               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バイト

おそらく非常にゴルフに適しています。「doo doo」行を生成し、「!」で3つの行を作成します 後、各サメに対してこれを繰り返します。

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)

オンラインでお試しください!


Javascriptのわずかに変更されたソリューション、ただしゲインなし:a = ""; c = "doo"; for(b of ["Baby"、 "Daddy"、 "Mommy"、 "Grandpa"、 "Grandma"]){b + = "Shark"; t = b + c.repeat(6)+ "\ n"; a + = t + t + t + b + "!\ n"} console.log(a)
BogdanBiv

2

jq、87文字

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

サンプル実行:

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!

オンラインでお試しください!


2

プレーンTeX、147バイト

\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

残念ですが、私は長年TeXの回答を投稿していません。teXではループは非常に冗長です(また、文字列のループは組み込まれていませんので、これでも少し拡張されます)


2

PHP153 147バイト

<?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バイトを節約してくれた@manatworkのおかげでstr_pad('',23'doo ');rtrim(str_repeat('doo ',6));

オンラインでお試しください!


残念ながら$d='doo doo doo doo doo doo'、そのrtrim()+ str_repeat()組み合わせよりも短いです。:(しかし、幸い$d=str_pad('',23,'doo ')にも短い、より最適化のヒントについては、を参照してください。PHPでのゴルフのためのヒントを
manatwork

@manatworkそれを指摘してくれてありがとう、私は反映するために投稿を更新しました
EvanBarbour3

1
それまでの間、もう少しプレイする時間を見つけました:オンラインで試してみてください!
マナトワーク

113バイト。PPCGへようこそ!
シャギー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.