Wyzwanie:
Pomysł jest dość prosty: napisz pełny program, który wyświetli swój własny wynik golfowy!
Wyjście powinno być tylko liczbą bajtów twojego programu i końcową wartością bytes
.
ALE CZEKAJ ..... jest jedno ograniczenie:
- Kod źródłowy nie może zawierać żadnej cyfry z liczby bajtów
- Więc jeśli Twój wynik jest
186 bytes
, program nie może zawierać znaków1
,6
lub8
Przykładowe dane wyjściowe:
315 bytes
27 Bytes
49 BYTES
Dodatkowe zasady:
- Niepotrzebne znaki, spacje i znaki nowej linii są zabronione w kodzie źródłowym, jednak końcowe spacje i znaki nowej linii są całkowicie dopuszczalne w danych wyjściowych
- Powinna być pojedyncza spacja między liczbą a
bytes
danymi wyjściowymi - Litery nie uwzględniają wielkości liter
- Brak samokontroli lub odczytu kodu źródłowego
standardowe luki są niedozwolone
to jest golf golfowy , więc
Najkrótszy kod w bajtach wygrywa!
bytes
Podejrzewam, że intencją jest, aby liczba zawierała bajty potrzebne do wydrukowania tekstu:bytes
1 bytes
czy1 byte
? (pamiętaj, że jest już 41 odpowiedzi, choć nie sądzę, by na nich miało to wpływ)Odpowiedzi:
JavaScript, 19 bajtów
Octal został wymyślony, aby służyć dwóm celom:
Wypróbuj online!
źródło
Perl 5 , 16 bajtów
Istnieje wiele innych sposobów,
16
ale ten jest mójWypróbuj online!
źródło
&
|
^
i~
mogą być również stosowane do ciągi i pracuj nad nimi jak na liście wartości ASCII (tylko wtedy, gdy obie strony są łańcuchami). For|
i^
działa tak, jakby krótki łańcuch został przedłużony o\0
. Po tym jest proste ćwiczenie, aby znaleźć kombinacje liter, które xor do pożądanego wyjścia,7 , 23 znaków, 9 bajtów
Wypróbuj online!
To dość trudne wyzwanie w języku składającym się wyłącznie z cyfr, ale udało mi się…
To tylko 9 bajtów w kodowaniu 7. (Ściśle mówiąc, jest to 8⅜ bajtów (23 × ⅜ - ¼, ponieważ ostatnie dwa końcowe 1 bity można pominąć), ale po raz pierwszy wymóg PPCG dotyczący zaokrąglenia w górę do pełnej liczby bajtów jest w rzeczywistości zaletą, ponieważ oznacza, że dodatkowe końcowe 1 bity są konieczne i dlatego nie są zbanowane przez pytanie.) Odwracalny zrzut heksowy:
Głównym wyzwaniem pisania tego programu w 7 była gra w golfa poniżej 10 bajtów (jako pisanie 7 bez użycia
0
lub1
jest dość trudne.) Używa tej samej struktury co standardowy program „Hello world”:Innymi słowy, zaczynamy od utworzenia dwóch sekcji przestrzeni danych; mamy dwa literały, z których każdy wypycha sekwencję poleceń. Druga sekcja (są one wypychane w stylu stosu, więc pierwsze naciśnięcie = ostatni pop) jest dość dowolną sekwencją poleceń, ale jest wypychana za pomocą sekwencji poleceń
5434004514133240105
(tworząc w ten sposób sekwencję danych5434664574733246765
; podczas omawiania 7 w tekście zwykle używam normalnej czcionki dla polecenia wypychającego literał i pogrubionego dla odpowiadającego mu wynikowego literału). Pierwsza sekcja jest wypychana za pomocą sekwencji poleceń403
, tworząc463
. Następnie pierwsza sekcja jest kopiowana z powrotem do programu (niejawne zachowanie 7).463
Jest teraz w składzie (pogrubione) poleceń, które robią coś natychmiast, zamiast (non-bold) nakazuje, że wystarczy nacisnąć literałów.4
przestawia sekcje, aby uzyskać nasz „dosłowny ciąg znaków” w pierwszej sekcji. Następnie0
wykonuje się operację, z której 7 jest najbardziej znana: pobranie części przestrzeni danych i odtworzenie sekwencji poleceń, która najprawdopodobniej ją utworzyła. W przypadku, gdy oryginalna sekwencja poleceń była wszystkim0
-5
jest to w 100% dokładne (co nie jest zaskakujące, ponieważ polecenia te jedynie przekazują dane, a tym samym pozostawiają oczywiste dowody na to, co zrobili), więc odzyskujemy naszą oryginalną sekwencję5434004514133240105
. Wreszcie3
drukuje.Pozostaje więc do obejrzenia tutaj kodowanie łańcucha. Ma on swój własny język specyficzny dla domeny:
(W zestawie znaków „cyfry i wspólne symbole” nie ma „wybierz zestaw znaków: małe litery” - najpierw musisz przejść przez inny zestaw znaków - więc musiałem użyć wielkich liter, aby zagrać w golfa na tyle krótko, aby zmieścił się pod skutecznym 10 Limit bajtów.)
źródło
Płótno , 8 bajtów
Wypróbuj tutaj!
Bardziej interesujące rozwiązanie 20-bajtowe:
Wypróbuj tutaj!
źródło
pieprzenie mózgu , 53 BYTES
Wypróbuj online!
Kolejne zgłoszenie z wielkimi literami
bytes
. Znaleziony z pomocą doskonałego pomocnika Crunch BF firmy primo.źródło
PHP, 14 bajtów
źródło
bytes
części poza?>
? Wypróbuj online!PHP starszy niż 7.2 , 13 bajtów
Zakłada domyślne ustawienia (wyłączone ostrzeżenia E_NOTICE) i wersję PHP starszą niż 7.2.
Wymaga dekodowania
xxd -r
Lub jeśli wolisz Base64
Wypróbuj online!
źródło
Stax , 5 bajtów
Uruchom i debuguj
Po rozpakowaniu wygląda to tak. Tryb spakowanego źródła sprawia, że ten rodzaj jest trywialny i nieciekawy.
Jeśli nie chcesz używać trybu spakowanego źródła,
6^p`5l@
działa na 7 bajtów.źródło
restricted-source
, a nie w języku. Jest to w rzeczywistości najbardziej bezpośredni sposób produkcji"5 bytes"
przy użyciu Stax.R , 16 bajtów
Wypróbuj online!
źródło
bytes
”. Program ma 16 bajtów.cat
domyślnie dodaje spację między wejściami.object.size
wyjścia w poprawnym formacie (zbytes
domyślnie dołączonym). Irytująco, najkrótszy udało mi się znaleźć to 17:object.size(0)-39
. TIOobject.size(0)/3
.Python 3 ,
252418 bajtówWypróbuj online!
źródło
3*8
powinno być w porządku05AB1E , 6 bajtów
Wypróbuj online!
Alternatywy
₂¤
są:5>
,₁¤
,3·
źródło
Bash, 21 bajtów
„Przeczytaj swój kod źródłowy” najwyraźniej nie jest tutaj zwycięzcą, ale nikt inny go nie przesłał, więc do cholery.
Wypróbuj online!
źródło
Siatkówka , 15 bajtów
Ten program zlicza liczbę podciągów z co najmniej dwoma znakami w ciągu „bajtów”, a następnie drukuje tę liczbę i sam ciąg.
Wypróbuj online!
źródło
PHP + HTML, 16 bajtów
Tak, zbliża się to do nadużyć związanych z lukami, ale czułem, że należy to opublikować. A użycie PHP oznacza, że technicznie ta odpowiedź jest napisana w języku programowania Turing-complete. Oczywiście każdy inny podobny język szablonów HTML działałby równie dobrze.
Wersja demonstracyjna na żywo (bez PHP):
źródło
dc ,
1411 bajtówWypróbuj online!
-3 bajty według
@Cows quack
źródło
[ bytes]Bnn
goli trochę bajtówMATL , 13 bajtów
Wypróbuj online!
Spycha to ciąg „57 $ f} xiw” i odejmuje
4
, aby uzyskać13 bytes
. To jest konwertowane na znaki za pomocąc
.źródło
6EV' bytes'h
ma 12 lat (właśnie miałem to opublikować)Oktawa , 22 bajty
Wypróbuj online!
źródło
Oktawa , 23 bajty
Wypróbuj online!
I to:
Wypróbuj online!
źródło
4
od (kody ASCII z)'67$f}xiw'
daje kody ASCII z'23 bytes'
. Następnie konkatenacja z pustym ciągiem''
konwertuje kody ASCII na znakiPetit Computer BASIC, 11 bajtów
Użycie przecinka w instrukcji print spowoduje przesunięcie kursora do następnej wielokrotności bieżącego rozmiaru tabulatora. W SmileBASIC jest to domyślnie 4, więc wyprowadziłoby to
11 bytes
(2 spacje), ale PTC BASIC użył zamiast tego 3, więc wyjście ma prawidłowe odstępy.źródło
APL (Dyalog Unicode) , 12 bajtów
Pełny program, który domyślnie drukuje do STDOUT.
Wypróbuj online!
,⍨
dodaje ciąg do wyniku mnożenia. Domyślne wyświetlanie danych mieszanych APL-a umieszcza spację między liczbą a kolejnym tekstem.źródło
Brain-Flak , 100 BYTES
Wypróbuj online!
Wysyła
bytes
część we wszystkich czapkach. Ktoś obeznany z Brain-Flak może być naprawdę zdezorientowany((<>))
na początku, ale zapewniamy, że są tam tylko po to, aby nadużywać wysokości stosu nilad ([]
) i żadne z nich,0
które produkują, nie są drukowane.źródło
Haskell , 26 bajtów
Wypróbuj online!
29 bajtów
Wypróbuj online!
źródło
$
zamiast tego.Biała spacja , 112 bajtów
Tylko dlatego, że nikt tego jeszcze nie zrobił:
Wypróbuj online!
Drukuje „BYTES” dużymi literami, ponieważ wielkie litery mają krótsze binarne kody ASCII. Polecenia w programie, w moim własnym utworzonym widocznym zapisie, to:
źródło
Java 5 lub 6, 44 bajty (pełny program)
Brak linku TIO, ponieważ Java 5/6 jest stara. W Javie 5/6 można było zastosować wyliczenie z kodem zamiast metody obowiązkowej
main
, co skróciło go do pełnych wyzwań programowych.Można również dodać błędy
java.lang.NoSuchMethodError: main\nException in thread "main"
w STDERR po wydrukowaniu do STDOUT, co jest zgodne z meta (ale jeśli wyzwanie uniemożliwiłoby dodatkowe błędy w STDERR,System.exit(0);
można dodać (i liczby ósemkowe należy zaktualizować), aby zapobiec błędowi.Sugerowane przez @ OlivierGrégoire (i jego odpowiednią wskazówkę Java ).
Java 8+, 74 bajty (pełny program)
Wypróbuj online.
Java 8+,
1615 bajtów (funkcja lambda)-1 bajt dzięki @ OliverGégoire .
Wypróbuj online.
źródło
37*2
zawiera7
, więc nie jest poprawny. Twoje alternatywne rozwiązanie jest w porządku.v->0xE+"bytes"
lubv->0xF+" bytes"
. Nie można przetestować, ale i tak powinno działać. Nic nie mówi, że wynik i „bajty” muszą być oddzielone.FerNANDo , 79 bajtów
Wypróbuj online!
źródło
Jabłkowy, 15 bajtów
Tak, idę tam.
źródło
Your source code can not include any of the digits from your byte count
”
to znak wielobajtowy (3 bajty w Unicode, jeśli dobrze pamiętam), więc jest to więcej niż 11 bajtów?Dalej (gforth) ,
1413 bajtówWypróbuj online!
źródło
> <>, 13 bajtów
Wypróbuj online!
źródło
Partia, 32 bajty
COMSPEC
jest zwykle,%WINDIR%\system32\cmd.exe
więc wyciągam podciąg z 10 do 8 znaków na końcu. Stara 16-bajtowa wersja z odnośnikami:Na szczęście liczba bajtów nie była wielokrotnością 10.
źródło
JavaScript,
1615 bajtówźródło
_=>5*3+' bytes'
5
w takim przypadku ..