"Baby Shark" é uma canção infantil sobre uma família de tubarões. Por muito tempo popular como uma canção de fogueira, é popularizada desde meados da década de 2000 pelas mídias sociais, vídeos online e rádio. - Wikipedia
Escreva um programa que não receba entrada e grave o seguinte texto na saída padrão ou em um arquivo arbitrário:
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!
Este é o código golf - o código mais curto vence.
Encontrei isso no Reddit ^ 1 ^ 2 e parece um desafio interessante para o golfe.
Atualizações:
Nenhuma nova linha entre estrofes, isso facilita demais :)
As novas linhas iniciais / finais estão corretas.
Respostas:
SOGL , 40 bytes
Experimente aqui!
fonte
Emojicode, 292 bytes (140 caracteres)
Executá-lo
Expandido para fora:
Explicado (de acordo com o documento Emojicode ):
O mesmo como um
{
eo}
(por exemplo, um bloco de código)O "início do programa" (por exemplo
int main()
)Atribuição variável (por exemplo
const char* b = "Baby";
)Diz, crie uma lista de valores entre 🍨 e 🍆 e atribua (➡️) a
f
(por exemploconst char* f[] = {b,y,o,g,a};
)Esta linha diz para fazer um loop sobre os elementos
f
usando o aliasm
, onde...
é o código entre 🍇 e 🍉.Esta linha diz que o loop está acima do intervalo [0,3), onde
...
é o código entre 🍇 e 🍉.Esta linha diz para imprimir o formato especificado em
...
(por exemploprintf("%s\n");
)O código traduzido para C:
Depois disso, o código original (publicado abaixo para a posteridade) teve alguns problemas; principalmente que o bloco was não foi incluído para aqueles que desejam executá-lo, e os emoji não foram realmente escapados adequadamente; para isso, aqui está a versão atual em execução desse código:
Original modificado para execução: Emojicode, 224 bytes (67 caracteres)
Expandido para fora:
Qual produz a saída:
Executá-lo
Onde você tem os emoji individuais que representam as palavras:
Original: Emojicode, 138 bytes (47 caracteres)
Expandido para fora:
fonte
IBM PC DOS, montagem 8088,
115114109108 bytesDesmontado:
Resultado
Faça o download do SHARK.COM!
fonte
Download SHARK.COM!
, pensei imediatamente em vírus de computador.Python 2 , 93 bytes
Experimente online!
94 bytes
Experimente online!
fonte
05AB1E ,
5041 bytesA última partejogada de golfev4FN3Qiy'!«ë…doo6иyšðý},
pode definitivamente ser um pouco.E eu estava certo, -9 bytes graças a @Emigna (ainda mais do que eu esperava).Experimente online.
Explicação:
Veja esta dica 05AB1E (seção Como usar o dicionário? ) Para entender por que
“‡ÍÊТ×myîºpaîºma“
é"baby daddy mommy grandpa grandma"
e'ã¢
é"shark"
.fonte
v…doo6иyšÐy'!«»
»
!PowerShell,
888685807976 bytes-5 bytes graças a @mazzy
-1 byte graças a @Joey
-3 bytes graças a @AdmBorkBork
Experimente online!
Certamente percorremos um longo caminho.
PowerShell (com conversão de texto em fala), 156 bytes
Isso NÃO está dentro das especificações, mas é meio engraçado. Obrigado a @rkeet pela ideia!
.NET A pronúncia de texto para fala é ... bem ... interessante. Lembre-se disso ao ouvir. Desfrutar!
fonte
"$_ Shark"
a uma variável e reutilizando-a.echo
vez de-split
.Java (JDK) , 135 bytes
Experimente online!
fonte
repeat
método, é a versão 11+Retina 0.8.2 ,
777574 bytesExperimente online! Explicação:
Inserir as relações em linhas separadas.
Expanda em quatro linhas.
Expanda os espaços reservados.
6968 bytes na Retina 1:Experimente online! Explicação:
Inserir as relações em linhas separadas.
Acrescente Shark a cada um.
Expanda em versos inteiros.
fonte
Python 3,
1059796 bytesExperimente online!
Uma solução simples do Python 3. (9 bytes salvos por Jo King e Quintec)
fonte
' doo'*6
são desnecessários e você tem espaços em branco desnecessários[]
uma tupla, não uma lista, mas isso não é relevante para este programax+' Shark'
uma variávelHaskell ,
122113108106104 bytesExperimente online!
"aaa">>x
replicax
3 vezes, assim como o"aaa"
comprimento 3.s>>" doo"
replica" doo"
6 vezes, assim como o" Shark"
comprimento 6!2 bytes salvos graças ao @Fox
fonte
main=putStr
. Veja também o resumo das regras de Haskell .s>>
.m=(stuff)
pode ser apenasm=stuff
para dois bytes a menosdo
-notation: Experimente online!Perl 6 ,
7978 bytesExperimente online!
Bem simples.
Explicação:
fonte
JavaScript, 104 bytes
Mais golfe a seguir.
Experimente Online!
fonte
console.log()
, não poderá ser uma declaração lambda (apenas ganho de 10 caracteres)bash, 78 bytes
TIO
73 bytes se o espaço à direita for permitido
fonte
/// , 124 bytes
Experimente online!
fonte
> <> ,
158115 bytesEconomizou muitos bytes graças a Jo King
Experimente online! Você também pode colar o código em fishlanguage.com , onde pode ver uma animação dele
nadando emexecução.fonte
PostgreSQL,
162156138 bytesUngolfed
Guardado
624 bytes graças a@Nahuel Fouilleul
!||
vez deconcat()
unnest('{foo,bar}'::text[])
vez deregexp_split_to_table('foo,bar')
DB <> violino
fonte
||
vez de concat Visualizar no DB Fiddleselect a||' Shark'||replace(b,'1',repeat(' doo',6))from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[])a,unnest('{1,1,1,!}'::text[])b
Haskell , 97 bytes
Experimente online!
Esta é uma otimização da solução Haskell por starsandspirals . O novo truque é iterar nas linhas de cada sub-rotina com um loop interno e unir as linhas usando
unlines
, economizando a necessidade de inserir explicitamente novas linhas.Os sufixos das quatro linhas são
[a,a,a,"!"]
, ondea
é" doo"
replicado 6 vezesa=s>>" doo"
, onde estrelas epirais reutilizam inteligentemente o comprimento de seis caracteress=" Shark"
. Escrever[a,a,a,...]
parece um pouco bobo, mas não estou vendo uma maneira mais curta.Uma versão de lista-mônada tem o mesmo comprimento, mas parece legal.
Experimente online!
fonte
Ruby , 82 bytes
Experimente online!
fonte
R ,
131122120 bytes-9 bytes graças a Giuseppe
-2 mais bytes, também Giuseppe
Experimente online!
Bastante orgulhoso disso, na verdade, especialmente com R sendo bastante pobre em lidar com strings. Comecei a usar
cat(sapply(...))
, mas percebi que um loop for raspa alguns bytes.Abusar com isso
"?"=c
reduziu significativamente a quantidade de parênteses necessários.Também tentei
"*"=rep
repetir as linhas individuais das estrofes e dos "doos", mas isso não eliminou nenhum bytes.111 bytes
Giuseppe e a solução alternativa (e melhor) apenas do ASCII que corrige alguns problemas de espaçamento.
Experimente online!
fonte
PHP, 104 bytes
Corra com
php -nr '<code>'
ou experimente online .fonte
C # (compilador interativo do Visual C #) ,
153131 bytesObrigado a @Destrogio por salvar 30 bytes!
Experimente online!
fonte
R ,
126125 bytesIsso não parece tão 'inteligente' quanto as respostas de CT Hall ou Sumner18 , mas, ao evitar a sobrecarga de definir variáveis, ele fica menor.
Experimente online!
Edit: Salvo 1 byte usando retorno de carro, conforme comentário de Jonathan Frech
fonte
\n
diminuir novamente a contagem de bytes.R ,
139138137 bytesProvavelmente existe uma maneira melhor de fazer o 'doo's, mas não consegui.
Edit:
Substituído '\ n' pela nova linha real por sugestão da JDL;
Removida a nova linha à direita por sugestão de Giuseppe.
Experimente online
fonte
quando
vocêperderacidentalmente100estados defomento -123.065121.716113.695100.88998.554 bytesO programa
Vou jogar isso depois.Feito.Vou jogar mais isso (mais tarde).Vou jogar isso ainda mais tarde.FEITO.Vou receber a contagem de bytes até 5 dígitos depois.YAY.Vou obter a contagem de bytes para 4 dígitos (não sei se isso é possível, mas sei que é impossível obter 3 dígitos com a minha abordagem atual).
fonte
C (gcc) ,
123122 bytes-1 byte graças ao ceilingcat
Experimente online!
fonte
main()
ou#include
paraprintf
?gcc
(apenas gera avisos, mas compila bem) e é válido.#include
era apenas um erro, porque eu ainda estava compilando como C ++, mas ainda não consegui compilar sem renomear sua funçãomain
.cQuents ,
9389 bytesExperimente online!
Observe que a partir da publicação do TIO não é atualizada para a versão mais recente, portanto, o link do TIO pode não funcionar.
Explicação
fonte
JavaScript (Node.js) , 132 bytes
Provavelmente muito capaz de jogar golfe. Gera a linha "doo doo" e cria três com o "!" linha depois e repete isso para cada tubarão.
Experimente online!
fonte
jq, 87 caracteres
Exemplo de execução:
Experimente online!
fonte
TeX liso, 147 bytes
\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
Bastante decepcionante, mas eu não tenho postado uma resposta TeX há anos. Os loops são muito detalhados em teX (e o loop sobre as cordas nem mesmo é incorporado, então isso é um pouco exagerado)
fonte
PHP ,
153147 bytesObrigado a @manatwork por salvar 6 bytes, indicando que
str_pad('',23'doo ');
é menor quertrim(str_repeat('doo ',6));
Experimente online!
fonte
$d='doo doo doo doo doo doo'
é mais curto que a combinaçãortrim()
+str_repeat()
. :( Mas felizmente$d=str_pad('',23,'doo ')
é ainda mais curto. Para obter mais dicas de otimização, consulte Dicas para jogar golfe em PHP .