Poliglota Cukierek albo psikus


160

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 trickalbo 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ć, tricka drugi powinien wypisać treat. Wielkość liter nie ma znaczenia i dozwolone jest uzupełnianie łańcucha znakami spacji (patrz przykłady).
  • To jest , 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 Njest 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


21
Ta meta odpowiedź stwierdza, że ​​prawie duplikaty mogą być tolerowane, jeśli jest ku temu dobry powód. Uważam, że popularność tego pytania z powodu zbliżania się do Halloween jest sama w sobie dobrym powodem, więc zagłosuję, aby ponownie otworzyć. Nie miałbym nic przeciwko zamknięciu go po Halloween (ale nie wiem, czy to też byłoby dobre).
Aaron

2
@ mbomb007. To jest duplikat czego ?
TRiG

3
zdecydowanie nie jest duplikatem. Jedyną rzeczą w tym samym jest to, że jest to także wyzwanie dla poliglotów o określonych wynikach.
Brian Minton

3
... 3 strony ... Naprawdę uważam, że jest to dużo aktywności w oparciu o aktualną wartość wariantu sezonowego.
wizzwizz4

2
Cóż za świetne pytanie! Uwielbiam to, jak niektóre odpowiedzi wyjaśniają i wykorzystują to, jak proste fragmenty kodu oznaczają różne rzeczy w różnych językach - np. Prawdziwość / fałsz i powiązanie operatora trójskładnikowego.
Don Hatch

Odpowiedzi:


145

2sable / pl , 8 bajtów

0000000: 74 72 65 61 74 93 d0 cb                          treat...

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 .

treat“ÐË

Wypróbuj online!

pl: Treat

To jest program na stronie kodowej 437 .

treatô╨╦

Wypróbuj online!

Jak to działa

2sable: trick

t         Square root. Errors since there is no input. The exception is caught, the
          stack left unaltered, and the interpreter pretends nothing happened.
 r        Reverse stack.
          Reversed empty stack is still empty stack. ;(
  e       Compute nCr. Errors since there is no input.
   a      Alphanumeric test. Errors since there is no input.
    t     Square root. Errors since there is no input.
     “    Begin a lowercase string literal.
      Ð     Excluding ‘, ’, “, and ”, Ð is the 71st non-ASCII character in CP1252.
       Ë    Excluding ‘, ’, “, and ”, Ë is the 66th non-ASCII character in CP1252.
          (implicit) End string literal.
          Both characters together fetch the dictionary word at index
          71 * 100 + 66 = 7166, which is 'trick'.

pl: Treat

treat     Bareword; push the string "treat" on the stack.
     ô    Unimplemented. Does nothing.
      ╨   Flatten the stack. This doesn't affect the output.
       ╦  Unimplemented. Does nothing.

15
Ale muszę przyznać, że ta odpowiedź jest absurdalna! Co dalej? Odpowiedź krótsza niż same słowa?
BrainStone

45
Ta odpowiedź jest niezwykle imponująca. To niesamowite, że udało ci się napisać program krótszy niż długość dwóch słów.
DJMcMayhem

1
Co? To są 2 programy
FireCubez,

1
@FireCubez To ten sam kod, bajt na bajt. Wizualna reprezentacja różni się jednak w zależności od strony kodowej.
Dennis

200

Pakiet Python / Windows, 25 bajtów

print"trick"#||echo.treat

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” :)


33
TBH Głosowałem za tym komentarzem na temat sali operacyjnej.
Jmons,

7
TBH Nigdy nie spodziewałem się, że mój pierwszy post dostanie 65 pozytywnych opinii :)
nephi12 27.10.16

11
TBH pozwala nie tylko mówić o pozytywnych opiniach. It's not Quora
S Andrew,

3
@SAndrew, jako zupełnie nowy członek tej społeczności, nie spodziewałem się opublikować postu, który tak szybko zostanie tak dobrze odebrany i cieszę się, że mogłem się do niego przyczynić. Nie próbuję się chwalić, proszę nie zrozum mnie źle. Jestem bardzo szczęśliwy, że mogę być tak dobrze przyjęty, ponieważ jestem nowy. dzięki za komentarz :)
nephi12,

2
Konsensus społeczności @YotamSalmon mówi, że STDERR jest domyślnie ignorowany; brane jest pod uwagę tylko STDOUT. Spróbuj ponownie wykonać polecenie za pomocą 2>nul.
Conor O'Brien

153

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

Stack (after op)    Code        Operation
4                            +  Push 4
4 4 4 4 4 4          + + + + +  Duplicate top of stack 5 times
4 4 4 4 16            *         Multiply top two items
4 4 4 4 16 16        +          Duplicate top of stack
4 4 4 16 4 16          +        Rotate top three items on stack right
4 4 4 16 20         *           Add top two items
4 4 20 4 16            +        Rotate...
4 4 20 64             *         Multiply...
4 64 4 20              +        Rotate...
4 64 80               *         Multiply...
4 64 80 2                  +    Push 2
4 64 80 2 2          +          Duplicate...
4 64 2 80 2            +        Rotate...
4 64 2 82           *           Add...
4 64 2 82 82         +          Duplicate...
4 64 82 2 82           +        Rotate...
4 64 82 84          *           Add...
4 64 82 84 84          +        Rotate...
4 64 82 84           .          Pop and print as character (T)
4 64 84 82            +         Swap top two items on stack
4 64 84              .          Pop and print... (R)
84 4 64                +        Rotate...
84 4 64 1                 +     Push 1
84 4 65             *           Add...
84 4 65 65           +          Duplicate...
84 65 4 65             +        Rotate...
84 65 69            *           Add...
84 65                .          Pop and print... (E)
84                   .          Pop and print... (A)
                     .          Pop and print... (T)

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, Ci Koraz im wydruki.

Kod z adnotacjami

<Space><Space><Space><Tab><Space><Tab><Space><Space><Tab><Space><LF> Push the ASCII value of R
<Space><Space><Space><Tab><Space><Tab><Space><Tab><Space><Space><LF> Push the ASCII value of T
<Tab><LF><Space><Space> Pop and print the T
<Tab><LF><Space><Space> Pop and print the R
<Space><Space><Space><Tab><Space><Space><Tab><Space><Space><Tab><LF> Push the ASCII value of I
<Tab><LF><Space><Space> Pop and print the I
<Space><Space><Space><Tab><Space><Space><Tab><Space><Tab><Tab><LF>   Push the ASCII value of K
<Space><Space><Space><Tab><Space><Space><Space><Space><Tab><Tab><LF> Push the ASCII value of C
<Tab><LF><Space><Space> Pop and print the C
<Tab><LF><Space><Space> Pop and print the K
<LF><LF><LF>            Terminate the program. The following line is not run.
<Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><Space><LF>

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.


11
takie piękne niebo
lois6b,

8
to zdecydowanie najlepsza odpowiedź, tak kreatywna. jestem zszokowany pomysłowością. i umiejętności. Brawo!
nephi12

137

Plik Linux ELF x86 / DOS .COM, 73 bajty

00000000  7f 45 4c 46 01 00 00 00  1a 00 00 00 1a 00 43 05  |.ELF..........C.|
00000010  02 00 03 00 1a 00 43 05  1a 00 43 05 04 00 00 00  |......C...C.....|
00000020  eb 0c b4 09 ba 41 01 cd  21 c3 20 00 01 00 b2 05  |.....A..!. .....|
00000030  b9 3b 00 43 05 cd 80 2c  04 cd 80 74 72 69 63 6b  |.;.C...,...trick|
00000040  00 74 72 65 61 74 24 eb  d9                       |.treat$..|
00000049

Źródło NASM:

ORG 0x05430000

BITS 32                                         ;
                                                ;   ELF HEADER    --   PROGRAM HEADER
; ELF HEADER                                    ; +-------------+
DB 0x7f,'E','L','F'                             ; | magic       |    +--------------------+
                                                ; |             |    |                    |
; PROGRAM HEADERS                               ; |             |    |                    |
DD 1                                            ; |*class 32b   | -- | type: PT_LOAD      |
                                                ; |*data none   |    |                    |
                                                ; |*version 0   |    |                    |
                                                ; |*ABI SysV    |    |                    |
DD 0x01a        ; offset = vaddr & (PAGE_SIZE-1); |*ABI vers    | -- | offset             |
                                                ; |             |    |                    |
entry:  DD 0x0543001a                           ; |*PADx7       | -- | vaddr = 0x0543001a |
DW 2                                            ; | ET_EXEC     | -- |*paddr LO           |
DW 3                                            ; | EM_386      | -- |*paddr HI           |
DD 0x0543001a                                   ; |*version     | -- | filesz             |
;       inc     ebx     ; STDOUT_FILENO         ; |             |    |                    |
;       mov     eax, 4  ; SYS_WRITE             ; |             |    |                    |
DD 0x0543001a                                   ; | entry point | -- | memsz              |
DD 4                                            ; | ph offset   | -- | flags: RX          |
                                                ; |             |    |                    |
        jmp     short skip                      ; |*sh offset   | -- |*align              |
BITS 16                                         ; |             |    |                    |
treat:  mov     ah, 9                           ; |             | -- |                    |
        mov     dx, trick + 0x100 + 6           ; |*flags ______|    |                    |
        int     0x21                            ; |______/      |    +--------------------+
        ret                                     ; |*ehsize      |
BITS 32                                         ; |             |
DW 32                                           ; | phentsize   |
DW 1                                            ; | phnum       |
skip:                                           ; |             |
        mov     dl, 5   ; strlen("trick")       ; |*shentsize   |
        mov     ecx, trick                      ; |*shnum       |
                                                ; |*shstrndx    |
                                                ; +-------------+
        int     0x80
        sub     al, 4   ; SYS_EXIT
        int     0x80


trick:  DB      "trick/treat$"

BITS 16
        jmp     short treat

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:

-u100 l2
07D2:0100 7F45          JG      0147
-u147 l2
07D2:0147 EBD9          JMP     0122
-u122 l8
07D2:0122 B409          MOV     AH,09
07D2:0124 BA4101        MOV     DX,0141
07D2:0127 CD21          INT     21
07D2:0129 C3            RET
-d141 l6
07D2:0140     74 72 65 61 74 24   -                           treat$

4
Brawo, proszę pana. Brawo.
Draconis

9
Moje serce przyspieszyło.
John Keates

muppetlabs.com/~breadbox/software/tiny/teensy.html to dobra lektura dla każdego, kto jest zainteresowany sztuczką nakładania nagłówków tutaj.
Sparr

4
To jedna z najlepszych odpowiedzi, jakie kiedykolwiek widziałem na tej stronie. Codegolf trochę zbyt często zamienia się w ezoteryczne języki stworzone specjalnie do gry w golfa, a nie sprytne odpowiedzi. To jest piękne.
Knetic

To świetne rzeczy.
Gooseman

103

evil / ZOMBIE , 109 bajtów

Kolejna upiorna odpowiedź!

xf is a vampire summon task f say "trick" stumble say "jzuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeaw" animate bind

ZOMBIEKod definiuje vampirenazwie xf, którego jedynym zadaniem fjest aktywowany w instanciation i wyjścia woli trickraz przed dezaktywować stumble. Drugie saywywołanie to martwy kod (jak odpowiedni!) ZOMBIE, Ale zawiera większość evilkodu.

Dla evilThe xfnazwa jest wezwaniem, aby przejść do następnego j, który poprzedza zuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeawjęk zombie że rzemiosło i wyjście treat. Poniższy kod jest albo wykonywany (małe litery), albo ignorowany, ale ponieważ nie ma wżadnych wyników, nie powinien być generowany.


1
@KevinCruijssen dzięki, podobała mi się ta okazja, aby dostać się do kilku mniej znanych języków ezoterycznych :)
Aaron

Cóż, z czterech, których użyłeś, kilka razy widziałem Agonię i niejasno pamiętam, że widziałem ZOMBIE raz. Jednak nigdy wcześniej nie słyszałem o HashHell ani złu. :)
Kevin Cruijssen

motyw Halloween jest imponujący! Nigdy nawet nie słyszałem o tych dwóch językach
ejfrancis

95

Python / Perl, 28 bajtów

print([]and"trick"or"treat")

Wyjaśnienie

Ponieważ []jest to ArrayRef w Perlu, jest prawdą, ale w Pythonie jest pustą tablicą, dlatego jest fałszywy.


7
Podobnie print({}and"trick"or"treat")w Python / Lua.
user200783

1
@ user200783 Miałoby to również ten sam efekt w Perlu, ponieważ {}jest to HashRef!
Dom Hastings

2
Jest również prawie identyczny dla Pythona / Ruby, ale wymaga dodatkowej spacji:print ([]and"trick"or"treat")
Wartość tuszu

2
Kocham to! To świetny komentarz na temat tego, co ukryta konwersja na bool robi dla czytelności.
Don Hatch

To może być poliglota w Lua, Perlu i Pythonie, gdyby tak było print({}and"trick"or"treat")!
ckjbgames

48

PHP / JavaScript, 32 30 bajtów

Wyświetla trickw PHP i treatJS.

NaN?die(trick):alert('treat');

Nieznana NaNstał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

(1?0:1?0:1)?die(trick):alert('treat');

Operator trójskładnikowy ma w JS asocjację:

                1 ? 0 : 1 ? 0 : 1
 is parsed as:  1 ? 0 : (1 ? 0 : 1)
 which equals:  0

I lewostronny w PHP:

                1 ? 0 : 1 ? 0 : 1
 is parsed as:  (1 ? 0 : 1) ? 0 : 1
 which equals:  1

1
Masz rację, mój zły
Gareth Parker

alert () to JavaScript w HTML, ale nie JavaScript z konsoli.
Peter Ferrie

1
Alternatywna metoda: '\ 0' == "\ 0"? Die (trick): alert ('Treat'); `.
Ismael Miguel

3
Debugowanie połączonych operatorów trójskładnikowych w PHP musi być świetną zabawą.
Robert Fraser

3
@Robert Debugowanie czegokolwiek w PHP jest świetną zabawą.
sampathsris,

39

HTML / HTML + JavaScript, 53 bajty

treat<script>document.body.innerHTML='trick'</script>

treatto treść tekstowa dokumentu w HTML.
Jeśli JS jest włączony, zastąpi on treść HTML trick.


3
Ciekawe rozwiązanie Podoba mi się
BrainStone

1
Zamiast tego powinieneś użyć document.write(). -8 bajtów
darrylyeo

@ Darrylyeo document.writenie zastąpi wyniku HTML, ale do niego dołączy .
Tytus

1
Testowane w Chrome. W pełni działa. Włączanie i wyłączanie javascript zmienia zawartość podczas odświeżania.
Tatarize 30.10.16

@Tatarize: Testowane w Firefox 49, Opera 41, Safari 5.0, Chrome 54, Edge 38 w systemie Windows, Firefox 5.3 i Safari 5.0 w systemie iOS, Firefox 49 i Dolphin 11.5 w systemie Android. Zastępuje tylko Firefox w systemie Windows; dołączają się wszystkie pozostałe.
Tytus

33

C / Java 7, 165 155 128 123 122 120 103 bajtów

//\
class a{public static void main(String[] s){System.out.print("treat"/*
main(){{puts("trick"/**/);}}

// \ 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.


1
Można bezpiecznie 1 bajt zmieniając C do C ++ i zastępowanie #include<stdio.h>z #include<cstdio>. Niewiele, ale bajt jest bajtem. A dodatkowo usunięcie int infra mainspowoduje bezpieczne 4 bajty. intjest sugerowany przez C i C ++
BrainStone

Dzięki, zmodyfikowałem kod zgodnie z twoimi sugestiami :)
I_LIKE_BREAD7 27.10.16

1
Miły! Ciężko mi było wymyślić coś dla Javy i sam skończyłem z Java 7 + Whitespace . Btw, możesz zagrać w golfa jeszcze jeden bajt, usuwając miejsce w String[]s.
Kevin Cruijssen

29

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).

trick«treat

W Chaîne «zaczyna się komentarz, a reszta jest drukowana dosłownie. W Jolfie «zaczyna się struna. Na szczęście tricknie robi nic szkodliwego (w 10; range(input, parseInt(input))zasadzie) i treatjest 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.


2
Przypuszczam, że bycie spisem wielu niejasnych języków ma swoje zalety ...
Conor O'Brien

1
Miło widzieć, że zbliżamy się do rozwiązań, które same czerpią z samych słów. Zastanawiam się, czy ktoś może ponownie użyć tr.
BrainStone

1
@BrainStone Osobiście wątpię, trczy 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;)
Conor O'Brien

Dowiedzmy Się. Ale muszę się zgodzić. Liczba bajtów wynosząca 10 lub mniej byłaby szalona!
BrainStone


27

#hell / Agony , 43 bajty

Tyle ><>wszędzie, co to jest prima aprilis? Oto odpowiedź w odpowiednich językach tematycznych.

--<.<.<.<.<.$
io.write("trick")--+<~}~@+{+<

#helljest podzbiorem, LUAktóry na szczęście przyjmuje io.writewywołania wyjściowe. Używamy LUA„s --komentarze tak, że wykonuje tylko ten fragment.

Agonyjest Brainfuckpochodną, ​​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łem treatjako Agonypolecenia. LUAotwarcie komentarza --modyfikuje wartość nieużywanej komórki.


Muszę powiedzieć, że twoje Halloweenowe motywy są najlepszym imho. Bardzo kreatywne!
BrainStone

@BrainStone Dzięki, dobrze się bawiłem, robiąc je!
Aaron,

27

Cubix / Hexagony , 31 bajtów

t;./e;_a]"kcirt">o?@;=v=./r;\;/

Wypróbuj! Traktuj to online!

Halloweenowy temat ? Zwróć uwagę na przerażające fakty dotyczące tych języków i kodu:

  1. Jeśli nawet nie robisz nic (po prostu nie robisz żadnych operacji ), nigdy nie możesz wyjść z pętli, która ma działać wiecznie ...
  2. I utknięcie w środku języka programowania 3D i 2D (o agonii ...)
  3. Wewnątrz wymiarów stopniowo zatracisz się gdzie jesteś ... gdzie byłeś ...
  4. I =v=uśmiechasz się do ciebie, co w kodzie nie działa

Zagłę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:

      t ; .
      / e ;
      _ a ]
" k c i r t " > o ? @ ;
= v = . / r ; \ ; / . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

A główna część to ta część pośrodku:

" k c i r t " > o ? @ .
. . . . . . . \ ; / . .

Wpycha k,c,i,r,tsię na stos i owysył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)

   t ; . /
  e ; _ a ] 
 " k c i r t 
" > o ? @ ; = 
 v = . / r ;
  \ ; / . .
   . . . .

A główną częścią jest ta część:

   t ; . /
  e ; _ a ] 
 . . . . . . 
. . . . @ ; = 
 . . . / r ;
  . . . . .
   . . . .

Działa, t;który drukuje ti uderza w lustro i obraca się w kierunku NW, zaczynając od rogu SE i uderza w kolejne lustro. To biegnie r;i owija się, e;_aa 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 poziomie t.

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?


Ładnie bardzo ładnie! Trudno jest stworzyć poliglota z dwóch języków 2D. Podoba mi się horror, który się z tym
wiąże

Nie jestem pewien, czy ta odpowiedź ELF / .COM jest bardziej imponująca. Dobra robota!
val

24

SQL / JavaScript, 54 bajty

select('trick')
--a;function select(){alert("treat")}

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 selectjako prawidłową funkcję JS.


3
To bardzo sprytny sposób na połączenie tych dwóch języków. Masz +1!
ETHproductions

22

/Brainf..k/, 143 + 3 = 146 bajtów

Ta odpowiedź wymaga, aby -Aflaga 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.


Podoba mi się ten: D
Conor O'Brien

9
Istnieje DUŻO więcej niż dwa języki, które pasują do wyrażenia regularnego /brainf..k/, więc powinieneś używać tego samego formatu nagłówka, co wszyscy inni.
mbomb007,

13
@ mbomb007 jedynym innym językiem, który pasuje do tego wyrażenia regularnego, jest mózg . Dogodnie, gdy biegam w mózgu, drukuje napis „TRICK”, więc na razie opuszczę regex.
Sriotchilism O'Zaic

For brain-flak this mostly means the program has to ensure an even number of stack switchesJesteś pewien? To nie powinno mieć znaczenia, ponieważ <>NOP jest w
pieprzeniu mózgu

@DJMcMayhem musi kończyć się na tym samym stosie, na którym kładziemy wszystko, inaczej nic nie wydrukuje.
Sriotchilism O'Zaic

21

> <> / Fishing , 38 bajtów

_"kcirt"ooooo;
[+vCCCCCCCC
   `treat`N

Ze względu na wykonanie ><>/ Fishingpolyglot.

To mój pierwszy fragment Fishingkodu 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 naciska trickna 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ć treatna 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 ><>tylko trickwydrukuje się ze stosu:

_"kcirt">o<
[+vCCCCCCCC
   `treat`N

Powinieneś także sprawdzić moje odpowiedzi w językach tematycznych, #hell / Agony and evil / ZOMBIE !


Aw, chciałem zrobić poliglota rybackiego / wędkarskiego :) Pokonałeś mnie do tego. Niezłe!
Emigna

+1 za „ jak w naturze rybak ma mniej zdolności fizycznych niż się modli, ale
rekompensuje

20

05AB1E / Właściwie 10 bajtów

"trick"’®Â

Wyjaśnienie

05AB1E

"trick"     # push the string "trick"
       ’®Â  # push the string "treat"
            # implicitly print top of stack (treat)

Wypróbuj online

Tak właściwie

"trick"     # push the string "trick"
       ’®Â  # not recognized commands (ignored)
            # implicit print (trick)

Wypróbuj online


Wiesz, mogę wyraźnie przeczytać trick, ale jak ’®Âleczyć? ..
Kevin Cruijssen

1
Teraz ludzie znają tę funkcję. Następnym razem otrzymamy pytania takie jak „ hQq3k lub bvM; p polyglot ” ...
jimmy23013,

3
@KevinCruijssen: „®” jest tłumaczone jako „weź słowo o indeksie 3757 ze słownika”, którym jest „Treat”.
Emigna

@Emigna Ok ... Więc wszystkie ~ 1,1 mln angielskich słów są dostępne w 05AB1E?
Kevin Cruijssen

1
@KevinCruijssen: Nie, w sumie jest ich 10 000 (każda reprezentowana jako 2 znaki). Całą listę można znaleźć tutaj .
Emigna

16

Haskell / Standard ML , 56 bajtów

fun putStr x=print"treat";val main=();main=putStr"trick"

Widok Haskell

Średniki pozwalają na wiele deklaracji w jednym wierszu i działają jak podziały wierszy, więc otrzymujemy

fun putStr x=print"treat"
val main=()
main=putStr"trick"

Program Haskell jest wykonywany przez wywołanie mainfunkcji, więc w ostatnim wierszu putStr"trick"jest wykonywany, który właśnie drukuje trick.
Pierwsze dwa wiersze są interpretowane jako deklaracje funkcji zgodne ze wzorem <functionName> <argumentName1> ... <argumentNameN> = <functionBody>. Tak więc w pierwszym wierszu fundeklarowana jest funkcja o nazwie, która przyjmuje dwa argumenty o nazwie putStroraz treść xfunkcji print"treat". Jest to poprawna funkcja Haskell z typem fun :: t -> t1 -> IO (), co oznacza, że ​​wymaga argumentu dowolnego typu, ta druga z jakiegoś typu, t1a następnie zwraca akcję IO. Typy ti t1nie mają znaczenia, ponieważ argumenty nie są używane w treści funkcji. Wynika typ działania IO print"treat", który drukuje "treat"do StdOut (zauważ ", że właśnie dlategoputStrzamiast printjest używany w main). Ponieważ jednak jest to tylko deklaracja funkcji, nic nie jest drukowane, ponieważ funnie jest wywoływane main.
To samo dzieje się w drugim wierszu val main=();, valdeklarowana jest funkcja, która pobiera dowolny argument o nazwie maini zwraca jednostkę , pustą krotkę (). Jego typ to val :: 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, funjeśli przyjmują jakiekolwiek argumenty, oraz słowem kluczowym, valjeś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 pisanie 1+2poza deklaracją wyrzuca naked expression at top levelbłą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

fun putStr x=print"treat";
val main=();

po którym następuje wyrażenie

main=putStr"trick"

który jest następnie oceniany. Aby ustalić, czy mainjest równy putStr"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ę: putStrnie jest funkcją biblioteczną w SML, ale zadeklarowaliśmy funkcję nazwaną putStrw linii fun putStr x=print"treat";- pobiera argument x( "trick"w naszym przypadku jest to ciąg znaków ) i natychmiast go zapomina, ponieważ nie występuje w ciele funkcji. Następnie print"treat"wykonywane jest ciało, które drukuje treat(bez załączania ", SML printróżni się od Haskella print).
printma typ string -> unit, więc putStrma typ a -> uniti dlatego putStr"trick"ma właśnie typunit. Aby być dobrze wpisanym, mainmusisz mieć także typ unit. Wartość jednostki jest w SML taka sama jak w Haskell (), więc deklarujemy val main=();i wszystko jest dobrze wpisane.

Wypróbuj na polu kodowania.
Uwaga: Dane wyjściowe w konsoli to

val putStr = fn : 'a -> unit                                   
val main = () : unit                                                    
treatval it = true : bool

ponieważ w SML \ NJ wartość i typ każdej instrukcji jest wyświetlana po każdej deklaracji. Więc po pierwsze typy putStri mainsą pokazane, a następnie wyrażenia zostanie oceniona powodując treatmają zostać wydrukowane, a następnie wartość wyrażenia ( truejak obie strony =()) jest związany z niejawnego zmiennej wynikowej it, która jest następnie wyświetlane.


1
Zawsze myślałem, że fun ... ... =to cukier syntaktyczny val rec ... = fn ... =>. Ale znowu minęły dekady, odkąd użyłem ML.
Neil

@Neil Masz rację, funto cukier syntaktyczny dla funkcji anonimowej związany z val( recjest potrzebny tylko, jeśli funkcja jest rekurencyjna), dlatego też sformułowanie „musi być poprzedzone” jest źle wybrane, zmienię odpowiedź. Ogólnie rzecz biorąc, funnajlepszą praktyką jest używanie , zwłaszcza w golfie kodowym, ponieważ jest znacznie krótsza.
Laikoni

15

Ruby / C, 64 62 51 48 bajtów

#define tap main()
tap{puts(0?"trick":"treat");}

Co widzi Ruby:

tap{puts(0?"trick":"treat");}

tapSposobie, blok i przeprowadza się raz. Jest to krótki identyfikator, dla którego możemy utworzyć #definemakro 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ą falsei nil. W szczególności 0 jest zgodne z prawdą. Ruby wypisze więc „trick”.

Co widzi C (za preprocesorem):

main(){puts(0?"trick":"treat");}

0 jest fałszem w C, więc C wypisze „traktuj”.

2 bajty zapisane dzięki Daniero.


1
Miły. Możesz użyć putszamiast printfzapisać dwa bajty
daniero

Dzięki! Jestem tak przyzwyczajony do tego, że zawsze używam printfw C, zapomniałem, że ma również putsfunkcję.
m-chrzan

Dwa pomysły: czy nie możesz użyć czegoś krótszego tap? A dlaczego nie pozbyłeś się przestrzeni? p ? "trick":"treat"=>p?"trick":"treat"
BrainStone

tapfaktycznie służy dwóm celom. Jest to krótki identyfikator #definedo 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, ale tap robi się wybić i wykonuje to raz.
m-chrzan

Nazwy metod w Ruby mogą kończyć się znakiem zapytania, więc po tym potrzebne jest miejsce p. ?<character>jest dosłowny znak, więc po ?.
m-chrzan

15

QBasic / JavaScript, 51 44 bajtów

'';PRINT=a=>{alert("Treat")}
PRINT("Trick")

W 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 '';.


1
Bardzo sprytne podejście!
BrainStone

14

ShapeScript / Foo , 13 bajtów

'trick'"treat

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.


14

Ruby / Perl, 21 bajtów

print"trick"%1||treat

Perl

Oblicza "trick" % 1, które jest 0 % 1więc ||wysyła treatsię printzamiast, ponieważ Perl akceptuje gołe słowa.

Rubin

Formatuje ciąg "trick"z argumentem 1, co powoduje, że "trick"jest on zgodny z prawdą, więc ||nie jest przetwarzany.


14

MATL / CJam , 17 bajtów

'TRICK'%];"TREAT"

W Mátl tego wyjścia TRICK . W CJam jest to wyjście TREAT .

Wyjaśnienie

MATL

'TRICK'         Push this string
%];"TREAT"      Comment: ignored
                Implicit display

CJam

'T              Push character 'T'
R               Push variable R, predefined to empty string
I               Push variable I, predefined to 18
C               Push variable C, predefined to 12
K               Push variable K, predefined to 20
'%              Push character '%'
]               Concatenate stack into an array
;               Discard
"TREAT"         Push this string
                Implicit display

Brakuje tam 3 znaków! (EAT)
Destructible Lemon

@DestructibleWatermelon Thanks! Edytowane
Luis Mendo

Teraz brakuje ci trzech w wyjaśnieniu MATL!
Zniszczalna cytryna

@DestructibleWatermelon Aww. Jeszcze raz dziękuję :-D
Luis Mendo

12

Galaretka / pl , 12 bajtów

0000000: 74 72 65 61 74 0a 7f fe 00 ba 49 fb                 treat.....I.

Jest to program wyświetlany przy użyciu strony kodowej Jelly .

treatµ
“¡ṾI»

Wypróbuj online!

Jest to program wyświetlany przy użyciu strony kodowej 437 .

treat
⌂■␀║I√

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 7fbajtem (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 treatwypisuje dokładnie to.


12

Objective-C / C, 50 bajtów

puts(){printf("trick");}main(){printf("treat\n");}

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 putsnie wpływa na wynik, ponieważ nigdy nie wywołujemy tej funkcji, i mainwypisuje 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 putsz 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.


10

Partia / sh, 30 bajtów

:;echo Treat;exit
@echo Trick

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:

:
echo Treat
exit
@echo Trick

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.


10

sed / Hexagony 32 bajty

/$/ctrick
#$@$a</;r;e;/t;....\t;

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:

$ echo | sed -f TrickOrTreat.sed
trick

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:

   / $ / c 
  t r i c k
 # $ @ $ a <
/ ; r ; e ; /
 t ; . . . . 
  \ t ; . .
   . . . .

Wynik:

treat

Widziałem posty w Heksagonii, które mają zdjęcia ścieżki wykonania, czy łatwo je wygenerować?
Riley,


1
Twój kod szesnastkowy wypisuje wiodący bajt zerowy. Nie jestem pewien, czy dla celów tego wyzwania liczy się to jako spacja.
Martin Ender

@MartinEnder Wygląda na to, że jest to dozwolone. Dzięki za zwrócenie na to uwagi, zawsze z jakiegoś powodu za nimi tęsknię ...
Riley

Udało mi się to naprawić, jednocześnie oszczędzając kilka bajtów (kosztem wydrukowania wielkich liter A, chociaż można to uczynić mniej brzydkim, zmieniając wszystkie litery na wielkie): hexagony.tryitonline.net/…
Martin Ender

10

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ść ...

public static String TrickOrTreat(){
    String m = "Oct";
    String d = "31";
    return m + d == "Oct31" ? "Trick" : "Treat";
}

Rzeczywiście ciekawe dziwactwo.
BrainStone

10

Brain-Flak / Brain-Flueue, 265 253 219 165 139 115 113 101 bajtów

Obejmuje +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.

# Brain-Flak
(
 (((()()()))             # Push 3 twice
  ([]                    # Use the height to evaluate to 2
   (
    (({}{}))             # Use both 3s to push 6 twice
    ({}                  # Use one of those 6s to evaluate to 6
     ([((({}()())))]     # Use the other 6 to push 8 three times and evaluate to -8
      ([](({}{}){}){}{}) # Use all three 8s to push 75
     )                   # The -8 makes this push 67
    )                    # The 6 makes this push 73
   [])                   # Use the height and the 6 to push 82
  )                      # Use the 2 to push 84

# Brain-flueue
 [])     # Use the height and 3 to push 84
[()()])  # Push 82
({}()()) # 67 is at the front of the queue, so use that to push 69
{}       # Pop one from the queue
({})     # 65 is next on the queue so move to the end
({}[][]) # 74 is next, so use that and the height to push 84
{}       # Pop that last value from TRICK


9

PowerShell / Foo, 14 bajtów

'trick'#"treat

Program 'trick'PowerShell tworzy ciąg i pozostawia go w potoku. #Rozpoczyna komentarz, więc program uzupełnia i niejawne Write-Outputwydrukitrick .

W Foo, (Spróbuj Online!) , 'trick'Jest ignorowane, az #przyczyn program do spania dla 0sekund (ponieważ nie ma nic na wskaźnik na tablicy), po czym "treatrozpoczyna się ciąg. Po osiągnięciu EOF istnieje domniemanie, "aby zamknąć ciąg, i to jest drukowane na standardowe wyjście.


Działa również w J / Foo.
Conor O'Brien

@ ConorO'Brien Czy wyjaśnienie jest takie samo? Nigdy nie korzystałem z J i nie znam go.
AdmBorkBork

Nie, to nie działa w J. #jest funkcją kopiowania i wymaga tylko nieujemnych złożonych lewych argumentów, a nie ciągów. Symbol komentarza toNB.
Adám,

@ Adám masz rację. Zapomniałem#
Conor O'Brien,

9

PHP / Perl, 28 bajtów

print defined&x?trick:treat;

defined&x
daje coś prawdziwego w PHP (nie mam pojęcia dlaczego, ale tak jest).
W Perlu sprawdza, czy funkcja xjest zdefiniowana - co nie jest.
-> trickw PHP, treatw Perlu.


@ jmathews Czy próbowałeś umieścić znak kontrolny Backspace w swojej wersji systemu Windows? Co CLS?
Tytus

`jest prawdziwą wartością zdefiniowanego & x lub d & x nie pytaj mnie, którą otrzymujesz
Jörg Hülsermann
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.