„Baby Shark” to piosenka dla dzieci o rodzinie rekinów. Od dawna popularna jako piosenka przy ognisku, została spopularyzowana od połowy 2000 roku przez media społecznościowe, wideo online i radio. - Wikipedia
Napisz program, który nie przyjmuje danych wejściowych i zapisuje następujący tekst na standardowym wyjściu lub w dowolnym pliku:
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!
To jest kod golfowy - wygrywa najkrótszy kod.
Znalazłem to na Reddit ^ 1 ^ 2 i wydaje się to ciekawym wyzwaniem dla golfa.
Aktualizacje:
Brak nowego wiersza między zwrotkami, co sprawia, że jest to zbyt łatwe :)
Wiodące / końcowe znaki nowej linii są w porządku.
Odpowiedzi:
SOGL , 40 bajtów
Wypróbuj tutaj!
źródło
Emojicode, 292 bajtów (140 znaków)
Uruchom
Rozszerzony:
Wyjaśnione (zgodnie z dokumentem Emojicode ):
To samo co a
{
i}
(np. Blok kodu)„Uruchomienie programu” (np.
int main()
)Zmienne przypisanie (np.
const char* b = "Baby";
)Mówi, stwórz listę wartości między 🍨 i 🍆 i przypisz (➡️) do
f
(np.const char* f[] = {b,y,o,g,a};
)Ta linia mówi o zapętleniu elementów przy
f
użyciu aliasum
, gdzie...
jest kodem między 🍇 a 🍉.Ta linia mówi, że
...
zapętla się w zakresie [0,3), gdzie jest kodem między 🍇 i 🍉.Ta linia mówi, aby wydrukować format określony w
...
(np.printf("%s\n");
)Kod przetłumaczony na C:
Następnie oryginalny kod (zamieszczony poniżej dla potomności) miał pewne problemy; przede wszystkim, że blok 🏁🍇🍉 nie został uwzględniony dla tych, którzy chcą go uruchomić, a emoji nie zostały właściwie usunięte, oto faktyczna działająca wersja tego kodu:
Oryginał zmodyfikowany do uruchomienia: Emojicode, 224 bajty (67 znaków)
Rozszerzony:
Co daje wynik:
Uruchom
Gdzie w tobie są poszczególne emoji reprezentujące słowa:
Oryginał: Emojicode, 138 bajtów (47 znaków)
Rozszerzony:
źródło
IBM PC DOS, zestaw 8088,
115114109108 bajtówNiezmontowane:
Wynik
Pobierz SHARK.COM!
źródło
Download SHARK.COM!
, natychmiast pomyślałem o wirusach komputerowych.Python 2 , 93 bajty
Wypróbuj online!
94 bajty
Wypróbuj online!
źródło
05AB1E ,
5041 bajtówOstatnią częśćI miałem rację, -9 bajtów dzięki @Emigna (nawet więcej, niż się spodziewałem).v4FN3Qiy'!«ë…doo6иyšðý},
można zdecydowanie trochę pograć w golfa.Wypróbuj online.
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak korzystać ze słownika? ), Aby zrozumieć, dlaczego
“‡ÍÊТ×myîºpaîºma“
jest"baby daddy mommy grandpa grandma"
i'ã¢
jest"shark"
.źródło
v…doo6иyšÐy'!«»
»
!PowerShell,
888685807976 bajtów-5 bajtów dzięki @mazzy
-1 bajt dzięki @Joey
-3 bajty dzięki @AdmBorkBork
Wypróbuj online!
Z pewnością przeszliśmy długą drogę.
PowerShell (z zamianą tekstu na mowę), 156 bajtów
NIE jest to zgodne ze specyfikacją, ale jest trochę zabawne. Dzięki @rkeet za pomysł!
.NET Wymowa na mowę jest ... cóż ... interesująca. Pamiętaj o tym podczas słuchania. Cieszyć się!
źródło
"$_ Shark"
zmienną i wykorzystując ją ponownie.echo
zamiast-split
.Java (JDK) , 135 bajtów
Wypróbuj online!
źródło
repeat
metodę, jest to wersja 11+Retina 0.8.2 ,
777574 bajtówWypróbuj online! Wyjaśnienie:
Wstaw relacje w osobnych wierszach.
Rozwiń na cztery linie.
Rozwiń symbole zastępcze.
6968 bajtów w Retina 1:Wypróbuj online! Wyjaśnienie:
Wstaw relacje w osobnych wierszach.
Dołącz Shark do każdego.
Rozwiń całe wersety.
źródło
Python 3,
1059796 bajtówWypróbuj online!
Proste rozwiązanie Python 3. (9 bajtów zapisanych przez Jo King i Quintec)
źródło
' doo'*6
[]
, to krotka, a nie lista, ale to nie dotyczy tego programux+' Shark'
zmiennejHaskell ,
122113108106104 bajtówWypróbuj online!
"aaa">>x
powiela sięx
3 razy, podobnie jak"aaa"
ma długość 3.s>>" doo"
powiela się" doo"
6 razy, podobnie jak" Shark"
długość 6!2 bajty zapisane dzięki @Fox
źródło
main=putStr
. Zobacz także podsumowanie reguł Haskell .s>>
.m=(stuff)
może być tylkom=stuff
o dwa mniej bajtówdo
-notacji: Wypróbuj online!Perl 6 ,
7978 bajtówWypróbuj online!
Dość proste.
Wyjaśnienie:
źródło
JavaScript, 104 bajty
Więcej golfa do naśladowania.
Wypróbuj online!
źródło
console.log()
, możesz sprawić, że nie będzie to deklaracja lambda (tylko 10 znaków)bash, 78 bajtów
TIO
73 bajty, jeśli dozwolone jest końcowe miejsce
źródło
/// , 124 bajty
Wypróbuj online!
źródło
> <> ,
158115 bajtówZaoszczędź dużo bajtów dzięki Jo Kingowi
Wypróbuj online! Możesz także wkleić kod w fishlanguage.com , gdzie możesz zobaczyć animację
pływania.źródło
PostgreSQL,
162156138 bajtówNie golfił
Zaoszczędzono
624 bajtów dzięki@Nahuel Fouilleul
!||
zamiastconcat()
unnest('{foo,bar}'::text[])
zamiastregexp_split_to_table('foo,bar')
Skrzypce DB <>
źródło
||
zamiast zamiast konkat Zobacz na 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 bajtów
Wypróbuj online!
Jest to optymalizacja rozwiązania Haskell przez gwiazdy i spirale . Nowa sztuczka polega na iteracji w rzędach każdej zwrotki za pomocą wewnętrznej pętli i łączeniu linii za pomocą
unlines
, oszczędzając konieczności jawnego wstawiania nowych linii.Sufiksy czterech linii to
[a,a,a,"!"]
, gdziea
jest" doo"
replikowany 6 razya=s>>" doo"
, w których gwiazdy i kręgi sprytnie wykorzystują długość sześciu znakóws=" Shark"
. Pisanie[a,a,a,...]
wygląda trochę głupio, ale nie widzę krótszej drogi.Wersja list-monad ma tę samą długość, ale wygląda świetnie.
Wypróbuj online!
źródło
Rubinowy , 82 bajty
Wypróbuj online!
źródło
R ,
131122120 bajtów-9 bajtów dzięki Giuseppe
-2 więcej bajtów, także Giuseppe
Wypróbuj online!
W rzeczywistości jestem z tego dość dumny, zwłaszcza że R jest raczej kiepski w posługiwaniu się łańcuchami. Zacząłem używać
cat(sapply(...))
, ale uświadomiłem sobie, że pętla for goli kilka bajtów.Nadużywanie
"?"=c
znacznie zmniejsza liczbę potrzebnych nawiasów.Próbowałem także
"*"=rep
powtórzyć poszczególne wiersze zwrotek i „doos”, ale to nie usunęło żadnych bajtów.111 bajtów
Alternatywne (i lepsze) rozwiązanie Giuseppe i ASCII-only, które rozwiązuje niektóre problemy z odstępami.
Wypróbuj online!
źródło
PHP, 104 bajty
Uruchom
php -nr '<code>'
lub wypróbuj online .źródło
C # (interaktywny kompilator Visual C #) ,
153131 bajtówDzięki @Destrogio za oszczędność 30 bajtów!
Wypróbuj online!
źródło
R ,
126125 bajtówNie wydaje się to tak „sprytne”, jak odpowiedzi CT Halla lub Sumnera18 , ale dzięki uniknięciu narzutu związanego z definiowaniem zmiennych wydaje się mniejszy.
Wypróbuj online!
Edycja: Zapisano 1 bajt, używając znaku powrotu karetki, zgodnie z komentarzem Jonathana Frecha
źródło
\n
sprowadzać liczbę bajtów ponownie.R ,
139138137 bajtówPrawdopodobnie jest lepszy sposób na zrobienie „doo”, ale nie byłem w stanie go zdobyć.
Edycja:
zastąpiono „\ n” rzeczywistą nową linią według sugestii JDL;
Usunięto końcowy znak nowej linii według sugestii Giuseppe.
Wypróbuj online
źródło
C (gcc) ,
123122 bajtów-1 bajt dzięki pułapkowi cat
Wypróbuj online!
źródło
main()
, lub#include
zaprintf
?gcc
(generuje tylko ostrzeżenia, ale dobrze się kompiluje) i jest poprawne.#include
jest tylko błędem, ponieważ wciąż kompilowałem jako C ++, ale nadal nie mogłem go skompilować bez zmiany nazwy twojej funkcjimain
.cQuents ,
9389 bajtówWypróbuj online!
Pamiętaj, że od momentu opublikowania TIO nie jest aktualizowane do najnowszej wersji, więc łącze TIO może nie działać.
Wyjaśnienie
źródło
JavaScript (Node.js) , 132 bajty
Prawdopodobnie bardzo zdolny do gry w golfa. Generuje wiersz „doo doo”, a następnie tworzy trzy z nich za pomocą „!” wiersz po i powtarza to dla każdego rekina.
Wypróbuj online!
źródło
jq, 87 znaków
Przykładowy przebieg:
Wypróbuj online!
źródło
whenyouaccidentallylose100endorsementsinnationstates -
123.065123.716113.695100.88998.554 bajtówProgram
Zagram w to później.Gotowy.Zagram w to więcej (później)Gotowe.Zagram w to jeszcze bardziej później.GOTOWY.Później liczę bajtów na 5 cyfr.TAKLiczę bajtów na 4 cyfry (nie wiem, czy jest to możliwe, ale wiem, że przy obecnym podejściu niemożliwe jest uzyskanie 3 cyfr).
źródło
Zwykły TeX, 147 bajtów
\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
Raczej rozczarowujące, ale od wieków nie opublikowałem odpowiedzi na TeX. Pętle są bardzo szczegółowe w teX (a zapętlanie ciągów nie jest nawet wbudowane, więc nawet to jest trochę rozciągnięte)
źródło
PHP ,
153147 bajtówDzięki @manatwork za zapisanie 6 bajtów przez wskazanie
str_pad('',23'doo ');
jest krótszy niżrtrim(str_repeat('doo ',6));
Wypróbuj online!
źródło
$d='doo doo doo doo doo doo'
jest krótszy niż ta kombinacjartrim()
+str_repeat()
. :( Ale na szczęście$d=str_pad('',23,'doo ')
jest jeszcze krótszy. Aby uzyskać więcej wskazówek dotyczących optymalizacji, zobacz Wskazówki dotyczące gry w golfa w PHP .