Ponieważ zbliża się Halloween, pomyślałem, że mogę rozpocząć zabawę w golfowym konkursie!
Wyzwanie jest dość proste. Trzeba napisać program, który wyprowadza albo trick
albo treat
.
„Skręt?” możesz zapytać. Pozwól mi wyjaśnić:
Twój program musi wykonać następujące czynności:
- Być kompilowalnym / uruchamialnym w dwóch różnych językach. Różne wersje tego samego języka się nie liczą.
- Kiedy uruchomisz program w jednym języku, powinien on wypisać,
trick
a drugi powinien wypisaćtreat
. Wielkość liter nie ma znaczenia i dozwolone jest uzupełnianie łańcucha znakami spacji (patrz przykłady). - To jest golf golfowy , więc wygrywa rozwiązanie z najmniejszą liczbą bajtów.
Kilka wyjaśnień:
Prawidłowe dane wyjściowe (Tylko dla słów, które nie uruchamiają kodu w dwóch językach. Dodając również cudzysłowy, aby zasygnalizować początek lub koniec danych wyjściowych. Nie uwzględniaj ich w swoim rozwiązaniu!):
"trick"
"Treat"
" TReAt"
"
tRICk "
Nieprawidłowe dane wyjściowe :
"tri ck"
"tr
eat"
"trck"
Chcę zobaczyć, co możesz wymyślić! Wesołego golfa!
Chciałbym zauważyć, że jest to moje pierwsze wyzwanie, więc jeśli masz sugestie dotyczące tego pytania, zostaw je w formie komentarza.
Liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Odpowiedzi:
2sable / pl , 8 bajtów
Oba programy zostały przetestowane lokalnie przy użyciu tego samego pliku 8-bajtowego, więc jest to właściwy poliglota.
2sable: trick
To jest program na stronie kodowej 1252 .
Wypróbuj online!
pl: Treat
To jest program na stronie kodowej 437 .
Wypróbuj online!
Jak to działa
2sable: trick
pl: Treat
źródło
Pakiet Python / Windows, 25 bajtów
Wszystko po # jest interpretowane przez Pythona jako komentarz, podczas gdy || jest partią OR, mówiącą, że ponieważ poprzednie polecenie nie powiodło się, wykonaj to.
Lubię też użycie OR, ponieważ prawie odczytuje „Cukierek albo psikus” :)
źródło
2>nul
.Biała spacja / gwiaździsta, 135 bajtów
Oto jasne nocne niebo w Halloween!
Pamiętaj, że białe znaki w pustych wierszach mogą nie zostać zachowane, jeśli skopiujesz z powyższego kodu
Białe znaki wypisują „TRICK”. Wypróbuj online!
Gwiaździste wyjścia „TREAT”. Wypróbuj online!
Wyjaśnienie
Gwiaździsty
Starry ignoruje wszystkie karty i nowe wiersze, więc kod, który czyta, jest następujący
Z drugiej strony, wypychanie wartości jest bardzo drogie w porównaniu z operacjami stosowymi i arytmetycznymi w Starry. Kod zaczyna się od wypychania i duplikowania 4, a następnie wykonuje na nim szereg operacji, a następnie naciśnięcie 2 i 1 powoduje wygenerowanie wszystkich wymaganych wartości ASCII.
Kod z adnotacjami
Biała przestrzeń
Jak sama nazwa wskazuje, białe znaki analizują tylko trzy znaki białych znaków - spację, tabulator i znak nowej linii. W odróżnieniu od gwiaździstego, białe znaki po prostu popycha wartości ASCII
T
,R
,I
,C
iK
oraz im wydruki.Kod z adnotacjami
Przeplatanie pchnięć i wydruków zostało wybrane wyłącznie na podstawie względów estetycznych, ponieważ nie wpływa to na liczbę bajtów.
źródło
Plik Linux ELF x86 / DOS .COM, 73 bajty
Źródło NASM:
Wykorzystuje to fakt, że nagłówek ELF zaczyna się od 7F 45, który interpretowany jako kod x86 jest skokiem.
Odpowiednie części dla DOS .COM:
źródło
evil / ZOMBIE , 109 bajtów
Kolejna upiorna odpowiedź!
ZOMBIE
Kod definiujevampire
nazwiexf
, którego jedynym zadaniemf
jest aktywowany w instanciation i wyjścia wolitrick
raz przed dezaktywowaćstumble
. Drugiesay
wywołanie to martwy kod (jak odpowiedni!)ZOMBIE
, Ale zawiera większośćevil
kodu.Dla
evil
Thexf
nazwa jest wezwaniem, aby przejść do następnegoj
, który poprzedzazuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeaw
jęk zombie że rzemiosło i wyjścietreat
. Poniższy kod jest albo wykonywany (małe litery), albo ignorowany, ale ponieważ nie maw
żadnych wyników, nie powinien być generowany.źródło
Python / Perl, 28 bajtów
Wyjaśnienie
Ponieważ
[]
jest to ArrayRef w Perlu, jest prawdą, ale w Pythonie jest pustą tablicą, dlatego jest fałszywy.źródło
print({}and"trick"or"treat")
w Python / Lua.{}
jest to HashRef!print ([]and"trick"or"treat")
print({}and"trick"or"treat")
!PHP / JavaScript,
3230 bajtówWyświetla
trick
w PHP itreat
JS.Nieznana
NaN
stała jest domyślnie konwertowana na ciąg znaków przez PHP, co czyni ją prawdziwą. W JS to fałsz.Metoda alternatywna, 38 bajtów
Operator trójskładnikowy ma w JS asocjację:
I lewostronny w PHP:
źródło
HTML / HTML + JavaScript, 53 bajty
treat
to treść tekstowa dokumentu w HTML.Jeśli JS jest włączony, zastąpi on treść HTML
trick
.źródło
document.write()
. -8 bajtówdocument.write
nie zastąpi wyniku HTML, ale do niego dołączy .C / Java 7,
165155128123122120103 bajtów// \ sprawia, że następny wiersz jest także komentarzem w C, ale jest zwykłym komentarzem jednowierszowym w Javie, więc możesz sprawić, że C zignoruje kod przeznaczony dla Javy, a dodając / * w drugim wierszu możesz dodać komentarz do Javy, który jest parsowane jako kod przez C.
Edycja: Trochę go poprawiłem, reorganizując linie i komentarze.
Edycja2: Dokonałem trochę reorganizacji i jeszcze bardziej ją skróciłem.
Edit3: Dodałem poprawki sugerowane przez BrainStone, aby usunąć 5 bajtów, dzięki :)
Edit4: Jedna nowa linia okazała się niepotrzebna, więc ją usunąłem.
Edycja5: Zmieniłem printf na puts.
Edycja6: Dodałem poprawkę zaproponowaną przez Raya Hamela.
źródło
#include<stdio.h>
z#include<cstdio>
. Niewiele, ale bajt jest bajtem. A dodatkowo usunięcieint
inframain
spowoduje bezpieczne 4 bajty.int
jest sugerowany przez C i C ++String[]s
.Jolf + Chaîne, 12 bajtów
Ponieważ Chaîne nie może zaakceptować pliku do przesłania z kodowaniem, zakładam UTF-8. (Gdybym mógł założyć ISO-8859-7, byłoby to 11 bajtów, ale byłoby to niesprawiedliwe).
W Chaîne
«
zaczyna się komentarz, a reszta jest drukowana dosłownie. W Jolfie«
zaczyna się struna. Na szczęścietrick
nie robi nic szkodliwego (w10; range(input, parseInt(input))
zasadzie) itreat
jest drukowany.Spróbuj Jolfa tutaj!
Wypróbuj Chaîne tutaj!
Oba działają w mojej przeglądarce (Firefox, najnowsza wersja), ale nie można tego powiedzieć o innych przeglądarkach.
źródło
tr
.tr
czy można by je ponownie wykorzystać w każdym golfie - jest to niewielka informacja, która wymaga co najmniej operatora do zakodowania w językach golfowych, a następnie warunek specyficzny dla danego języka. Prawdopodobnie wyrównałoby się to do tej samej długości lub dłużej. To jednak tylko moje przypuszczenie;)#hell / Agony , 43 bajty
Tyle
><>
wszędzie, co to jest prima aprilis? Oto odpowiedź w odpowiednich językach tematycznych.#hell
jest podzbiorem,LUA
który na szczęście przyjmujeio.write
wywołania wyjściowe. UżywamyLUA
„s--
komentarze tak, że wykonuje tylko ten fragment.Agony
jestBrainfuck
pochodną, która ma swój kod i pamięć roboczą na tej samej taśmie. Pierwszy wiersz wypisuje tylko 5 znaków (10 komórek) z końca segmentu kodu, gdzie kodowałemtreat
jakoAgony
polecenia.LUA
otwarcie komentarza--
modyfikuje wartość nieużywanej komórki.źródło
Cubix / Hexagony , 31 bajtów
Wypróbuj! Traktuj to online!
Halloweenowy temat ? Zwróć uwagę na przerażające fakty dotyczące tych języków i kodu:
=v=
uśmiechasz się do ciebie, co w kodzie nie działaZagłębmy się w tajemnicę ukrytego 31-bajtowego protokołu komunikacji wymiarów i terroru ...
sztuczka
Kiedy kod sam się składa lub rozwija ... To znaczy
cubified
, układ wygląda następująco:A główna część to ta część pośrodku:
Wpycha
k,c,i,r,t
się na stos io
wysyła i;
wyskakuje w pętli ograniczonej przez odbłyśniki,?
która prowadzi cię w zależności od wartości na górze stosu ...leczyć
Nagle kod zmienia się z sześcianu w sześciokąt. (Wyobraź sobie, że)
A główną częścią jest ta część:
Działa,
t;
który drukujet
i uderza w lustro i obraca się w kierunku NW, zaczynając od rogu SE i uderza w kolejne lustro. To biegnier;
i owija się,e;_a
a następnie]
przenosi go do Wskaźnika instrukcji 1, który zaczyna się w rogu NE, wskazując SE i trafienia,/
które do;
tego czasu odbijają się w poziomiet
.Następnie owija się
=
,;
i@
kończy się bałagan.Więc ... Co
_
tam robi?Dlaczego znajduje się w
t
e
a
(pierwsze 3 litery w kodzie)?Nadchodzi koniec historii -
nic nie robi .
Czy to brzmi jak koniec horroru?źródło
SQL / JavaScript, 54 bajty
Takie samo podejście jak w przypadku mojej odpowiedzi QB / JS : Pierwszy wiersz zawiera instrukcję SQL, drugi wiersz zawiera „komentarz” dla SQL i NOP dla JS. Następnie definiujemy instrukcję SQL
select
jako prawidłową funkcję JS.źródło
/Brainf..k/, 143 + 3 = 146 bajtów
Ta odpowiedź wymaga, aby
-A
flaga wyświetlała się w ASCII dla Brain-Flak i na szczęście Brainfuck nie dba o tę flagę, więc nie wpływa to na wynik w Brainfuck.Wypróbuj online!
Wypróbuj online!
Jak to działa
Jedyne nakładanie się składni Brain-Flak i Brainfuck to postacie
<>[]
. W przypadku uderzenia mózgu oznacza to głównie, że program musi zapewnić parzystą liczbę przełączników stosu<>
. A dla Brainfuck oznacza to, że musimy unikać nieskończonych pętli spowodowanych użyciem[]
monady.Kod Brain-Flak wygląda następująco:
Poza
[<<...>>]
bitem w środku i<[<>]<>[<>]<>>
na końcu ten kod jest całkiem niezły jak na programy Brain-Flak. Ujemny punkt wokół zera ([<...>]
) służy do utworzenia pętli dla Brainfuck. Wewnętrzne<...>
służy do przeniesienia Brainfuck do pustej komórki, zanim napotka ona,[][][][]
która inaczej zapętliby się w nieskończoność.Kod Brainfuck wygląda następująco:
Oprócz wyżej wymienionych bitów jest to również dość standardowy program, więc oszczędzę ci szczegółów.
źródło
/brainf..k/
, więc powinieneś używać tego samego formatu nagłówka, co wszyscy inni.For brain-flak this mostly means the program has to ensure an even number of stack switches
Jesteś pewien? To nie powinno mieć znaczenia, ponieważ<>
NOP jest w> <> / Fishing , 38 bajtów
Ze względu na wykonanie
><>
/Fishing
polyglot.To mój pierwszy fragment
Fishing
kodu po długiej grze><>
.Moje pierwsze wrażenie: jak w naturze rybak ma mniej zdolności fizycznych niż się modli, ale rekompensuje to swoim narzędziem!
Tutaj kod jest niezwykle prosty:
><>
wykona tylko pierwszą linię, w której_
znajduje się pionowe lustro i nie ma żadnego efektu, ponieważ ryba zaczyna pływać poziomo. Po prostu naciskatrick
na stos, a następnie drukuje go, zanim się zatrzyma.Dla
Fishing
, gdy_
nakazuje zejść. Rybak podąży za pokładem, który jest drugą linią, łapiąc postacie z trzeciej linii. Będą naciskaćtreat
na taśmę, a następnie drukować, zatrzymując się, gdy dojdzie do końca talii.Jeśli błąd jest dozwolony, możesz zejść do 35 bajtów za pomocą następującego kodu, który wygeneruje błąd podczas uruchamiania, gdy
><>
tylkotrick
wydrukuje się ze stosu:Powinieneś także sprawdzić moje odpowiedzi w językach tematycznych, #hell / Agony and evil / ZOMBIE !
źródło
05AB1E / Właściwie 10 bajtów
Wyjaśnienie
05AB1E
Wypróbuj online
Tak właściwie
Wypróbuj online
źródło
trick
, ale jak’®Â
leczyć? ..Haskell / Standard ML , 56 bajtów
Widok Haskell
Średniki pozwalają na wiele deklaracji w jednym wierszu i działają jak podziały wierszy, więc otrzymujemy
Program Haskell jest wykonywany przez wywołanie
main
funkcji, więc w ostatnim wierszuputStr"trick"
jest wykonywany, który właśnie drukujetrick
.Pierwsze dwa wiersze są interpretowane jako deklaracje funkcji zgodne ze wzorem
<functionName> <argumentName1> ... <argumentNameN> = <functionBody>
. Tak więc w pierwszym wierszufun
deklarowana jest funkcja o nazwie, która przyjmuje dwa argumenty o nazwieputStr
oraz treśćx
funkcjiprint"treat"
. Jest to poprawna funkcja Haskell z typemfun :: t -> t1 -> IO ()
, co oznacza, że wymaga argumentu dowolnego typu,t
a druga z jakiegoś typu,t1
a następnie zwraca akcję IO. Typyt
it1
nie mają znaczenia, ponieważ argumenty nie są używane w treści funkcji. Wynika typ działania IOprint"treat"
, który drukuje"treat"
do StdOut (zauważ"
, że właśnie dlategoputStr
zamiastprint
jest używany wmain
). Ponieważ jednak jest to tylko deklaracja funkcji, nic nie jest drukowane, ponieważfun
nie jest wywoływanemain
.To samo dzieje się w drugim wierszu
val main=();
,val
deklarowana jest funkcja, która pobiera dowolny argument o nazwiemain
i zwraca jednostkę , pustą krotkę()
. Jego typ toval :: t -> ()
(Zarówno wartość, jak i typ jednostki są oznaczone()
).Wypróbuj na Ideone.
Standardowy widok ML
Standardowy ML to przede wszystkim funkcjonalny język ze składnią związaną, ale nie taką samą jak Haskell. W szczególności deklaracje funkcji są poprzedzone słowem kluczowym,
fun
jeśli przyjmują jakiekolwiek argumenty, oraz słowem kluczowym,val
jeśli nie. Możliwe jest również wyrażenie na najwyższym poziomie (co oznacza, że nie jest ono w żadnej deklaracji), które jest wykonywane podczas uruchamiania programu. (W Haskell pisanie1+2
poza deklaracją wyrzucanaked expression at top level
błąd). Wreszcie symbol testowania równości jest=
zamiast==
w Haskell. (Jest o wiele więcej różnic, ale tylko te mają znaczenie dla tego programu.)SML widzi dwie deklaracje
po którym następuje wyrażenie
który jest następnie oceniany. Aby ustalić, czy
main
jest równyputStr"trick"
, obie strony muszą zostać ocenione i obie muszą mieć ten sam typ, ponieważ SML (podobnie jak Haskell) jest wpisywany statycznie. Spójrzmy najpierw na prawą stronę:putStr
nie jest funkcją biblioteczną w SML, ale zadeklarowaliśmy funkcję nazwanąputStr
w liniifun putStr x=print"treat";
- pobiera argumentx
("trick"
w naszym przypadku jest to ciąg znaków ) i natychmiast go zapomina, ponieważ nie występuje w ciele funkcji. Następnieprint"treat"
wykonywane jest ciało, które drukujetreat
(bez załączania"
, SMLprint
różni się od Haskellaprint
).print
ma typstring -> unit
, więcputStr
ma typa -> unit
i dlategoputStr"trick"
ma właśnie typunit
. Aby być dobrze wpisanym,main
musisz mieć także typunit
. Wartość jednostki jest w SML taka sama jak w Haskell()
, więc deklarujemyval main=();
i wszystko jest dobrze wpisane.Wypróbuj na polu kodowania.
Uwaga: Dane wyjściowe w konsoli to
ponieważ w SML \ NJ wartość i typ każdej instrukcji jest wyświetlana po każdej deklaracji. Więc po pierwsze typy
putStr
imain
są pokazane, a następnie wyrażenia zostanie oceniona powodująctreat
mają zostać wydrukowane, a następnie wartość wyrażenia (true
jak obie strony=
są()
) jest związany z niejawnego zmiennej wynikowejit
, która jest następnie wyświetlane.źródło
fun ... ... =
to cukier syntaktycznyval rec ... = fn ... =>
. Ale znowu minęły dekady, odkąd użyłem ML.fun
to cukier syntaktyczny dla funkcji anonimowej związany zval
(rec
jest potrzebny tylko, jeśli funkcja jest rekurencyjna), dlatego też sformułowanie „musi być poprzedzone” jest źle wybrane, zmienię odpowiedź. Ogólnie rzecz biorąc,fun
najlepszą praktyką jest używanie , zwłaszcza w golfie kodowym, ponieważ jest znacznie krótsza.Ruby / C,
64625148 bajtówCo widzi Ruby:
tap
Sposobie, blok i przeprowadza się raz. Jest to krótki identyfikator, dla którego możemy utworzyć#define
makro w C. Pozwala również umieścić blok ujęty w nawiasy klamrowe we wspólnym kodzie, nawet jeśli Ruby nie zezwala na{}
s w większości kontekstów.Jedynymi wartościami fałszowania w Ruby są
false
inil
. W szczególności 0 jest zgodne z prawdą. Ruby wypisze więc „trick”.Co widzi C (za preprocesorem):
0 jest fałszem w C, więc C wypisze „traktuj”.
2 bajty zapisane dzięki Daniero.
źródło
puts
zamiastprintf
zapisać dwa bajtyprintf
w C, zapomniałem, że ma równieżputs
funkcję.tap
? A dlaczego nie pozbyłeś się przestrzeni?p ? "trick":"treat"
=>p?"trick":"treat"
tap
faktycznie służy dwóm celom. Jest to krótki identyfikator#define
do zatrzaśnięcia, ale pozwala mi również umieścić nawiasy klamrowe bezpośrednio w kodzie Ruby.{}
bloki w Ruby nie działają tak jak robią w językach C i podobnych, aletap
robi się wybić i wykonuje to raz.p
.?<character>
jest dosłowny znak, więc po?
.QBasic / JavaScript,
5144 bajtówW QBasic drukuje drugą linię i nie wykonuje pierwszej linii, ponieważ uważa się ją za komentarz (dziękuję '). W JS wywołuje funkcję PRINT, która jest zdefiniowana w pierwszym wierszu, zaraz po JS NOP
'';
.źródło
ShapeScript / Foo , 13 bajtów
Wypróbuj online! trick | leczyć
Jak to działa
ShapeScript jest analizowany znak po znaku. Kiedy EOF zostanie trafiony bez napotkania cytatu zamykającego, na stosie nigdy nie jest umieszczane nic.
'trick'
wypycha ciąg znaków w cudzysłowie, który jest domyślnie wypisywany na STDOUT.Foo nie ma żadnych poleceń przypisanych do znaków
'trick'
, więc ta część jest po cichu ignorowana. Jednak drukuje wszystko między podwójnymi cudzysłowami natychmiast do STDOUT, nawet jeśli brakuje cudzysłowu zamykającego.źródło
Ruby / Perl, 21 bajtów
Perl
Oblicza
"trick" % 1
, które jest0 % 1
więc||
wysyłatreat
sięprint
zamiast, ponieważ Perl akceptuje gołe słowa.Rubin
Formatuje ciąg
"trick"
z argumentem1
, co powoduje, że"trick"
jest on zgodny z prawdą, więc||
nie jest przetwarzany.źródło
MATL / CJam , 17 bajtów
W Mátl tego wyjścia
TRICK
. W CJam jest to wyjścieTREAT
.Wyjaśnienie
MATL
CJam
źródło
Galaretka / pl , 12 bajtów
Jest to program wyświetlany przy użyciu strony kodowej Jelly .
Wypróbuj online!
Jest to program wyświetlany przy użyciu strony kodowej 437 .
Wypróbuj online!
Oba programy zostały przetestowane lokalnie przy użyciu tego samego 12-bajtowego pliku, więc jest to właściwy poliglota.
Jak to działa
W Galaretce każda linia definiuje link (funkcję); ostatni wiersz definiuje główny link , który jest wykonywany automatycznie po uruchomieniu programu. O ile kod przed ostatnim
7f
bajtem (wysuw wiersza na stronie kodowej Jelly) nie zawiera błędu analizatora składni (który natychmiast przerwałby wykonanie), są one po prostu ignorowane. Ostatni wiersz“¡ṾI»
po prostu indeksuje do słownika Jelly, aby pobrać słowo trick , które jest drukowane niejawnie na końcu programu.Nie wiem dużo o pl, ale wygląda na to, że interpreter pobiera tylko jeden wiersz kodu i ignoruje wszystko, co następuje po nim. Podobnie jak w Perlu, słowa kluczowe są traktowane jak ciągi, więc
treat
wypisuje dokładnie to.źródło
Objective-C / C, 50 bajtów
Cel-C dostał cukierki i druki , ale C nie zrobił, a druki podstępne .
Jak to działa
Nie wiem dużo o Objective-C , ale robi to, czego można się spodziewać w tej sytuacji. Ponowna definicja parametru
puts
nie wpływa na wynik, ponieważ nigdy nie wywołujemy tej funkcji, imain
wypisuje traktowanie i podawanie linii do STDOUT.Można się spodziewać, że C zrobi to samo, ale przynajmniej gcc 4.8, gcc 5.3 i clang 3.7 nie.
Ponieważ nie potrzebujemy prawdziwego printf (który przyjmuje ciąg formatujący i dodatkowe argumenty), a ciąg, który ma zostać wydrukowany, kończy się wysuwem wiersza, zamiast tego możemy użyć opcji put . puts jest nieco szybszy niż printf (który musi przeanalizować swoje argumenty przed wydrukowaniem), więc jeśli nie zdefiniujemy również ponownie funkcji printf , kompilator zoptymalizuje i zastąpi wywołanie printf wywołaniem put . Kompilator niewiele wie, że wywołanie
puts
z argumentem"treat"
spowoduje wydrukowanie podstępu !Nie uwzględnienie pliku stdio.h jest tutaj kluczowe, ponieważ definiowanie putów wymagałoby użycia tego samego typu, jaki ma w pliku nagłówkowym (
puts(const char*)
).Na koniec warto zauważyć, że wywołanie printf w puts przekazuje ciąg bez ciągłego podawania linii. W przeciwnym razie kompilator „zoptymalizuje” również to wywołanie, co spowoduje błąd segmentacji.
źródło
Partia / sh, 30 bajtów
Wyjaśnienie. Batch widzi pierwszy wiersz jako etykietę, którą ignoruje, i wykonuje drugi wiersz, w którym wypisuje Trick. @ Tłumi domyślne echo polecenia Batch dla standardowego wyjścia. (Etykiety nigdy nie są powtarzane.) W międzyczasie widzi następujące informacje:
Pierwszy wiersz nic nie robi (jest to alias
true
), drugi wiersz wypisuje Treat, a trzeci wiersz wychodzi ze skryptu, więc sztuczka @echo nigdy nie zostanie osiągnięta.źródło
sed / Hexagony 32 bajty
sed
Wypróbuj online!
Drukuje się pierwsza linia
trick
jeśli na końcu wejścia jest pusty ciąg. (sed nie robi nic, jeśli nie ma danych wejściowych, ale w tym przypadku dozwolona jest pusta linia na stdin)Przykładowy przebieg:
Sześciokąt
Wypróbuj online!
Pierwszy
/
przekierowuje wskaźnik instrukcji w górę i w lewo, więc otacza lewą dolną część, pomijając tekst użyty dla sed. Ponownie wykorzystuje r z kodu sed i uruchamia kilka innych bezskutecznie. Rozwinięty hex wygląda następująco:Wynik:
źródło
A
, chociaż można to uczynić mniej brzydkim, zmieniając wszystkie litery na wielkie): hexagony.tryitonline.net/…C # / Java
Prawdopodobnie nie kwalifikuje się, ponieważ nie działa samodzielnie, ale wyzwanie przypomniało mi dziwactwo, w jaki sposób C # i Java różnie radzą sobie z porównywaniem ciągów znaków, z którymi można się dobrze bawić przy zaciemnianiu kodu.
Poniższa funkcja jest poprawna w języku C # i Javie, ale zwróci inną wartość ...
źródło
Brain-Flak / Brain-Flueue,
265 253 219 165 139 115 113101 bajtówObejmuje +1 dla
-A
Dzięki Wizard Wheat Wizard za to, że chodziłem tam i z powrotem, grałem ze sobą w kilka bajtów kodu.
Brain-Flak: Wypróbuj online!
Brain-Flueue: Wypróbuj online!
Objaśnienie:
Pierwsza sekcja zawiera wartości, które widzi Brain-Flak.
Kiedy zmienia się w Brain-Flueue, zaczynam wyświetlać wartości, gdy Brain-Flueue je widzi.
źródło
PowerShell / Foo, 14 bajtów
Program
'trick'
PowerShell tworzy ciąg i pozostawia go w potoku.#
Rozpoczyna komentarz, więc program uzupełnia i niejawneWrite-Output
wydrukitrick
.W Foo, (Spróbuj Online!) ,
'trick'
Jest ignorowane, az#
przyczyn program do spania dla0
sekund (ponieważ nie ma nic na wskaźnik na tablicy), po czym"treat
rozpoczyna się ciąg. Po osiągnięciu EOF istnieje domniemanie,"
aby zamknąć ciąg, i to jest drukowane na standardowe wyjście.źródło
#
jest funkcją kopiowania i wymaga tylko nieujemnych złożonych lewych argumentów, a nie ciągów. Symbol komentarza toNB.
#
PHP / Perl, 28 bajtów
defined&x
daje coś prawdziwego w PHP (nie mam pojęcia dlaczego, ale tak jest).
W Perlu sprawdza, czy funkcja
x
jest zdefiniowana - co nie jest.->
trick
w PHP,treat
w Perlu.źródło
CLS
?`
jest prawdziwą wartością zdefiniowanego & x lub d & x nie pytaj mnie, którą otrzymujesz