สิงห์ฉลามน้อย


68

"Baby Shark" เป็นเพลงสำหรับเด็กเกี่ยวกับครอบครัวของฉลาม หลังจากที่ได้รับความนิยมในฐานะเพลงแคมป์ไฟมันได้รับความนิยมมาตั้งแต่กลางทศวรรษ 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
"doo doo doo doo doo doo doo" นั้นง่ายเกินไป
..

26
ในฐานะผู้ปกครองฉันรู้สึกว่าแรงที่สุดในการลงคะแนนอันนี้ ฉันกำลังอดกลั้นเพราะนั่นไม่ใช่วิธีการแลกเปลี่ยนแบบสแต็ก แต่ถ้าฉันพบว่าตัวเองฮัมเพลง "doo doo doo doo" ในวันนี้ฉันจะกลับมาที่นี่และถือคุณไว้รับผิดชอบ!
Cort Ammon

5
กี่วันที่คนจำนวนมากถูกทำลายในขณะนี้ที่อยู่ใน HNQs?
CactusCake

คำตอบ:



74

Emojicode, 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 doc):

🍇🍉

เช่นเดียวกับ{และ}(เช่นบล็อคโค้ด)

🏁

"โปรแกรมเริ่มต้น" (เช่นint main())

🔤Baby🔤 ➡️ b

การมอบหมายตัวแปร (เช่นconst char* b = "Baby";)

🍨b y o g a🍆➡️f

กล่าวสร้างรายการของค่าระหว่าง🍨ถึง🍆และมอบหมาย (➡️) ให้กับf(เช่นconst char* f[] = {b,y,o,g,a};)

🔂m f🍇 ... 🍉

บรรทัดนี้บอกว่าจะวนซ้ำองค์ประกอบในการfใช้นามแฝงmโดยที่...เป็นรหัสระหว่าง🍇และ🍉

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

บรรทัดนี้บอกว่าจะวนซ้ำในช่วง [0,3) โดยที่...เป็นรหัสระหว่าง🍇ถึง🍉

😀🍪 ... 🍪️❗️

บรรทัดนี้บอกว่าจะพิมพ์รูปแบบที่ระบุใน...(เช่น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;
}

การติดตามสิ่งนี้รหัสดั้งเดิม (โพสต์ด้านล่างเพื่อลูกหลาน) มีปัญหาบางอย่าง ส่วนใหญ่บล็อก was ไม่ได้ถูกรวมไว้สำหรับผู้ที่ต้องการเรียกใช้และอีโมจิก็ไม่ได้หลบหนีอย่างถูกต้องไปที่นี่นี่เป็นเวอร์ชั่นที่ใช้งานจริงของรหัสนั้น:

แก้ไขต้นฉบับเพื่อให้ทำงาน: 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

ต้นฉบับ: Emojicode, 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
ยินดีต้อนรับสู่เว็บไซต์! เมื่อฉันพยายามเรียกใช้รหัสนี้ออนไลน์ฉันได้รับข้อผิดพลาด (นอกจากนี้ยังนับ 98 อักขระแทน 94) ฉันพลาดอะไรไปรึเปล่า?
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

ดาวน์โหลด SHARK.COM!

  • -5 ไบต์ขอบคุณ @Deadcode

6
คุณเป็นคนบ้าแน่นอน
MGOwen

5
เมื่อคุณพูดDownload SHARK.COM!ฉันก็นึกถึงไวรัสคอมพิวเตอร์ทันที
MilkyWay90

@gwaugh ฉันถูกล้อเล่น
MilkyWay90

@gwaugh แต่มันคือ 109 ไบต์
MilkyWay90


16

05AB1E , 50 41 ไบต์

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

ส่วนสุดท้ายv4FN3Qiy'!«ë…doo6иyšðý},สามารถเล่นกอล์ฟได้เล็กน้อย ..และฉันก็ถูกต้อง -9 ไบต์ขอบคุณ@Emigna (ยิ่งกว่าที่ฉันคาดไว้)

ลองออนไลน์

คำอธิบาย:

“‡ÍÊТ×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 คุณเล่นกอล์ฟมากกว่าที่ฉันคาดไว้ขอบคุณ! วิธีที่ชาญฉลาดในการใช้เพิ่มขึ้นสามเท่าและ»!
Kevin Cruijssen

14

PowerShell, 88 86 85 80 79 76 ไบต์

-5 ไบต์ขอบคุณ @mazzy
-1 ไบต์ขอบคุณ @Joey
-3 ไบต์ขอบคุณ @AdmBorkBork

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

ลองออนไลน์!

เรามาไกลแน่นอน

PowerShell (พร้อมข้อความเป็นคำพูด) 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 การออกเสียงข้อความเป็น ... ดี ... น่าสนใจ เก็บสิ่งนี้ไว้ในใจเมื่อฟัง สนุก!



1
คุณสามารถบันทึกไบต์อื่นได้โดยกำหนดให้"$_ Shark"กับตัวแปรแล้วนำกลับมาใช้ใหม่
Joey

2
76 ไบต์ใช้แทนecho -split
AdmBorkBork

1
ฉันคิดว่าคุณควรมี "ข้อความเป็นคำพูด" ในที่นั่นเช่นกัน: p สำหรับนรกของมันพยายามรวมเข้ากับรหัสนี้เล็กน้อยใช้งานไม่ได้ :-)
rkeet

@rkeet Challenge ยอมรับแล้ว! ฉันกำลังงงงวยเรื่องนี้
Gabriel Mills


9

เรติน่า 0.8.2 , 77 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!¶

ขยายเป็นสี่บรรทัด

s
S6$*O¶
O
 doo
S
 Shark

ขยายตัวยึด

69 68 ไบต์ในRetina 1:


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 อย่างง่าย (9 ไบต์บันทึกโดย Jo King และ Quintec)


2
วงเล็บที่อยู่รอบ ๆ' doo'*6นั้นไม่จำเป็นและคุณมีช่องว่างที่ไม่จำเป็น
Quintec

1
สิ่งที่ควินเทคพูด ... 97 ไบต์
โจคิง

2
@ReverseCold ในทางเทคนิคแล้ว[]มันไม่มีtuple ไม่ใช่รายการ แต่มันไม่เกี่ยวข้องกับโปรแกรมนี้
Stephen

2
96 ไบต์โดยการตั้งค่าx+' Shark'ให้เป็นตัวแปร
Jo King

1
ดูเหมือนว่าจะทำงานใน 2.7 เช่นกัน?
uhoh

9

Haskell , 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ทำซ้ำx3 ครั้งเช่นเดียวกับ"aaa"ความยาว 3

  • s>>" doo"ทำซ้ำ" doo"6 ครั้งตามที่" Shark"มีความยาว 6!

  • บันทึก 2 ไบต์ด้วย @Fox

  • บันทึก 2 ไบต์ด้วย @Laikoni

2
ยินดีต้อนรับสู่เว็บไซต์! เราอนุญาตให้เพียงแค่สร้างสตริงเอาท์พุทคงที่การแสดงออกmain=putStrเพื่อให้คุณสามารถละเว้น เห็นแล้วยังHaskell กฎสรุป
xnor

1
ยินดีต้อนรับสู่ PPCG s>>ประหยัดที่ดีกับ
ปุย

@ xnor ขอบคุณสำหรับลิงค์!
starsandspirals

1
m=(stuff)สามารถเป็นm=stuffสองไบต์ได้น้อยกว่า
Fox

1
104 ไบต์โดยใช้ - doหมายเหตุ: ลองออนไลน์!
Laikoni

7

Perl 6 , 79 78 ไบต์

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

ลองออนไลน์!

ค่อนข้างง่าย

คำอธิบาย:

 <...>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 ไบต์

ตีกอล์ฟให้มากขึ้น

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

ลองออนไลน์!


1
เทคนิคนี้ไม่ใช่วิธีการแก้ปัญหาที่ถูกต้องเนื่องจากไม่ได้เขียนไปยังไฟล์หรือบันทึก แม้ว่าคุณจะทำให้มันเป็นคำตอบที่ถูกต้องโดยการห่อด้วย a console.log()แต่คุณสามารถทำให้มันไม่ได้เป็นคำประกาศแลมบ์ดา (เพียง 10 ตัวอักษรเท่านั้น)
Delioth

3
@Delioth กลับมาจากฟังก์ชั่นที่ถูกต้องสมบูรณ์ในเว็บไซต์นี้ ดู Meta สำหรับกฎ I / O เริ่มต้นของเรา
ขนด

2
ฉันมักจะเห็นด้วย แต่คำถามนี้ระบุว่าโปรแกรม "เขียนข้อความต่อไปนี้ไปยังเอาต์พุตมาตรฐานหรือไฟล์โดยพลการ"
เดลี่

7

ทุบตี, 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 ไบต์

บันทึกจำนวนมากต้องขอบคุณJo King

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

ลองออนไลน์! คุณอาจต้องการวางรหัสในfishlanguage.comซึ่งคุณสามารถดูภาพเคลื่อนไหวของการว่ายน้ำได้


121 ไบต์ส่วนใหญ่ผ่านการจัดเรียงลูก / พ่อ / ... ใหม่เป็นหลายบรรทัดแทนที่จะเป็นหนึ่งบรรทัด แม้ว่าจะมีสนามกอล์ฟมากขึ้น
โจคิง


@ โจกิ้งอาขอบคุณ ฉันมักจะสันนิษฐานว่า (ส่วนใหญ่มาจากการทำงานกับ 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

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

บันทึกแล้ว6 24 ไบต์ขอบคุณ@Nahuel Fouilleul!

  • ใช้||แทนconcat()
  • ใช้unnest('{foo,bar}'::text[])แทนregexp_split_to_table('foo,bar')

DB <> ซอ


1
-6 bytes ใช้||แทน concat View บน 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 ไบต์

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

ลองออนไลน์!

นี่คือการเพิ่มประสิทธิภาพของการแก้ปัญหา Haskellโดยstarsandspirals เคล็ดลับใหม่คือการวนซ้ำแถวของแต่ละบทด้วยลูปภายในและเข้าร่วมบรรทัดโดยใช้unlinesช่วยให้ไม่ต้องแทรกบรรทัดใหม่อย่างชัดเจน

ส่วนต่อท้ายของสี่เส้น[a,a,a,"!"]ที่aมีการ" doo"จำลองแบบ 6 ครั้งด้วยa=s>>" doo"ที่ชาญฉลาด starsandspirals reuses s=" Shark"หกตัวยาว การเขียน[a,a,a,...]ดูโง่ไปหน่อย แต่ฉันไม่เห็นวิธีที่สั้นกว่านี้

รุ่น list-monad มีความยาวเท่ากัน แต่ดูเท่

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

ลองออนไลน์!



4

R , 131 122 120 ไบต์

-9 ไบต์ขอบคุณ Giuseppe

-2 ไบต์เพิ่มเติมเช่นกัน Giuseppe

`?`=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(...))แต่ตระหนักถึงการวนรอบปิดไม่กี่ไบต์

การใช้"?"=cจำนวนวงเล็บที่ต้องการลดลงอย่างมีนัยสำคัญ

ฉันยังพยายามที่จะทำ"*"=repซ้ำแต่ละบรรทัดของบทและ "doos" แต่ที่ไม่ได้โกนไบต์ใด ๆ

111 ไบต์

ทางเลือกของ Giuseppe และ ASCII เท่านั้น (และดีกว่า) ที่แก้ไขปัญหาการเว้นวรรค

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

ลองออนไลน์!



และเช่นเคยขอบคุณสำหรับการป้อนข้อมูลที่ชาญฉลาดของคุณ @Giuseppe ฉันควรสังเกตกอล์ฟเหล่านั้น
Sumner18


1
@Giuseppe wow, vectorization, ดี ฉันลืม R มี vectorization ที่ดีเช่นนี้ 114? ยัง 114
ASCII เท่านั้นเท่านั้น




3

R , 126 125 ไบต์

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

สิ่งนี้ไม่รู้สึกว่า 'ฉลาด' เหมือนกับคำตอบของCT HallหรือSumner18แต่โดยการหลีกเลี่ยงค่าใช้จ่ายในการกำหนดตัวแปรมันจะเล็กลง

ลองออนไลน์!

แก้ไข: บันทึก 1 ไบต์โดยใช้การคืนสินค้าตามความคิดเห็นโดย Jonathan Frech


สวัสดีและยินดีต้อนรับสู่ PPCG! ฉันได้เพิ่มลิงก์ไปยังคำตอบของผู้ใช้ที่คุณพูดถึงเพื่อเปรียบเทียบโซลูชันของคุณให้ดีขึ้น ขอแสดงความยินดีกับ outgolfing ทั้งสองคุณสามารถเพิ่มลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อความสะดวกในการตรวจสอบหรือไม่?
Jonathan Frech

ขอบคุณสำหรับการแก้ไข @JonathanFrech ตอนนี้ฉันได้เพิ่มลิงค์เพื่อทดสอบรหัสออนไลน์ (ซึ่งเพิ่มไบต์ในคำตอบของฉัน!)
BobbyBean

คุณสามารถใช้บรรทัดใหม่จริงแทน\nการทำให้จำนวนไบต์ของคุณนับถอยหลังหนึ่งครั้ง
Jonathan Frech


1
ฉันได้รับ outgolfed โดยสิ้นเชิง บางครั้งตัวเลือกที่ง่ายที่สุดดีที่สุด ยังเน้นถึงความยากลำบากในการทำงานกับสายอักขระใน R.
CT Hall

3

R , 139 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='
')

อาจเป็นวิธีที่ดีกว่าในการทำ 'doo's แต่ฉันไม่สามารถรับได้

แก้ไข:
แทนที่ '\ n' ด้วยบรรทัดใหม่จริงตามคำแนะนำของ JDL
ลบ newline ต่อท้ายตามคำแนะนำของ Giuseppe

ลองออนไลน์


ยินดีต้อนรับสู่ ppcg! อย่างน้อยที่สุดการแทนที่ "\ n" ด้วยตัวอักษรขึ้นบรรทัดใหม่จะช่วยประหยัดหนึ่งไบต์
JDL

ขอบคุณฉันทำเช่นนั้นและจากนั้นฉันก็รู้ว่าผลลัพธ์ของฉันออกไปเล็กน้อยดังนั้นฉันจึงอัปเดตว่า
CT Hall

ฉันเชื่อว่าคุณมีบรรทัดใหม่ต่อท้ายสำหรับไบต์พิเศษ
Giuseppe

3

เมื่อคุณบังเอิญสูญเสีย 100 การลงทะเบียนประกาศสถานะ - 123,065 121,716 113,695 100,889 98,554 ไบต์

โปรแกรม

ฉันจะตีกอล์ฟนี้ในภายหลัง เสร็จสิ้น

ฉันจะเล่นกอล์ฟเพิ่มอีก (ภายหลัง)เสร็จแล้ว

ฉันจะตีกอล์ฟนี้อีกครั้งในภายหลัง เสร็จสิ้น

ฉันจะได้จำนวนไบต์เป็น 5 หลักในภายหลัง เย้.

ฉันจะได้จำนวนไบต์เป็น 4 หลัก (ฉันไม่ทราบว่าเป็นไปได้ แต่ฉันรู้ว่ามันเป็นไปไม่ได้ที่จะได้รับ 3 หลักด้วยวิธีการปัจจุบันของฉัน)


นี่มันอะไรกันเนี่ย? ฉันรักมัน
เอเดรียนจาง

@AdrianZhang ภาษาการเขียนโปรแกรมยากที่จะตั้งโปรแกรม นอกจากนี้โปรแกรมดูเหมือนว่ามันเป็นคนกรีดร้อง ('AAAAAAAAAAA ... ')
MilkyWay90

3

C (gcc) , 123 122 ไบต์

-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

@BBBTFish: ไม่ใช่เฉพาะ C แต่โดยทั่วไปจะได้รับอนุญาตให้ใช้ฟังก์ชั่นใด ๆ (ชื่อไม่สำคัญจริงๆมันอาจเป็นแลมบ์ดาที่ไม่มีชื่อหรือที่คล้ายกัน) และภาษานั้นถูกกำหนดโดยการใช้งาน (ใด ๆ ) เนื่องจากสิ่งนี้ทำงานได้บนgcc(สร้างคำเตือนเท่านั้น
ბიმო

ฉันตระหนักขาด#includeเป็นเพียงความผิดพลาดเพราะผมก็ยังคงรวบรวมเป็น C ++ mainแต่ฉันยังคงไม่สามารถรับมันจะรวบรวมได้โดยไม่ต้องเปลี่ยนชื่อฟังก์ชั่นของคุณไป
BoBTFish

2

cQuents , 93 89 ไบต์

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

ลองออนไลน์!

โปรดทราบว่าเมื่อโพสต์ 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" จากนั้นสร้างสามรายการด้วย "!" เรียงตามและทำซ้ำสำหรับปลาฉลามแต่ละตัว

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"; สำหรับ (b จาก ["Baby", "Daddy", "Mommy", "Grandpa", "Grandma"]) {b + = "ฉลาม"; 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

PHP , 153 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";}

ขอบคุณ @manatwork สำหรับการบันทึก 6 ไบต์โดยการชี้ให้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

@ การจัดการขอบคุณที่ชี้ให้เห็นว่าฉันได้ปรับปรุงการโพสต์เพื่อสะท้อน
EvanBarbour3

1
ในขณะเดียวกันก็หาเวลาเล่นอีกนิด: ลองออนไลน์!
จัดการ

113 ไบต์ ยินดีต้อนรับสู่ PPCG!
ขนด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.