Twoje zadanie jest proste. Opublikuj fragment kodu w dowolnym języku, który jeśli zostanie powtórzony n razy, wyświetli n w postaci dziesiętnej, ósemkowej i szesnastkowej, w tej kolejności, oddzielonych spacjami. n jest liczbą całkowitą większą niż zero. Brak zer wiodących. Najkrótsza odpowiedź wygrywa
Przykład
Jeśli fragment jest, ABC
to przypadek testowy to
ABC
1 1 1
ABCABC
2 2 2
ABCABCABCABCABCABCABCABCABC
9 11 9
ABCABCABCABCABCABCABCABCABCABCABCABC
12 14 C
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
18 22 12
1 01 0x1
? (Zawiera prefiksy)Odpowiedzi:
Japt, 12 bajtów
Dzięki @ETHproductions za oszczędność 2 bajtów!
Taki sam jak moja odpowiedź..
źródło
[°TTs8 TsG]¸
Perl, 30 bajtów
Wróć do początku wiersza, licznik przyrostów i licznik wydruku zastępują stary wynik.
źródło
JavaScript,
54 53 5147 bajtówZaoszczędzono 4 bajty dzięki @ user81655
Jestem właściwie zaskoczony, że to działa.
Wyjaśnienie
Wypróbuj online
źródło
ReferenceError: Can't find variable: d
nawet w trybie swobodnym D:d=d?d+1:1
działaC ++,
205179 bajtów(Brak końcowego nowego wiersza - po skopiowaniu pierwszy wiersz kopii i ostatni wiersz oryginału powinny się pokrywać)
Zasadniczo działa to poprzez utworzenie sekwencji zmiennych statycznych, które podczas budowy zwiększają licznik zmiennych globalnych. Następnie po zniszczeniu, jeśli licznik nie jest równy 0, wykonuje całą swoją moc wyjściową i ustawia licznik na zero.
Aby zdefiniować sekwencję zmiennych bez konfliktów nazw, używamy makra objaśnionego w następujący sposób:
co nieco opiera się na osobliwościach procesora ciągów.
z
Wielokrotnie używamy do definiowania klas / zmiennych, które nie będą ze sobą sprzeczne podczas kopiowania na osobne linie. Co więcej, definicje, które muszą wystąpić tylko raz, są umieszczane w pierwszym wierszu, który jest komentowany w kopiach kodu. The#define
i#include
nie dbają o to, aby się powtarzały, więc nie wymagają specjalnego postępowania.Ten kod zawiera również niezdefiniowane zachowanie w instrukcji:
ponieważ nie ma punktów sekwencji, ale c jest modyfikowane i dostępne. LLVM 6.0 daje ostrzeżenie, ale kompiluje je zgodnie z potrzebami - co
--c
ocenia wcześniejc
. Można by, kosztem dwóch bajtach, dodać oświadczenie--c;
przed wyjść i zmiany--c
wprintf
celuc
, który będzie pozbyć się ostrzeżenia.Zastąpiony
std::cout
zprintf
oszczędności 26 bajty dzięki sugestią mojego brata.źródło
CJam,
201918 bajtówDzięki @ MartinBüttner za grę w golfa na 1 bajcie!
Wypróbuj online!
Jak to działa
źródło
𝔼𝕊𝕄𝕚𝕟, 14 znaków / 28 bajtów
Try it here (Firefox only).
Pierwsza odpowiedź! Chociaż są prawdopodobnie lepsze sposoby na poradzenie sobie z tym.
Wyjaśnienie
źródło
MATL , 26 bajtów
Wykorzystuje bieżącą wersję (6.0.0) . Działa na Octave.
Przykłady
Pewnego razu:
Dwa razy:
16 razy:
Wyjaśnienie
Liczba elementów w stosie służy do wskazania, ile razy uruchomiliśmy fragment kodu
źródło
OCaml, 198 bajtów
Zawiera końcowy znak nowej linii i wymaga, aby nazwa pliku rozpoczynała się od tyldy (użyłem
~.ml
; możesz ją uruchomićocaml \~.ml
), ponieważ jest to najbardziej ceniony standardowy znak ASCII do wydruku. Nadużywa faktu, że wszystkie znaki w ciągu są zmienne iSys.argv.(0).[0]
jest pierwszym znakiem w nazwie pliku.Powinno działać tylko dla n = 1 do 126, ponieważ kod ASCII dla
~
to 126, a ja dodaję jeden do wyniku. Można by zrobić dwa bajty krótsze, jeśli chcemy tylko n = 1 do 125. Po powtórzeniu 126 razy nastąpi powrót do n = 1.To mój pierwszy golf, więc wszelkie uwagi i ulepszenia będą mile widziane.
Wersja bez golfa:
źródło
Sys.argv.(0).[0]
. Jednak niewiele wiem o OCaml.TeaScript ,
2120 bajtówPowinienem włączyć automatyczne zamykanie
;
Wypróbuj online
Wyjaśnienie
┼
staje się++
źródło
Perl, 40 bajtów
Za okrężnicą znajduje się ostatnia linia.
Traktuje wszystko po pierwszym wierszu jako dokument tutaj i liczy się
z
w nim. Dla każdej kolejnej kopii kodu jedenz
dodawana jest . Musimy dodać1
do liczby, ponieważ nie ma żadnego dla pierwszego fragmentu (tego, który jest wykonywany).Jeśli dozwolone są dodatkowe dane wyjściowe do stderr, możemy pominąć 2 pojedyncze cudzysłowy
''
i uzyskać do 38 bajtów. Bez''
perla wysyła ostrzeżenie o przestarzałej funkcji.źródło
Mathematica, 76 bajtów
Pamiętaj, że
n
wcześniej nie powinny mieć żadnych definicji.Tutaj
;
wykorzystywane jest zachowanie . Powyższy fragment jest jednym pojedynczymCompoundExpression
, jednak po złożeniu kilku fragmentów jest jeszcze jeden,CompoundExpression
jak pokazano poniżej. (Wprowadzono niepotrzebne zmiany).Tak więc nie można sprawić, by taki fragment kodu działał, jeśli jest napisany jednoznacznie
CompoundExpression
. Ponadto prawie wszystko, co lubisz, można umieścić przed pierwszym,;
takim jakE
,Pi
lubMandelbrotSetPlot[]
.źródło
bash, 49 bajtów
Plik
count.bash
:... brak końcowego znaku nowej linii.
Biegać:
źródło
Python 2, 54 bajty
Brak końca nowej linii. Dane wyjściowe w formularzu
1 01 0x1
.Jeśli to nie w porządku, 56 bajtów
Po wklejeniu przed sobą długość pliku wydłuża się o 1 linię za każdym razem, gdy jest wklejany. Przypadek podstawowy zaczyna się od 2 linii, więc musisz odjąć 1 od długości linii. Komentarz jest pomijany w obliczeniach.
źródło
"%d %o %x"%(n,n,n)
, to całkiem fajne. Nie miałem pojęcia, że możesz to zrobić. Jeśli okaże się, że pozostawienie prefiksów nie jest w porządku, będę musiał to pożyczyć.Python 2.x 140 bajtów
To nie miało być zbyt konkurencyjne rozwiązanie, ale metoda, którą uznałem za zabawną, ponieważ była to próba wielowątkowego golfa.
Utrzymuje licznik, odradza wątek dla każdej liczby, a jeśli licznik nie zmienił się, gdy licznik czasu zgaśnie po ukończeniu kosztownego zadania matematycznego (zamiast licznika, aby zapisać bajty), sformatowany ciąg jest drukowany.
Niektóre przykładowe konfiguracje i ich wyniki:
i piętnaście kopii past:
źródło
thread.start_new_thread
Czy python mógł pomyśleć o gorszej nazwie metody gry w golfa?Perl 5 , 31 bajtów
Używa tego samego podejścia, co moja odpowiedź na „Podwajam źródło, podwajasz wynik!”.
Wypróbuj online!
źródło
Rubin, 35 bajtów
Przyrosty każdego fragmentu kodu
$.
(który zaczyna się od 0, jeśli nie odczytano żadnych plików), ale tylko ostatni wynik. zwraca*-~-0
wartość*1
, co oznacza, że wydrukuje jeden raz, ale z konkatenacją staje*-~-01
się ósemkowym wyrażeniem o wartości 0. Ponieważ$><<
nie zawiera końcowego nowego wiersza, wydrukowanie pustego ciągu oznacza, że nic nie zostanie wydrukowane.źródło