Nikt nie jest pewien, co ma reprezentować emotikon >:U
, ale wielu uczonych uważa, że wygląda jak wściekła kaczka . Załóżmy, że tak jest.
Zadanie
Biorąc pod uwagę liczbę całkowitą n od 0 do 3 włącznie, wydrukuj lub zwróć
quack
jeśli n = 0,
>:U
jeśli n = 1,
U U
> : U U
> U U
> : U U
UUU
jeśli n = 2 lub
>:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U>:U>:U
jeśli n = 3.
Możesz założyć, że dane wejściowe będą zawsze prawidłowe. Wyjście nie powinno zawierać wiodącej przestrzeni, ale dowolna ilość końcowego miejsca jest w porządku. Kaczki (z możliwym wyjątkiem @cobaltduck) nie tolerują luk. Najkrótszy kod w bajtach wygrywa.
Odpowiedzi:
CJam,
1089085 bajtówPamiętaj, że niektórych znaków nie można wydrukować. Wypróbuj online!
tło
Pierwsze dwa wyjścia są nieściśliwe w CJam.
Kompresowanie ostatniego wyjścia jest proste. Po usunięciu wszystkich linii, możemy podzielić powstały ciąg w wystąpieniach
>:U
i obliczyć długość każdego wynikowego ciągu spacji.To powoduje tablicę
które możemy skutecznie przechowywać, przekształcając je z bazy 22 w bazę 269, uzyskując cyfry
Ponieważ każda cyfra jest mniejsza niż 256 , możemy ją zapisać jako pojedynczy bajt.
Wreszcie kompresowanie trzeciego wyjścia staje się łatwiejsze, jeśli transponujemy linie i kolumny:
Licząc jeszcze raz spacje między znakami spacjami, otrzymujemy tablicę
który staje się
po transkodowaniu z bazy 22 do bazy 269.
Jak to działa
źródło
:D
między dwoma strunami.Java,
303286 bajtówZaoszczędź 17 bajtów dzięki @VoteToClose!
Właściwie to nie miał być najkrótszy, po prostu pomyślałem, że fajnie byłoby spróbować w Javie.
Tworzy listę zmiennych łańcuchowych reprezentujących wspólne łańcuchy, następnie tworzy tablicę wszystkich danych wyjściowych, a następnie drukuje właściwy.
Nie golfowany:
To jest moja pierwsza odpowiedź na tej stronie, więc powiedz mi, czy zrobiłem coś złego.
źródło
D+A
iC+B
pojawia się na tyle często, że można w nim zagrać w 2 nowe zmienne. Odnoszę też najmniejsze wrażenie, że użycie tablicy z pętlą for może pomóc, ale jeszcze nie zorientowałem się, jak ...05AB1E ,
162159157 bajtówKod
Cholera, zbyt długo, ale to przynajmniej coś:
Wypróbuj online!
Wyjaśnienie
Istnieje pierwsza część kodu
">:U"V
, która ustawiaY
ten ciąg. Następnie sprawdzamy, czy dane wejściowe są równe 3. Jest to wykonywane naI3Qi
części. Jeśli są równe, drukujemy gigantyczną srokę:N = 3
Najpierw zaczyna się od
ð16×
tego, że popycha tylko 16 znaków spacji. Potem jest liczba7166b
. To dotyczy tej">:U "
części, z niewielką pomocą Retina :). Użyłem tego skryptu, aby przekonwertować ciąg na liczbę binarną. Następnie przechodzimy do1ð:0Y:
części, która zastępuje każdą1
spacją i każdą0
zY
ustawioną na>:U
. Po tym,D
uplicate ten ciąg, należy go przechowywać wX
użyciuU
iJ
OIN stosie. Wstawiamy to za pomocą,
, która wypisuje pełny ciąg z nową linią. Wszystkie pozostałe później oparte są na tym samym podmiocie. Instrukcja if kończy się na sekundę}
.Pełną konwersję można znaleźć tutaj .
N = 2
Sprawdzamy teraz, czy dane wejściowe są równe 2. Odbywa się to na
¹2Qi
części. Następnie, jeśli są równe, naciskamy znak spacji 4 razy za pomocąð4×
. Następnie popychamy" U U"
sznurek i przechowujemy go za pomocą©
(pomysł rażąco skradziony z Jelly: p). PonownieJ
powiększamy stos i drukujemy go z nową linią. Następnie popychamy"> :"
ciąg, pobieramy za" U U"
pomocą®
, umieszczamyJ
na stosie iD
stosujemy ten ciąg i drukujemy oba w tym samym wierszu.Krótki quiz, co to zrobi
" > "?®,
:?Po wydrukowaniu powyższego ciągu otrzymujemy duplikat drugiej linii twarzy i wydrukujemy ją (ponieważ jest taka sama jak druga linia).
Ostatnia część objęta tą sprawą to:
N = 1
Ten jest łatwiejszy do wyjaśnienia:
N = 0
źródło
Vitsy ,
172171159 bajtówOch Jezu. Jeśli chciałem, żeby coś pochwalić potęgę metod, mam to.
Wypróbuj online!
Działa to poprzez wywoływanie różnych metod w całym samym sobie. Wyjaśnienie znajduje się poniżej:
Ten kod jest niedorzeczny. Jego pełna forma to:
źródło
JavaScript (ES6), 163 bajty
Wyjaśnienie
Wykorzystuje moją kompresję z JavaScriptem: kodowanie run-length. Cyfry
1
na9
mapie do tylu pól,0
mapy do twarzy wściekłej kaczki i każda inna postać pozostaje taka sama.źródło
Japt,
1161051029996 bajtówZawiera niedrukowalne. Przetestuj online!
Jak to działa
Pierwsze dwa ciągi nie są w ogóle skompresowane. Trzeci jest skompresowany przez zastąpienie każdego ciągu spacji jego długością, a następnie
" U3U"
przez"z"
. Ostatni jest bardziej złożony:>:U
się1
.191\n
się4
. (4
nie jest używany nigdzie indziej w ciągu).10
-255
lub0A
-FF
) na znak z tym kodem znaków.Wynikowy ciąg ma tylko
2119 bajtów długości, ale dekompresja zajmuje kolejne3129.Po zdekompresowaniu ciągów, po prostu bierzemy pozycję w pozycji
U
, wejście. (Tablica jest ułożona,[0,3,2,1]
ponieważ występuje błąd, który powoduje, że liczy się od końca tablicy zamiast od początku.)źródło
MATL ,
283182 bajtów101 bajtów zapisanych dzięki @Adnan!
To używa liczb dziesiętnych do kodowania indeksów
0
...3
do czterech znaków w przypadkach 2 i 3. Liczby dziesiętne mogą być prawdopodobnie skompresowane przy użyciu kodowania base-64, ale kwak!W przypadku 3 zastosowano bardzo fajną sztuczkę sugerowaną przez @Adnan: zdefiniuj sekwencje binarne, aby zakodować każdy wiersz, gdzie
0
i1
odpowiednio odpowiednio do spacji>:U
.Wypróbuj online!
źródło
1
ze spacjami i0
ze>:U
sznurkiem. Nie wiem czy to by pomogło.Guma cynamonowa, 76 bajtów
Nie konkuruje, ponieważ guma cynamonowa powstała po tym wyzwaniu.
Wypróbuj online.
Wyjaśnienie
Pierwszy bajt
l
określa tryb: w tym przypadku informuje gumę cynamonową o przejściu do trybu tabeli przeglądowej. Następnie guma cynamonowa dekompresuje resztę łańcucha (który został skompresowanyzopfli --deflate
) do tego:Następnie dzieli się według
;
, umieszcza każdą parę klucz-wartość (z&
ogranicznikiem) w słowniku i wysyładictionary[input]
.źródło
JavaScript ES6,
232223203188 bajtówZaoszczędzono
2944 bajtów dzięki produktom ETH!Przetestuj to!
Pokaż fragment kodu
źródło
1
czy0
można przekształcić je w liczbę trójkową?r+g+g+g+r
sięg+g+g+r
i dostosowując odpowiednio ciąg.GML, 265 bajtów
Port doskonałej odpowiedzi @ kittycat3141, z sugestią, aby dalej grać w golfa za pomocą dwóch nowych zmiennych (które nazwałem G i H) autorstwa @VoteToClose. Udało mi się także go skrócić dzięki stosunkowo luźnej składni GML.
źródło