Hát cá mập


68

"Baby Shark" là một bài hát thiếu nhi về một gia đình cá mập. Từ lâu đã trở nên phổ biến như một bài hát lửa trại, nó đã được phổ biến từ giữa những năm 2000 bởi phương tiện truyền thông xã hội, video trực tuyến và đài phát thanh. - Wikipedia

Viết chương trình không có đầu vào và ghi văn bản sau vào đầu ra tiêu chuẩn hoặc một tệp tùy ý:

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!

Đây là mã golf - mã ngắn nhất thắng.

Tìm thấy điều này trên Reddit ^ 1 ^ 2 , và nó có vẻ như là một thử thách thú vị đối với golf.

Cập nhật:

Không có dòng mới giữa các khổ thơ, điều đó làm cho nó quá dễ dàng :)

Hàng đầu / dấu vết mới là ổn.


6
Là một dòng mới giữa mỗi khổ thơ (mỗi con cá mập) có thể chấp nhận? (Đó luôn là cách tôi đã thấy lời bài hát được viết)
Quintec

6
Eh, thiếu một vài câu thơ, giống như tất cả những câu chuyện về những người bơi lội và mất chân tay trong các cuộc tấn công của cá mập.
mbomb007

2
"doo doo doo doo doo doo" thực sự quá đơn giản.
R ..

26
Là một phụ huynh, tôi cảm thấy sự thôi thúc mạnh mẽ nhất để hạ thấp người này. Tôi đang kìm nén sự thôi thúc bởi vì đó không phải là cách Stack Exchange hoạt động. Nhưng nếu tôi thấy mình ngân nga "doo doo doo doo" vào hôm nay, tôi sẽ quay lại đây và bắt bạn phải chịu trách nhiệm!
Cort Ammon

5
Đã bao nhiêu ngày mọi người bị hủy hoại vì điều này là trên HNQ?
CactusCake

Câu trả lời:



74

Biểu tượng cảm xúc, 292 byte (140 ký tự)

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

Chạy nó

Mở rộng ra:

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

Giải thích (theo tài liệu Biểu tượng cảm xúc ):

🍇🍉

Giống như a {}(ví dụ: khối mã)

🏁

"Bắt đầu chương trình" (ví dụ int main())

🔤Baby🔤 ➡️ b

Chuyển nhượng biến (ví dụ const char* b = "Baby";)

🍨b y o g a🍆➡️f

Nói, tạo một danh sách các giá trị giữa và và gán (➡️) cho f(ví dụ const char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

Dòng này nói về vòng lặp các phần tử trong fviệc sử dụng bí danh m, trong đó ...mã là giữa và.

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

Dòng này nói vòng lặp trong phạm vi [0,3), trong đó ...mã là giữa và.

😀🍪 ... 🍪️❗️

Dòng này nói để in định dạng được chỉ định trong ...(ví dụ printf("%s\n");)

Mã được dịch sang 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;
}

Theo đó, mã gốc (được đăng dưới đây cho hậu thế) đã có một số vấn đề; chủ yếu là khối không được bao gồm cho những người muốn chạy nó và biểu tượng cảm xúc không thực sự thoát được, do đó, đây là phiên bản chạy thực tế của mã đó:

Bản gốc được sửa đổi để chạy: Biểu tượng cảm xúc, 224 byte (67 ký tự)

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

Mở rộng ra:

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

Mà tạo ra đầu ra:

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

Chạy nó

Nơi bạn có biểu tượng cảm xúc riêng lẻ đại diện cho các từ:

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

Bản gốc: Biểu tượng cảm xúc, 138 byte (47 ký tự)

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

Mở rộng ra:

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

31
Điểm cho sự sáng tạo, nhưng điều này không tạo ra sản lượng cần thiết
Jo King

15
Chào mừng đến với trang web! Khi JoKing nhận được, chúng tôi yêu cầu các câu trả lời phải làm chính xác những gì câu hỏi yêu cầu ở đây. Điều này có nghĩa là trong khi giải thích về thách thức của bạn là sáng tạo, câu trả lời này nên được sửa để tạo ra đầu ra chính xác hoặc bị xóa.
Thuật sĩ lúa mì

12
Mặc dù câu trả lời này là sáng tạo, nó không tuân theo các yêu cầu của thử thách và do đó không hợp lệ - văn bản phải được xuất chính xác như đã nêu trong thử thách.
Mego

8
Vui lòng sửa đổi câu trả lời này để tạo đầu ra chính xác hoặc xóa nó.
mbomb007

6
Chào mừng đến với trang web! Khi tôi cố chạy mã này trực tuyến , tôi gặp lỗi. (Nó cũng đếm 98 ký tự thay vì 94). Tui bỏ lỡ điều gì vậy?
DJMcMayhem

31

IBM PC DOS, lắp ráp 8088, 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

Chưa được lắp ráp:

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

Đầu ra

DOS TRỰC TIẾP, SHARK

Tải xuống SHARK.COM!

  • -5 byte nhờ @Deadcode

6
Bạn điên tuyệt đối.
MGOwen

5
Khi bạn nói Download SHARK.COM!, tôi nghĩ ngay đến virus máy tính.
MilkyWay90

@gwaugh Tôi đã đùa
MilkyWay90

@gwaugh Nhưng đó là 109 byte
MilkyWay90


16

05AB1E , 50 41 byte

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

Phần cuối v4FN3Qiy'!«ë…doo6иyšðý},chắc chắn có thể được chơi golf một chút .. Và tôi đã đúng, -9 byte nhờ @Emigna (thậm chí nhiều hơn tôi mong đợi).

Hãy thử trực tuyến.

Giải trình:

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

Xem mẹo 05AB1E này của tôi (phần Làm thế nào để sử dụng từ điển? ) Để hiểu tại sao “‡ÍÊТ×myîºpaîºma“"baby daddy mommy grandpa grandma"'ã¢"shark".


2
Bạn có thể chơi golf 9 byte của bit cuối cùng đó vớiv…doo6иyšÐy'!«»
Emigna

@Emigna Bạn thậm chí còn chơi golf nhiều hơn tôi mong đợi, cảm ơn! Cách thông minh của việc sử dụng ba lần và »!
Kevin Cruijssen

14

PowerShell, 88 86 85 80 79 76 byte

-5 byte nhờ @mazzy
-1 byte nhờ @Joey
-3 byte nhờ @AdmBorkBork

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

Hãy thử trực tuyến!

Chúng tôi chắc chắn đã đi một chặng đường dài.

PowerShell (có chuyển văn bản thành giọng nói), 156 byte

Điều này KHÔNG theo thông số kỹ thuật, nhưng nó hơi buồn cười. Cảm ơn @rkeet cho ý tưởng!

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 để phát âm lời nói là ... cũng ... thú vị. Hãy ghi nhớ điều này khi lắng nghe. Thưởng thức!



1
Bạn có thể lưu một byte khác bằng cách gán "$_ Shark"cho một biến và sử dụng lại nó.
Joey

2
76 byte sử dụng echothay vì -split.
admBorkBork

1
Tôi nghĩ bạn cũng nên có một "văn bản để nói": p Vì địa ngục của nó đã cố gắng kết hợp nó một chút với mã này , đã không hoạt động tốt :-)
rkeet

@rkeet Thử thách được chấp nhận! Tôi hiện đang đánh đố điều này.
Gabriel Mills


9

Võng mạc 0.8.2 , 77 75 74 byte


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

Hãy thử trực tuyến! Giải trình:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Chèn các mối quan hệ trên các dòng riêng biệt.

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

Mở rộng thành bốn dòng.

s
S6$*O¶
O
 doo
S
 Shark

Mở rộng các trình giữ chỗ.

69 68 byte trong Retina 1:


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

Hãy thử trực tuyến! Giải trình:


Baby¶Daddy¶MommyGpaGma
G
¶Grand

Chèn các mối quan hệ trên các dòng riêng biệt.

.+
$& Shark

Nối Shark vào mỗi.

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

Mở rộng thành toàn bộ câu thơ.


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

Hãy thử trực tuyến!

Một giải pháp Python 3 đơn giản. (9 byte được lưu bởi Jo King và Quintec)


2
Các dấu ngoặc đơn xung quanh ' doo'*6là không cần thiết và bạn có khoảng trắng không cần thiết ở đó
Quintec

1
Những gì quintec đã nói ... 97 byte
Jo King

2
@ReverseCold về mặt kỹ thuật khi không có []danh sách nào không phải là một danh sách, nhưng điều đó không liên quan đến chương trình này
Stephen

2
96 byte bằng cách đặt x+' Shark'thành một biến
Jo King

1
Điều này dường như làm việc trong 2.7 là tốt?
uhoh

9

Haskell , 122 113 108 106 104 byte

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

Hãy thử trực tuyến!

  • "aaa">>xnhân rộng x3 lần, như "aaa"có chiều dài 3.

  • s>>" doo"nhân rộng " doo"6 lần, như " Shark"có chiều dài 6!

  • Lưu 2 byte nhờ @Fox

  • 2 byte được lưu nhờ @Laikoni

2
Chào mừng đến với trang web! Chúng tôi chỉ cho phép tạo một chuỗi đầu ra cố định dưới dạng một biểu thức , vì vậy bạn có thể bỏ qua main=putStr. Xem thêm tóm tắt quy tắc Haskell .
xnor

1
Chào mừng đến với PPCG. Tiết kiệm đẹp với s>>.
Xù xì

@xnor cảm ơn các liên kết!
starandspirals

1
m=(stuff)chỉ có thể m=stuffcho hai byte ít hơn
Fox

1
104 byte bằng cách sử dụng dochú thích: Hãy thử trực tuyến!
Laikoni

7

Perl 6 , 79 78 byte

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

Hãy thử trực tuyến!

Khá đơn giản.

Giải trình:

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

Thêm golf để làm theo.

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

Dùng thử trực tuyến!


1
Về mặt kỹ thuật, đây không phải là một giải pháp hợp lệ vì nó không ghi vào tệp hoặc ghi nhật ký. Mặc dù nếu bạn biến nó thành một giải pháp hợp lệ bằng cách gói bằng a console.log(), bạn có thể làm cho nó không phải là một tuyên bố lambda (chỉ tăng 10 ký tự)
Delioth

3
@Delioth, trở về từ một chức năng là hoàn toàn hợp lệ trên trang web này. Hãy xem Meta cho các quy tắc I / O mặc định của chúng tôi.
Xù xì

2
Tôi thường đồng ý, nhưng câu hỏi này nói rõ rằng chương trình "ghi văn bản sau vào đầu ra tiêu chuẩn hoặc một tệp tùy ý"
Delioth

7

bash, 78 byte

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

TIO

73 byte nếu không gian dấu được cho phép

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


5

> <> , 158 115 byte

Đã lưu rất nhiều byte nhờ Jo King

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

Hãy thử trực tuyến! Bạn cũng có thể muốn dán mã vào tại fishl Language.com , nơi bạn có thể thấy một hình ảnh động của nó đang bơi .


121 byte , chủ yếu thông qua việc sắp xếp lại em bé / bố / ... thành nhiều dòng thay vì một dòng. Có nhiều thứ hơn để chơi gôn
Jo King


@JoKing ơi, cảm ơn. Tôi có xu hướng giả định (chủ yếu là làm việc với BitCycle) rằng ít dòng hơn là tốt hơn, nhưng trong trường hợp này điều đó không đúng vì độ dài chuỗi khác nhau.
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

Ung dung

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

Đã lưu 6 24 byte nhờ @Nahuel Fouilleul!

  • sử dụng ||thay vìconcat()
  • sử dụng unnest('{foo,bar}'::text[])thay vìregexp_split_to_table('foo,bar')

DB <>


1
-6 byte sử dụng ||thay vì concat Xem trên 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 byte

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

Hãy thử trực tuyến!

Đây là một tối ưu hóa của giải pháp Haskell bởi các ngôi sao . Thủ thuật mới là lặp lại các hàng của mỗi khổ thơ bằng một vòng lặp bên trong và nối các dòng bằng cách sử dụng unlines, tiết kiệm nhu cầu chèn dòng mới một cách rõ ràng.

Các hậu tố của bốn dòng là [a,a,a,"!"], nơi ađược " doo"sao chép 6 lần với a=s>>" doo", trong đó các ngôi sao và các ngôi sao khéo léo sử dụng lại sáu ký tự dài s=" Shark". Viết có [a,a,a,...]vẻ hơi ngớ ngẩn, nhưng tôi không thấy một cách ngắn hơn.

Một phiên bản danh sách đơn có cùng độ dài nhưng nó trông rất tuyệt.

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

Hãy thử trực tuyến!


4

Ruby , 82 byte

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

Hãy thử trực tuyến!


Phải mất một thời gian tôi mới hiểu rằng bạn đã sử dụng phần "doo" làm bộ tách mảng. Làm tốt lắm :)
Idva

4

R , 131 122 120 byte

-9 byte nhờ Giuseppe

Thêm 2 byte, cũng là Giuseppe

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

Hãy thử trực tuyến!

Khá tự hào về điều này thực sự, đặc biệt là với R khá kém trong việc xử lý các chuỗi. Tôi bắt đầu sử dụng cat(sapply(...)), nhưng nhận ra một vòng lặp for sẽ loại bỏ một vài byte.

Lạm dụng "?"=clàm giảm đáng kể số lượng dấu ngoặc đơn cần thiết.

Tôi cũng đã cố gắng thực hiện "*"=repđể lặp lại các dòng riêng lẻ của khổ thơ và "doos", nhưng điều đó không làm mất đi bất kỳ byte nào.

111 byte

Giải pháp thay thế (và tốt hơn) chỉ dành cho Giuseppe và ASCII giúp khắc phục một số vấn đề về khoảng cách.

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

Hãy thử trực tuyến!



Như mọi khi, cảm ơn bạn vì đầu vào khôn ngoan của bạn @Giuseppe. Tôi nên chú ý những
sân golf đó


1
@Giuseppe wow, vector hóa, tốt đẹp. Tôi quên R có vector hóa đẹp như thế này. 114? còn 114?
ASCII-chỉ




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

Điều này không cảm thấy 'thông minh' như câu trả lời của CT Hall hoặc Sumner18 , nhưng bằng cách tránh chi phí xác định các biến, nó xuất hiện nhỏ hơn.

Hãy thử trực tuyến!

Chỉnh sửa: Đã lưu 1 byte bằng cách sử dụng trả lại vận chuyển theo nhận xét của Jonathan Frech


Xin chào và chào mừng đến với PPCG! Tôi đã thêm các liên kết đến câu trả lời của người dùng mà bạn đề cập để so sánh tốt hơn các giải pháp của bạn. Chúc mừng bạn đã vượt qua cả hai, bạn có thể thêm một liên kết đến một môi trường thử nghiệm trực tuyến để dễ xác minh không?
Jonathan Frech

Cảm ơn đã chỉnh sửa @JonathanFrech. Bây giờ tôi đã thêm một liên kết để kiểm tra mã trực tuyến (đã thêm một byte vào câu trả lời của tôi!).
BobbyBean

Bạn có thể sử dụng một dòng mới thực tế thay vì \nđưa số byte của bạn xuống một lần nữa.
Jonathan Frech


1
Vâng, tôi đã hoàn toàn vượt trội; đôi khi lựa chọn đơn giản nhất là tốt nhất Cũng nhấn mạnh mức độ khó khi làm việc với các chuỗi trong 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='
')

Có lẽ có một cách tốt hơn để làm 'doo's nhưng tôi không thể có được nó.

Chỉnh sửa: Đã
thay thế '\ n' bằng dòng mới thực tế theo đề xuất của JDL;
Xóa dòng mới theo gợi ý của Giuseppe.

Dùng thử trực tuyến


Chào mừng đến với ppcg! Ít nhất, thay thế "\ n" bằng một dòng mới theo nghĩa đen sẽ tiết kiệm được một byte.
JDL

Cảm ơn, tôi đã làm như vậy, và sau đó nhận ra đầu ra của tôi hơi bị tắt nên tôi đã cập nhật điều đó, thật đáng buồn là nó dẫn đến nhiều byte hơn.
Hội trường CT

Tôi tin rằng bạn có một dòng mới kéo dài thêm một byte
Giuseppe

3

khi bạn vô tình tiết lộ 100 phần bổ sung - 123,065 121,716 113,695 100,889 98,554 byte

Chương trình

Tôi sẽ chơi cái này sau. Làm xong.

Tôi sẽ chơi golf này nhiều hơn (sau này) Xong.

Tôi sẽ chơi golf này thậm chí nhiều hơn sau này. LÀM XONG.

Tôi sẽ nhận được số byte đến 5 chữ số sau. YAY.

Tôi sẽ nhận được số byte đến 4 chữ số (Tôi không biết nếu điều này là có thể, nhưng tôi biết không thể có được 3 chữ số với cách tiếp cận hiện tại của mình).


Cái quái gì đây? Tôi thích nó
Adrian Zhang

@AdrianZhang Một ngôn ngữ lập trình khó lập trình. Ngoài ra, chương trình trông giống như một người đang la hét ('AAAAAAAAAAA ...')
MilkyWay90

3

C (gcc) , 123 122 byte

-1 byte nhờ trần

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

Hãy thử trực tuyến!


Các quy tắc cho C là gì? Không cần main(), hay #includecho printf?
BoBTFish

@BoBTFish: Không dành riêng cho C nhưng nhìn chung nó được phép sử dụng bất kỳ chức năng nào (tên không quan trọng, thực sự nó có thể là lambda không tên hoặc tương tự). Và các ngôn ngữ được xác định bởi việc triển khai (bất kỳ) của chúng, vì điều này hoạt động trên gcc(chỉ tạo cảnh báo, nhưng biên dịch tốt) nên nó hợp lệ.
ბიმო

Tôi nhận ra rằng thiếu #includechỉ là một lỗi vì tôi vẫn đang biên dịch thành C ++, nhưng tôi vẫn không thể biên dịch nó mà không đổi tên hàm của bạn thành main.
BoBTFish

2

cQuents , 93 89 byte

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

Hãy thử trực tuyến!

Lưu ý rằng khi đăng TIO không được cập nhật lên phiên bản mới nhất, vì vậy liên kết TIO có thể không hoạt động.

Giải trình

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

Có lẽ rất có khả năng chơi gôn. Tạo dòng "doo doo", sau đó tạo ba trong số đó bằng dấu "!" dòng sau, và lặp lại điều này cho mỗi con cá mập.

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)

Hãy thử trực tuyến!


Một giải pháp thay đổi một chút trong Javascript, mặc dù không đạt được: a = ""; c = "doo"; for (b của ["Baby", "Daddy", "Mummy", "Grandpa", "Grandma"]) {b + = "Cá mập"; t = b + c.repeat (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
BogdanBiv

2

jq, 87 ký tự

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

Chạy mẫu:

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!

Hãy thử trực tuyến!


2

Đồng bằng TeX, 147 byte

\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

Khá thất vọng, nhưng tôi đã không đăng một câu trả lời TeX từ lâu. Các vòng lặp rất dài trong teX (và vòng lặp trên các chuỗi thậm chí không được tích hợp sẵn nên thậm chí đây là một chút kéo dài)


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

Cảm ơn @manatwork đã lưu 6 byte bằng cách chỉ ra str_pad('',23'doo ');ngắn hơnrtrim(str_repeat('doo ',6));

Hãy thử trực tuyến!


Thật không may, thậm chí còn $d='doo doo doo doo doo doo'ngắn hơn kết hợp rtrim()+ đó str_repeat(). :( Nhưng may mắn thay $d=str_pad('',23,'doo ')thậm chí còn ngắn hơn Đối với mẹo tối ưu hóa hơn, hãy xem. Lời khuyên cho việc chơi golf trong PHP .
manatwork

@manatwork Cảm ơn bạn đã chỉ ra rằng, tôi đã cập nhật bài đăng để phản ánh
EvanBarbour3

1
Trong khi chờ đợi một thời gian để chơi thêm một chút: Hãy thử trực tuyến!
manatwork

113 byte . Chào mừng đến với PPCG!
Xù xì

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.