Celem tego wyzwania jest napisanie programu, w którym długość następujących trzech jest dokładnie taka sama:
- długość kodu źródłowego
- długość wydruku, który drukuje na standardowe wyjście
- długość ostrzeżeń kompilatora generowanych za pomocą (niemodyfikowanego) kompilatora wybranego przez użytkownika
Zwycięzca jest najkrótszym kodem, który spełnia wszystkie trzy kryteria, i musi mieć co najmniej 1 znak.
Aby urozmaicić sytuację, jeśli wynik ma mniej niż trzy różne postacie, dodaje 5 punktów kary do długości każdego z nich (więc +10, jeśli tylko jeden typ, +5 dla dwóch).
(Nowe linie liczą się jako 1 lub 2 znaki, twój wybór, ale musi być spójny we wszystkich trzech kryteriach. Wiodące i końcowe białe spacje są ignorowane we wszystkich liniach we wszystkich trzech kryteriach)
W przypadku równego wyniku wygrywa ten, który wydrukuje najciekawszy wynik (zamiast śmieci).
Odpowiedzi:
Bash, 23 znaki
Błąd:
Źródło:
Wynik:
Brainf * ck, 32 znaki
Ten kod jest wykonywany przez około 3 sekundy, zatrzymuje się i wyświetla następujący błąd i dane wyjściowe.
Błąd:
Źródło:
Wyjście: (Hexdump)
C, 35 znaków
Ostrzeżenie:
Źródło i wyjście:
PHP, 50 znaków
Ostrzeżenie:
Źródło i wyjście:
źródło
C - 48 znaków
Uwaga: zawiera ostatnią linię (w stylu uniksowym).
Dane wyjściowe z
gcc a.c
odczytów:Dane wyjściowe
a.out
to w większości znaki niedrukowalne, więc oto, jak to wygląda po przepuszczeniu przez zrzut heksowy:źródło
main(i){i='\z';while(i-->74)putchar(i);}
- ale zmniejszenie rozmiaru programu w rzeczywistości przynosi efekt przeciwny do zamierzonego.JavaScript, 63
66Dane wyjściowe to:
W Chrome błąd jest następujący:
źródło
Visual Basic .NET, 185
Ojej,
vbc
jest dość gadatliwy dzięki swoim ostrzeżeniom dotyczącym kompilacji. W każdym razie kod jest następujący:(Pamiętaj, że powinny to być tabulatory, a nie spacje).
Dane wyjściowe są następujące:
Ostrzeżenie kompilatora jest następujące:
(Tym razem są to właściwie cztery spacje, a nie tabulatory).
źródło
Zsh , 20 bajtów
Problem, przed którym stoimy, jest wspomniany w komentarzu powyżej: Zsh drukuje nazwę programu oprócz numeru linii przed każdym błędem. Tutaj rozwiązanie wykorzystuje jednoznakową nazwę pliku do nadużywania tego. Założyłem go w skrypcie pomocniczym, aby pokazać dokładnie to, co drukuje, i użyłem go
wc -c
na stderr, stdout i pliku źródłowym.Dane wyjściowe:
569Xcatcatcatcatcat
następnie nowy wierszBłędy:
s:[:2: ']' expected
następnie nowy wierszEDYCJA: Alternatywne 20-bajtowe rozwiązanie bez ograniczeń plików:
Wypróbuj online!
Zsh ,
zsh -x
, 10 bajtów-x
Flaga włącza xtrace. To znowu wymaga jednoznakowej nazwy pliku. Wypróbuj online!Zsh
zsh -JNTwEDY
, 12 bajtówNajkrótsza
-flag
odpowiedź bez wymagania nazwy pliku. Ustawia więcej flag i$-
drukuje je wszystkie. Wypróbuj online!źródło
JavaScript (Firefox 54), 34 bajty
Wyjścia:
I wysyła to ostrzeżenie do konsoli przeglądarki:
To wygląda jak ten w moim kopii Firefox Developer Edition (54.0a2). Może działać również w innych wersjach Firefoksa.
źródło
Ruby, 48 znaków
Wyjścia
Ostrzega
(plik to r.rb, usunąłem ścieżkę, jeśli uruchomisz go z irb, otrzymasz (irb): 1: ostrzeżenie ...)
W Ruby istnieje metoda warn, ale przekazuje ona swoje argumenty do $ stderr, dzięki czemu wygląda mniej jak ostrzeżenie.
źródło
Python, 57 bajtów
Inni tłumacze mogą wyświetlać ostrzeżenie inaczej. Zostało to przetestowane tylko do pracy na TIO.
Wypróbuj online
Wynik
Ostrzeżenie
Zauważ, że początkowe spacje nie są liczone do liczby bajtów. Jeśli wiodące spacje nie zostaną zignorowane, można to zrobić w 51 bajtach.
źródło
JavaScript (ES6),
3230 bajtówodciski
w Chrome, a następnie rzuca
Moje oryginalne 32-bajtowe rozwiązanie:
po pierwsze, drukuje
I rzuca błąd
źródło
VBA, 39 bajtów
Nie jestem pewien, czy to się kwalifikuje, biorąc pod uwagę ograniczenie kompilatora, ale:
Dane wejściowe: (w bezpośrednim oknie)
* Dane wyjściowe obejmują znaki niedrukowalne, które nie odtwarzają się dobrze w tym oknie.
źródło
Perl 6 , 10 bajtów
Wypróbuj online!
Drukuje
1000000000
do STDOUT iBool::True
do STDERR. Oba tworzą końcowy znak nowej linii, ale końcowe wyzwanie jest ignorowane w tym wyzwaniu.dd
jest funkcją debugowania specyficzną dla Rakudoźródło