Пой Малыш Акула

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 , и это кажется интересным испытанием для гольфа.

Обновления:

Никакой новой строки между строфами нет, это слишком просто :)

Лидирующие / завершающие символы новой строки в порядке.

njha
источник
6
Допустим ли перевод строки между каждой строфой (каждой акулой)? (Это всегда, как я видел написанную лирику)
Quintec
6
Эх, пропустить несколько стихов, как и все о плавании пловцов и потере конечностей в нападениях акул.
mbomb007
2
"ду ду ду ду ду ду" действительно слишком упрощен.
R ..
26
Как родитель, я чувствую сильнейшее желание понизить это. Я подавляю это желание, потому что это не так, как работает Stack Exchange. Но если я обнаружу, что напеваю «ду-ду-ду-ду» сегодня позже, я вернусь сюда и буду считать вас ответственным!
Корт Аммон
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, где ...это код между the и 🍉.

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

После этого у исходного кода (выложенного ниже для потомков) были некоторые проблемы; в основном это то, что блок included не был включен для тех, кто хочет его запустить, а смайлики на самом деле не были экранированы должным образом, вот действительная версия этого кода:

Оригинал изменен для запуска: 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 🦈!❗️
🍉
txtechhelp
источник
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
640 КБ
источник
6
Вы абсолютный сумасшедший.
MGOwen
5
Когда вы сказали Download SHARK.COM!, я сразу подумал о компьютерных вирусах.
MilkyWay90
@ шутка, я пошутил
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 произношение текста в речь ... ну ... интересно. Имейте это в виду при прослушивании. Наслаждайтесь!

Габриэль Миллс
источник
2
80 байтов :)
MAZZY
1
Вы можете сохранить еще один байт, присвоив "$_ Shark"переменную и используя ее повторно.
Джои
2
76 байт , используя echoвместо -split.
AdmBorkBork
1
Я думаю, что у вас также должен быть "текст в речь": p Черт возьми, он пытался немного скомбинировать его с этим кодом , не совсем сработало :-)
rkeet
@rkeet Вызов принят! Я в настоящее время озадачиваю это.
Габриэль Миллс
10

Java (JDK) , 135 байт

v->{for(var s:"Baby Daddy Mommy Grandpa Grandma".split(" "))System.out.println(((s+=" Shark")+" doo".repeat(6)+"\n").repeat(3)+s+"!");}

Попробуйте онлайн!

Оливье Грегуар
источник
Какая версия JDK? Я предполагаю 8+ (лямбды).
NoOneIsHere
3
@NoOneIsHere Учитывая repeatметод, это версия 11+
Оливье Грегуар
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 байтов сохранено Джо Кингом и Quintec)

njha
источник
2
' doo'*6
Круглые
1
Что сказал квинтек ... 97 байт
Джо Кинг
2
@ReverseCold технически там, где его нет [], это кортеж, а не список, но это не относится к этой программе
Стивен
2
96 байтов , устанавливая x+' Shark'переменную
Джо Кинг
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
starsandspirals
источник
2
Добро пожаловать на сайт! Мы разрешаем просто генерировать фиксированную строку вывода в качестве выражения , поэтому вы можете опустить main=putStr. Смотрите также свод правил Haskell .
xnor
1
Добро пожаловать в PPCG. Хорошая экономия с s>>.
лохматый
@xnor спасибо за ссылки!
Звезды и Спирали
1
m=(stuff)может быть только m=stuffна два байта меньше
Fox
1
104 байта с помощью do-notation: попробуйте онлайн!
Лайкони
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()
заключив его в скобки
3
@Delioth, возвращение из функции вполне допустимо на этом сайте. Посмотрите на Meta наши правила ввода / вывода по умолчанию.
лохматый
2
Я бы в целом согласился, но в этом вопросе конкретно говорится, что программа «записывает следующий текст в стандартный вывод или в произвольный файл»
Delioth
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 байт

Сохранено много байтов благодаря Джо Кингу

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

Попробуйте онлайн! Вы также можете вставить код в fishlanguage.com , где вы можете увидеть анимацию плавания .

DLosc
источник
121 байт , в основном путем перестановки ребенка / папы / ... в несколько строк вместо одной строки. Есть еще кое-что для гольфа
Джо Кинг
115 байтов
Джо Кинг
@ 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

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 байт, используя ||вместо concat View на DB Fiddle
Науэль Фуийе
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 по звездам и спиралям . Новый трюк состоит в том, чтобы перебирать строки каждой строфы с помощью внутреннего цикла и соединять строки, используя 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"

Попробуйте онлайн!

XNOR
источник
4

Рубин , 82 байта

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

Попробуйте онлайн!

Кирилл Л.
источник
Мне потребовалось некоторое время, чтобы понять, что вы использовали часть "doo" в качестве разделителей массива. Хорошая работа :)
Idva
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(...)), но понял, что цикл for сбрасывает несколько байтов.

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

Я также пытался "*"=repповторить отдельные строки строф и «ду», но это не сбрило ни одного байта.

111 байт

Giuseppe и ASCII-only альтернативное (и лучшее) решение, которое устраняет некоторые пробелы.

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

Попробуйте онлайн!

Sumner18
источник
1
122 байта
Джузеппе
Как всегда, спасибо за ваш мудрый вклад @Giuseppe. Я должен был заметить эти гольфы
Sumner18
1
120 байтов
Джузеппе
1
@ Джузеппе вау, векторизация, приятно. Я забыл, что R имеет хорошую векторизацию, как это. 114? также 114?
ASCII-только
1
также 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 байт с помощью возврата каретки согласно комментарию Джонатана Фреха

BobbyBean
источник
Привет и добро пожаловать в PPCG! Я добавил ссылки на ответы пользователей, которые вы упомянули, чтобы лучше сравнить ваши решения. Поздравляем с перевесом в обоих направлениях. Не могли бы вы добавить ссылку на среду онлайн-тестирования для упрощения проверки?
Джонатан Фрех
Спасибо за редактирование @JonathanFrech. Теперь я добавил ссылку для проверки кода онлайн (который добавил байт в мой ответ!).
BobbyBean
Вы можете использовать новую строку вместо того, \nчтобы снова уменьшить счетчик байтов.
Джонатан Фрех
125 байтов
Джузеппе
1
Ну, я был полностью вне игры; иногда самый простой вариант самый лучший. Также подчеркивается, насколько сложно работать со строками в 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='
')

Возможно, есть лучший способ сделать это, но я не смог его получить.

Редактировать:
заменил '\ n' фактической новой строкой по предложению JDL;
Удален завершающий перевод строки по предложению Джузеппе.

Попробуйте онлайн

КТ Холл
источник
Добро пожаловать в PPCG! По крайней мере, замена "\ n" буквальным символом новой строки сэкономит один байт.
JDL
Спасибо, я так и сделал, а затем понял, что мой вывод был бит, поэтому я обновил это, к сожалению, это привело к увеличению количества байтов.
CT Hall
Я полагаю, у вас есть завершающий символ новой строки для дополнительного байта
Джузеппе
3

когда вы случайно закрываете 100 одобренийинстации - 123 065 121 716 113 695 100 889 конечных 113 554 байта

Программа

Я буду играть в гольф позже.Готово.

Я буду играть в гольф больше (позже) Готово.

Я буду играть в гольф еще позже.СДЕЛАННЫЙ.

Я получу количество байтов до 5 цифр позже.УРА.

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

MilkyWay90
источник
Что это, черт подери, такое? Я люблю это
Адриан Чжан
@AdrianZhang Язык программирования трудно программировать. Кроме того, программа выглядит так, как будто она кричит («ААААААААААА ...»)
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:"!");}

Попробуйте онлайн!

gastropner
источник
Каковы правила для C? Нет необходимости main(), или #includeдля printf?
BoBTFish
@BoBTFish: Не специфично для 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"; for (b из ["Baby", "Daddy", "Mommy", "Grandpa", "Grandma"]) {b + = "Акула"; t = b + c.repeat (6) + "\ n"; a + = t + t + t + b + "! \ N"} console.log (a)
БогданБив
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 (и циклический просмотр по строкам даже не встроен, так что даже это немного растянуто)

Крис H
источник
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));

Попробуйте онлайн!

EvanBarbour3
источник
К сожалению, даже $d='doo doo doo doo doo doo'короче этой комбинации rtrim()+ str_repeat(). :( Но, к счастью $d=str_pad('',23,'doo '), еще короче. Дополнительные советы по оптимизации см. В разделе Советы по игре в гольф на PHP .
manatwork
@manatwork Спасибо за указание на это, я обновил пост, чтобы отразить
EvanBarbour3
1
А пока нашел время поиграть побольше: попробуйте онлайн!
manatwork
113 байтов . Добро пожаловать в PPCG!
лохматый
2
109 байт
лохматый