Співайте акулу дитини


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
Чи прийнятний новий рядок між кожною строфою (кожною акулою)? (Так завжди я бачив написані тексти)
Квінтек

6
Е, не вистачаючи кількох віршів, як і всі про плавців, що плавають і втрачають кінцівки при нападі акул.
mbomb007

2
"Ду-ду-ду-ду-ду-ду-ду-ду" - це справді надмірно спрощено.
Р ..

26
Як батько, я відчуваю найсильнішу позиву спростувати цю заяву. Я пригнічую позиви, тому що так не працює Stack Exchange. Але якщо я пізніше сьогодні почуваю себе напевним "doo doo doo", я повертаюся сюди і несу відповідальність за вас!
Корт Аммон

5
Скільки днів людей зіпсували зараз, коли це на HNQ?
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 ):

🍇🍉

Те саме, що {і }(наприклад, код коду)

🏁

"Запуск програми" (наприклад 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;
}

Після цього оригінальний код (розміщений нижче для нащадків) мав деякі проблеми; здебільшого, що блок 🏁🍇🍉 не був включений для тих, хто бажає запустити його, а смайли фактично не були належним чином усунуті, до цього, ось фактична запущена версія цього коду:

Оригінальна модифікована для запуску: 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
Бали для творчості, але це не дає необхідного результату
Джо Кінг,

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
Ви можете v…doo6иyšÐy'!«»
пограти в

@Emigna Ви навіть пограли більше, ніж я очікував, дякую! Розумний спосіб використання трикутника та »!
Кевін Кройсейсен

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"змінну та повторно використовуючи її.
Джої

2
76 байт, використовуючи echoзамість -split.
AdmBorkBork

1
Я думаю, що у вас також має бути текст "для виступу": p Для чорта його намагалися трохи поєднати з цим кодом , не вийшло :-)
rkeet

@rkeet Challenge прийнято! Наразі я це спантеличую.
Габріель Міллс


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 байт у сітківці 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 байт зберегли Джо Кінг і Квінтек)


2
Дужки навколо ' doo'*6є непотрібними, і у вас там зайвий пробіл
Квінтек,

1
Що сказав квінтек ... 97 байт
Джо Кінг,

2
@ReverseCold технічно там, де немає, []це кортеж не список, але це не стосується цієї програми
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 дякую за посилання!
зіркиандспірали

1
m=(stuff)може бути лише m=stuffна два менші байти
Фокс

1
104 байти за допомогою do-нотації: Спробуйте в Інтернеті!
Лайконі

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
Це технічно не є правильним рішенням, оскільки воно не записує у файл і не записує в нього. Хоча якщо ви зробите це правильним рішенням, обернувши його console.log(), ви можете зробити це не лямбда-декларацією (лише 10 символів)
Delioth

3
@Delioth, повернення з функції цілком діє на цьому сайті. Погляньте на Meta щодо наших правил вводу / виводу за замовчуванням.
Кудлатий

2
Я загалом погоджуюся, але в цьому питанні конкретно сказано, що програма "пише наступний текст у стандартний вихід або довільний файл"
Delioth

7

bash, 78 байт

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

ТІО

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 байт , переважно через перестановку дитини / тата / ... на кілька рядків замість одного рядка. Хоча до гольфу є більше
Джо Кінг


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

БД <> скрипка


1
-6 байт, використовуючи ||замість
лаконічного виду

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, врятувавши потребу явно вставити нові рядки.

Суфікси чотирьох ліній [a,a,a,"!"], де aбуде " doo"реплицировать 6 разів a=s>>" doo", де starsandspirals розумно повторно шести символів довжиною s=" Shark". Писання [a,a,a,...]виглядає трохи нерозумно, але я не бачу коротшого шляху.

Версія для монади списків такої ж довжини, але виглядає круто.

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

Спробуйте в Інтернеті!



4

R , 131 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(...)), але зрозумів, що для циклу гоління налічується кілька байтів.

Зловживання "?"=cзначно зменшило кількість потрібних дужок.

Я також намагався зробити, "*"=repщоб повторити окремі рядки строф і «ду», але це не обстригало жодного байта.

111 байт

Альтернативне рішення (і краще) для Джузеппе та ASCII, яке виправляє деякі проблеми з інтервалом.

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

Спробуйте в Інтернеті!



Як завжди, дякую за ваш розумний внесок @Giuseppe. Я повинен був помітити тих
гольфів


1
@ Giuseppe вау, векторизація, приємно. Я забув, R має гарну векторизацію, як це. 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="
")

Це не так розумно, як відповіді КТ Холл або відповіді Sumner18 , але, уникаючи накладних витрат на визначення змінних, він стає меншим.

Спробуйте в Інтернеті!

Редагувати: Збережено 1 байт за допомогою повернення карети відповідно до коментаря Джонатана Фреха


Привіт і ласкаво просимо до PPCG! Я додав посилання на відповіді користувачів, які ви згадали, щоб краще порівняти ваші рішення. Вітаємо з перемогою обох, чи можете ви додати посилання на середовище онлайн-тестування для зручності перевірки?
Джонатан Фрех

Дякуємо за редагування @JonathanFrech. Зараз я додав посилання для тестування коду в Інтернеті (який додав байт до моєї відповіді!).
BobbyBean

Ви можете використовувати фактично новий рядок замість того, \nщоб знову відновлювати кількість байтів.
Джонатан Фрех


1
Ну, я повністю перемогла; іноді найкращий варіант. Також підкреслюється, як важко працювати з струнами в Р.
Зал CT

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

Мабуть, є кращий спосіб зробити "до", але я не зміг його отримати.

Редагувати:
Замінено '\ n' фактичним новим рядком за пропозицією JDL;
За пропозицією Джузеппе вилучена нова лінія рядка.

Спробуйте в Інтернеті


Ласкаво просимо в ppcg! Принаймні, заміна "\ n" буквальним новим рядком збереже один байт.
JDL

Дякую, я це зробив, а потім зрозумів, що мій вихід був збитий, тому я оновив це, на жаль, це призвело до більше байтів.
КТ зал

Я вважаю, що у вас є нова лінія для додаткового байту
Джузеппе,

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

@BoBTFish: Не специфічно для С, але в цілому дозволено використовувати будь-яку функцію (ім'я не має значення, адже це може бути безіменна лямбда або подібне). І мови визначаються їхньою (будь-якою) реалізацією, оскільки це працює над 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"; for (b of ["Baby", "Тато", "мама", "дідусь", "бабуся"]) {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

коли ви випадковоположите100енорментестаціїнацінки - 123,065 121,716 113,695 100,889 98,554 байт

Програма

Я буду гольфу пізніше. Зроблено.

Я пограю ще більше (пізніше) Готово.

Я пограю це ще пізніше. Зроблено.

Пізніше я отримаю кількість байтів до 5 цифр. ТАК.

Я отримаю кількість байтів до 4 цифр (я не знаю, чи це можливо, але я знаю, що неможливо отримати 3 цифри при моєму теперішньому підході).


Що це в біса таке? Я люблю це
Адріан Чжан

@AdrianZhang Мова програмування, яку важко програмувати. Також програма виглядає так, що людина кричить ("AAAAAAAAAAA ...")
MilkyWay90,

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!
Кудлатий

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.