W tym wyzwaniu Twoim celem będzie dostarczenie tekstów do Daft Punk's Harder, Better, Faster, Stronger. W szczególności wyślij ten tekst:
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder, Make It
Do It Faster, Makes Us
More Than Ever, Hour
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster Makes Us Stronger
More Than Ever Hour
Our Work Is Never Over
Work It Harder
Do It Faster
More Than Ever
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster
Makes Us Stronger
More Than Ever
Hour After
Our Work Is Never Over
Twój wynik może mieć końcowy znak nowej linii lub końcowy biały znak.
Wbudowane metody kompresji nie są dozwolone.
To jest golf golfowy, więc wygrywa najkrótszy kod!
code-golf
kolmogorov-complexity
TreFox
źródło
źródło
HQ9+Daft-Punk
który to drukuje ...Odpowiedzi:
Ruby,
308303Algorytm
Wprowadzenie do piosenki: weź 16 żetonów i wydrukuj je dwa razy (ostatni zawiera dodatkową nową linię)
Wersety: Riffuj tokeny razem, aby utworzyć wersety, 4 tokeny w wierszu, w następującej kolejności:
W niektórych liniach ostatni token jest pomijany lub zamieniany na
Af-
. Linie te są oznaczone 1-bitowym magicznym numerem 0x744447 = 7619655.W trzech wierszach pominięto również przedostatni token, tam gdzie
i%51/48==1
Interpunkcja na środku linii może być jedną z
' '
', '
'\n'
. Są one zakodowane w numerze 02220010000200100010001001110010001000100010001000100010 (podstawa 3) = „l4yq62lhgnizb0kfu” (podstawa 36.)Z komentarzami
źródło
Perl,
316309308307 bajtówŹródło musi być zakodowane jako Latin-1.
Wyjaśnienie
Zaczynamy od oryginalnych tekstów. Dla zwięzłości załóżmy, że tak
Teraz znajdujemy krótkie podciągi (≥ 3 znaki), które występują często. W takim przypadku
"Work "
występuje dwukrotnie. Każde wystąpienie zastępujemy znakiem 0xE1. Pamiętamy również zastąpiony ciąg w tablicy:Następny podciąg
"Harder"
zastępuje się 0xE0.substs
Tablica rośnie w kierunku do przodu:Trwa to łącznie 34 iteracji, aż dojdziemy do znaku 0xC0.
Teraz łączymy
substs
użycie postacib
(która nie występuje w tekstach) jako separatora. W kodzie Perlasubsts
tablica jest przechowywana w@c
(używając słowa kluczowego,b
aby powiedzieć,split
gdzie podzielić), znajdują się nowe pomieszane teksty$e
, a kod po prostu odwraca 34 podstawienia.źródło
Szpule , 302 bajty
Niedawno stworzyłem ten język i postanowiłem przetestować go z tym wyzwaniem. Wypisuje
\n
s zamiast nowych wierszy, ponieważ wyprowadza do HTML, ale interpreter jest napisany w JavaScript. Z tego powodu oto wersja z<br>
s zamiast\n
s:źródło
er
pojedynczy token?GolfScript (275 bajtów)
Zawiera on niedrukowalne znaki ASCII, więc oto zrzut heksowy:
źródło
Ruby - 643 bajty
Edycja: Zmniejszono golfa z 899 do 830.
Edycja2: 830 -> 755.
Edycja3: 755 -> 684.
Edycja4: 684 -> 670.
Edycja5: 670 -> 643.
Tak naprawdę nie używałem rubinu, więc jestem pewien, że można go zagrać w golfa, to tylko próba:
źródło
JAVA 518 / 490Bytes
Edycja: niepotrzebne 7 bajtów i dodano wersję Java 6 ze statyczną sztuczką {} Edit2: Objaśnienie rozwiń
java6:
Dzięki @Chris Drost za podpowiedź z wieloma „ER” w tekście. Pierwszy ciąg to tablica przeglądowa, druga część wykorzystuje małe litery (które są sekwencyjnym blokiem w ascii) jako indeks do tabeli, odejmując magiczną wartość a od wartości.
Druga część składa się z wielu ciągów o różnej długości (krótkie są wspólnymi częściami dzielonymi przez wiele wersetów), które łączą się w długi przed zapętleniem znaków
źródło
l
i użyj ciągu zawierającego wszystkie#
bezpośrednio w pętli dla każdego i zmieńchar
w pętli dla każdego naint
:for(int o:r.toCharArray())System.out.print("\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It".split("#")[o-97]);
co daje -5 bajtów / 513 bajtów .JavaScript ES6,
440 bajtów438 bajtówJest to kilka prostych optymalizacji kompresji. Jako jedna linijka:
Został napisany jako skrypt wykonywalny za pośrednictwem
iojs --harmony_arrow_functions file.js
; możesz zgolićconsole.log()
koszty ogólne w zależności od znaczenia „wypisz tekst”.Wyjaśnienie
Po wykonaniu zewnętrznego
.replace()
kodu, do któregoeval
jest wysyłany, jest:Sława
.repeat
funkcję dla ciągów, oszczędzając 2 bajty.źródło
b.repeat(7)
zamiastb+b+b+b+b+b+b
PowerShell, 659 bajtów
Tworzy tablicę słów kluczowych
$a
, a następnie koduje słowa przy użyciu szeregu ciągów liczbowych, które są wysyłane dofor
pętli. Pętla pobiera dwucyfrowe podciągi, pobiera odpowiednie słowo kluczowe z$a
tablicy i na koniec-join''
łączy je wszystkie razem.Myślę, że jest to tak dobre, jak ta metoda może być wykonana, ponieważ za każdym razem, gdy próbowałem dalej grać w golfa (np. Zastępując
040008
nową zmienną), okazało się, że jest ona o kilka bajtów dłuższa, ponieważ długość podciągu nie była wystarczająca, aby uwzględnij wszystkie dodatkowe potrzebne cytaty. Chociaż od czasu, gdy zacząłem, pojawiły się nowe odpowiedzi, które mają nieco inne metody, które wyglądają, jakby były krótsze w PowerShell (np. Używając znaków ASCII do kodowania, a nie dwucyfrowych?), Zamierzam pozostać przy ten.Edycja - zapomniałem używane kodowanie zastępcze:
źródło
GolfScript , 251 bajtów golfowych
Wypróbuj online!
Odpowiednio wyeliminowano niepotrzebny
[]
i uproszczony kod. Zmienionoi
ij
na@
i^
pozwala na usunięcie spacji. Przypisane pierwsze wystąpienie' '
zmiennej,|
aby uniknąć powtarzania tych samych trzech znaków.GolfScript , pierwsza działająca wersja 262 bajtów
Wypróbuj online!
To jest część mojej Ruby odpowiedzi na skrypt golfowy przy użyciu tego samego podstawowego algorytmu: wypisz listę tokenów dwa razy, a następnie przejrzyj je w wierszach i buduj wiersze wiersz po wierszu, dostosowując się do osobliwości każdego z nich.
Istnieje kilka różnic. Numer poprawnej interpunkcji w linii środkowej znajduje się w bazie 81 (dogodnie jest to jeden znak ascii do wydruku na wiersz); a liczba kodująca, czy wydrukować ostatni token, jest modyfikowana, ponieważ
55-i
zamiast tego indeksi-28
(ten drugi powoduje problemy z mocami ujemnymi generującymi liczby ułamkowe zamiast obcinania do liczby całkowitej).Skomentował
źródło
" "
) w zmiennej. Nie wyskakuj też po przypisaniu do zmiennej z przyzwyczajenia.51
Zauważyłeś wcześniej miejsce, za którym tęskniłem. Naprawię to później i ewentualnie będę szukał innych sposobów na jego skrócenie. To jest mój pierwszy program do gry w golfa i bardzo trudno mi je odczytać, gdy symbole są używane jako zmienne, dlatego przynajmniej na razie zostawiłem moją pierwszą działającą wersję 262 bajtów.Python - 1056 Charaters
Nadal jest miejsce na ulepszenia dzięki nazwom zmiennych, ale to dopiero początek.
źródło
Rubin, 486 bajtów
źródło
Rubinowy, 483 bajtów
Działa poprzez zakodowanie każdego słowa użytego w piosence do jednej litery, pomnożenie niektórych zwrotek, a następnie zastąpienie zakodowanych liter faktycznymi tekstami. Przecinki, spacje pozostają bez zmian.
u
to nowa linia.źródło
fuc b gud
PHP, 434 bajtów
Wypróbuj online!
źródło