Menipu atau Mengobati poliglot


161

Karena Halloween akan datang, saya pikir saya akan memulai tantangan golf kode kecil yang menyenangkan!

Tantangannya cukup sederhana. Anda harus menulis sebuah program yang menghasilkan trickatau treat.
"Memelintir?" Anda mungkin bertanya. Baiklah saya jelaskan:

Program Anda harus melakukan hal berikut:

  • Dapat dikompilasi / runnable dalam dua bahasa yang berbeda. Versi berbeda dari bahasa yang sama tidak masuk hitungan.
  • Ketika Anda menjalankan program dalam satu bahasa itu harus keluar trickdan yang lain harus keluar treat. Kasing tidak relevan dan melapisi string dengan karakter spasi putih diizinkan (lihat contoh).
  • Ini adalah , jadi solusi dengan byte paling sedikit menang.

Beberapa penjelasan:

Output yang valid (Hanya untuk kata-kata tidak untuk menjalankan kode dalam dua bahasa. Juga menambahkan tanda kutip untuk menandakan awal atau akhir dari output. Jangan memasukkannya dalam solusi Anda!):

"trick"

"Treat"

"    TReAt"

"
     tRICk          "

Output tidak valid :

"tri ck"

"tr
eat"

"trck"

Saya tertarik untuk melihat apa yang dapat Anda temukan! Selamat Golf!

Saya ingin mencatat bahwa ini adalah tantangan pertama saya jadi jika Anda memiliki saran tentang pertanyaan ini, silakan tinggalkan mereka dalam bentuk komentar.

Papan peringkat

Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.

Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:

# Language Name, N bytes

di mana Nukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:

# Perl, 43 + 2 (-p flag) = 45 bytes

Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


21
Jawaban meta ini menyatakan bahwa duplikat dekat dapat ditoleransi jika ada alasan yang bagus. Saya percaya bahwa popularitas pertanyaan ini diterima dari menjadi dekat dengan Halloween adalah alasan yang baik, jadi saya akan memilih untuk membuka kembali. Saya tidak keberatan menutupnya setelah Halloween (tapi saya juga tidak tahu apakah ini akan menjadi hal yang baik).
Aaron

2
@ mbomb007. Ini duplikat dari apa ?
TRiG

3
jelas bukan duplikat. Satu-satunya hal yang sama tentang yang lain adalah bahwa itu juga merupakan tantangan polyglot dengan output yang ditentukan.
Brian Minton

3
... 3 halaman ... Saya benar-benar berpikir bahwa ini mendapatkan banyak aktivitas berdasarkan nilai varian musiman saat ini.
wizzwizz4

2
Pertanyaan yang sangat bagus! Saya suka bagaimana beberapa jawaban menerangi dan mengeksploitasi bagaimana fragmen kode sederhana memiliki arti yang berbeda dalam bahasa yang berbeda - misalnya kebenaran / kepalsuan dan asosiasi dari operator ternary.
Don Hatch

Jawaban:


146

2sable / pl , 8 byte

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

Kedua program telah diuji secara lokal dengan file 8 byte yang sama, jadi ini adalah polyglot yang tepat.

2sable: trik

Ini adalah program dalam kode halaman 1252 .

treat“ÐË

Cobalah online!

pl: obati

Ini adalah program dalam kode halaman 437 .

treatô╨╦

Cobalah online!

Bagaimana itu bekerja

2sable: trik

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: obati

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
Tetapi saya harus mengakui bahwa jawaban ini benar-benar konyol! Apa berikutnya? Jawaban yang lebih pendek dari kata-kata itu sendiri?
BrainStone

45
Jawaban ini sangat mengesankan. Sungguh menakjubkan bahwa Anda berhasil menulis sebuah program lebih pendek dari panjang dua kata.
DJMcMayhem

1
Hah? Itu adalah 2 program
FireCubez

1
@FireCubez Ini kode yang sama, byte per byte. Representasi visual bervariasi dengan codepage.
Dennis

201

Python / Windows Batch, 25 byte

print"trick"#||echo.treat

Semuanya setelah # ditafsirkan sebagai komentar oleh python, sedangkan || adalah OR dalam batch, mengatakan bahwa ketika perintah sebelumnya gagal, jalankan yang ini.

Saya juga suka menggunakan ATAU karena hampir bertuliskan "trick or treat" :)


33
TBH Saya memilih ini hanya untuk komentar tentang OR.
Jmons

7
TBH Saya tidak pernah berharap posting pertama saya di sini untuk mendapatkan 65 upvotes :)
nephi12

11
TBH jangan hanya berbicara tentang upvotes. Ini bukan Quora
S Andrew

3
@Andrew sebagai anggota baru komunitas ini, saya tidak berharap untuk membuat posting yang akan secepat ini diterima, dan saya senang bisa berkontribusi. Saya tidak mencoba untuk menyombongkan diri, tolong jangan salah paham. Saya sangat senang bisa diterima dengan baik karena saya sangat baru. terima kasih atas komentar Anda :)
nephi12

2
Konsensus komunitas @YotamSalmon mengatakan bahwa STDERR diabaikan secara default; hanya STDOUT yang dipertimbangkan. Coba perintah lagi dengan 2>nul.
Conor O'Brien

154

Spasi / Starry, 135 byte

Ini langit malam yang cerah di Halloween!

  + + + + + 
    +

* + + * + *

   + *           
     + +        

 + * +   



 + * +. +. + + * + + *. . .

Perhatikan bahwa spasi putih pada baris kosong mungkin tidak dipertahankan jika Anda menyalin dari kode di atas

Output spasi putih "TRIK". Cobalah secara Online!
Output berbintang "TREAT". Cobalah secara Online!

Penjelasan

Penuh bintang

Starry mengabaikan semua tab dan baris baru sehingga kode yang dibacanya adalah sebagai berikut

         + + + + + +  * +   +*   +  *   +  *       + +   +* +   +* + .  + .   +      +* +   +* . . .

Namun, mendorong nilai sangat mahal dibandingkan dengan operasi stack dan aritmatika di Starry. Kode dimulai dengan mendorong dan menduplikasi 4 dan melakukan sejumlah operasi di atasnya dan dengan 2 dan 1 didorong kemudian menghasilkan semua nilai ASCII yang diperlukan.

Kode Beranotasi

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)

Ruang putih

Seperti namanya, Whitespace hanya mem-parsing tiga karakter spasi putih — spasi, tab, dan baris baru. Tidak seperti Starry, yang Whitespace hanya mendorong nilai-nilai ASCII dari T, R, I, C, dan Kdan cetakan mereka.

Kode Beranotasi

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

Jalinan push dan cetakan dipilih hanya berdasarkan alasan estetika karena tidak mempengaruhi jumlah byte.


12
langit begitu indah
lois6b

9
sejauh ini jawaban terbaik, sangat kreatif. Saya terkejut dengan kecerdikannya. dan keterampilannya. bravo!
nephi12

137

Linux ELF x86 / DOS .COM file, 73 byte

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

Sumber 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

Ini menggunakan fakta bahwa header ELF dimulai dengan 7F 45, yang, ditafsirkan sebagai kode x86, adalah lompatan.

Bagian yang relevan untuk 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
Bravo, tuan. Bravo.
Draconis

9
Jantungku berdegup kencang.
John Keates

muppetlabs.com/~breadbox/software/tiny/teensy.html adalah bacaan yang bagus untuk siapa saja yang tertarik dengan trik tumpang tindih tajuk di sini.
Sparr

4
Ini adalah salah satu jawaban terbaik yang pernah saya lihat di situs ini. Codegolf sedikit terlalu sering berubah menjadi bahasa esoteris yang dibuat khusus untuk bermain golf, daripada jawaban yang cerdas. Ini indah.
Knetic

Ini barang bagus.
Gooseman

104

evil / ZOMBIE , 109 byte

Jawaban seram lainnya!

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

The ZOMBIEkode mendefinisikan vampirebernama xfyang tugasnya hanya fdiaktifkan di instanciation dan akan menampilkan tricksekali sebelum dinonaktifkan oleh stumble. sayPanggilan lain adalah kode mati (bagaimana sesuai!) Untuk ZOMBIE, tetapi berisi sebagian besar evilkode

Sebab evil, xfnamanya adalah panggilan untuk melompat ke yang berikutnya j, yang mendahului zuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeawerangan zombie yang kerajinan dan hasil treat. Kode berikut dijalankan (huruf kecil) atau diabaikan tetapi karena tidak wada output yang harus dihasilkan.


1
@KevinCruijssen terima kasih, saya menikmati kesempatan ini untuk masuk ke beberapa bahasa esoterik yang kurang dikenal :)
Aaron

Nah, dari empat yang Anda gunakan saya telah melihat Penderitaan beberapa kali sebelumnya, dan saya samar-samar ingat pernah melihat ZOMBIE sekali. Namun, belum pernah mendengar tentang HashHell atau kejahatan. :)
Kevin Cruijssen

tema Halloween ini sangat mengesankan! Saya bahkan belum pernah mendengar kedua bahasa itu
ejfrancis

95

Python / Perl, 28 byte

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

Penjelasan

Karena []ArrayRef di Perl, itu benar, tetapi array kosong di Python, oleh karena itu palsu.


7
Demikian pula print({}and"trick"or"treat")dalam Python / Lua.
user200783

1
@ user200783 Itu akan memiliki efek yang sama di Perl juga, karena {}merupakan HashRef!
Dom Hastings

2
Juga hampir identik untuk Python / Ruby, tetapi membutuhkan ruang kosong tambahan:print ([]and"trick"or"treat")
Nilai Tinta

2
Suka! Ini adalah komentar yang bagus tentang apa konversi implisit ke bool untuk keterbacaan.
Don Hatch

Ini bisa menjadi polyglot dalam Lua, Perl, dan Python jika itu print({}and"trick"or"treat")!
ckjbgames

48

PHP / JavaScript, 32 30 byte

Menampilkan trickdalam PHP dan treatJS.

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

NaNKonstanta yang tidak diketahui secara implisit dikonversi ke string oleh PHP, menjadikannya benar. Itu salah di JS.

Metode alternatif, 38 byte

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

Operator ternary adalah asosiasi kanan dalam JS:

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

Dan asosiatif kiri dalam PHP:

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

1
Anda benar, salah saya
Gareth Parker

alert () adalah JavaScript dalam HTML, bukan JavaScript dari konsol.
peter ferrie

1
Metode alternatif: '\ 0' == "\ 0"? Die (trick): alert ('treat'); `.
Ismael Miguel

3
Debugging operator ternary dirantai di PHP pasti sangat menyenangkan.
Robert Fraser

3
@Robert Debugging apa pun dalam PHP sangat menyenangkan.
sampathsris

39

HTML / HTML + JavaScript, 53 byte

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

treatadalah konten teks dokumen dalam HTML.
Jika JS diaktifkan, itu akan menggantikan konten HTML dengan trick.


3
Solusi menarik. Saya menyukainya
BrainStone

1
Anda harus menggunakannya document.write()sebagai gantinya. -8 byte
darrylyeo

@dryrylyeo document.writetidak akan mengganti output HTML tetapi menambahkannya.
Titus

1
Diuji di Chrome. Sepenuhnya bekerja. Mengaktifkan dan menonaktifkan javascript mengubah konten saat refresh.
Tatarize

@Tatarize: Diuji di Firefox 49, Opera 41, Safari 5.0, Chrome 54, Edge 38 pada Windows, Firefox 5.3 dan Safari 5.0 di iOS, Firefox 49 dan Dolphin 11.5 di Android. Hanya Firefox di Windows yang menggantikan; semua yang lain tambahkan.
Titus

33

C / Java 7, 165 155 128 123 122 120 103 byte

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

// \ membuat baris berikutnya juga komentar dalam C tetapi merupakan komentar satu baris reguler di Jawa, sehingga Anda dapat membuat kode abaikan dimaksudkan untuk Java dan dengan menambahkan / * di baris kedua Anda dapat membuat komentar untuk Java yang diuraikan sebagai kode oleh C.

Sunting: Saya sedikit meningkatkannya dengan mengatur ulang baris dan komentar.

Sunting2: Saya melakukan lebih banyak reorganisasi dan mempersingkat bahkan lebih.

Sunting3: Saya menambahkan koreksi yang disarankan oleh BrainStone untuk menghapus 5 byte, terima kasih :)

Sunting4: Satu baris baru ternyata tidak perlu jadi saya menghapusnya.

Sunting5: Saya mengubah printf untuk dimasukkan.

Sunting6: Saya menambahkan koreksi yang disarankan oleh Ray Hamel.


1
Anda dapat mengamankan 1 byte dengan mengubah C ke C ++ dan menggantinya #include<stdio.h>dengan #include<cstdio>. Tidak banyak tetapi satu byte adalah satu byte. Dan juga menghapus int infront of mainsafe 4 byte. inttersirat oleh C dan C ++
BrainStone

Terima kasih, saya mengubah kode sesuai dengan saran Anda :)
I_LIKE_BREAD7

1
Bagus! Saya mengalami kesulitan membuat sesuatu untuk Java, dan berakhir dengan Java 7 + Whitespace sendiri . Btw, Anda dapat golf satu byte lagi dengan menghapus spasi pada String[]s.
Kevin Cruijssen

29

Jolf + Chaîne, 12 byte

Karena Chaîne tidak dapat menerima file untuk diunggah dengan penyandian, saya menganggap UTF-8. (Jika saya bisa berasumsi ISO-8859-7, ini akan menjadi 11 byte, tetapi itu tidak adil.)

trick«treat

Dalam Chaîne, «mulai komentar, dan sisanya dicetak kata demi kata. Di Jolf, «mulai string. Untungnya, tricktidak ada yang berbahaya ( 10; range(input, parseInt(input))pada dasarnya), dan treatdicetak.

Coba Jolf di sini!

Coba Chaîne di sini!

Keduanya berfungsi di browser saya (firefox, versi terbaru), tetapi hal yang sama tidak dapat dikatakan untuk browser lain.


2
Saya kira menjadi inventaris dari banyak bahasa yang tidak jelas memiliki manfaatnya ...
Conor O'Brien

1
Senang melihat bahwa kita semakin dekat dengan soloutions cukup banyak hanya mengeluarkan dari kata-kata sendiri. Saya ingin tahu apakah ada yang bisa menggunakan kembali tr.
BrainStone

1
@BrainStone Saya pribadi meragukan bahwa ini trdapat digunakan kembali dalam golf apa pun - ini adalah sepotong kecil informasi yang akan membutuhkan setidaknya seorang operator untuk menyandikannya dalam bahasa golf, kemudian kondisional khusus bahasa. Bahkan mungkin panjangnya sama, atau lebih lama. Namun, itu hanya dugaan saya;)
Conor O'Brien

Ayo cari tahu. Tapi saya harus setuju. Jumlah byte 10 atau kurang akan menjadi gila!
BrainStone


27

#hell / Penderitaan , 43 byte

Di ><>mana-mana, apa ini, tantangan April Mop? Inilah jawaban dengan bahasa bertema yang tepat.

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

#helladalah subset LUAyang untungnya menerima io.writepanggilan output. Kami menggunakan LUA's --komentar sehingga hanya menjalankan fragmen ini.

Agonyadalah Brainfuckturunan, yang memiliki kekhususan untuk memiliki kode dan memori yang bekerja pada rekaman yang sama. Baris pertama hanya mencetak 5 karakter (10 sel) dari akhir segmen kode, di mana saya dikodekan treatsebagai Agonyperintah. LUAPembukaan komentar --memodifikasi nilai sel yang tidak digunakan.


Saya harus mengatakan yang bertema Halloween Anda adalah yang terbaik. Sangat kreatif!
BrainStone

@BrainStone Terima kasih, saya senang membuatnya!
Aaron

27

Cubix / Hexagony , 31 byte

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

Trick it out! Perlakukan online!

Halloween bertema ? Perhatikan fakta-fakta mengerikan tentang bahasa-bahasa ini dan kode:

  1. Jika dan bahkan jika Anda tidak melakukan apa-apa (cukup letakkan op-op), Anda tidak akan pernah bisa keluar dari lingkaran yang ditentukan untuk berjalan selamanya ...
  2. Dan terjebak di tengah-tengah 3D dan bahasa pemrograman 2D (Oh penderitaan ...)
  3. Di dalam dimensi, Anda secara bertahap akan kehilangan di mana Anda berada ... di mana Anda berada ...
  4. Dan ada =v=senyum pada Anda yang bertindak tanpa ops dalam kode

Mari kita menggali misteri protokol komunikasi 31-byte dimensi dan teror ...

menipu

Ketika kode dilipat atau dibuka sendiri ... Yaitu cubified, tata letak terlihat seperti ini:

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

Dan bagian utama adalah bagian ini di tengah:

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

Ini mendorong k,c,i,r,tke tumpukan dan ooutput dan ;muncul dalam satu lingkaran yang dibatasi oleh reflektor dan ?yang memandu Anda tergantung pada nilai di atas tumpukan ...

memperlakukan

Tiba-tiba, kode tersebut berubah dari kubus menjadi Hexagon. (Bayangkan itu)

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

Dan bagian utama adalah bagian ini:

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

Ini berjalan t;yang mencetak tdan mengenai cermin dan mengubah arahnya ke NW mulai dari sudut SE dan menyentuh cermin lain. Ini berjalan r;dan membungkus ke e;_adan ]membawanya ke Instruction Pointer 1 yang dimulai pada sudut NE menunjuk SE dan hits /yang mencerminkan secara horizontal ;saat itu t.

Kemudian membungkus untuk =, ;dan @berakhir kekacauan.

Jadi ... Apa yang sedang _dilakukan di sana?

Mengapa ada di dalam t e a(3 huruf pertama dalam kode)?

Inilah akhir cerita -

tidak melakukan apa - apa .

Apakah ini terdengar seperti akhir dari cerita horor?


Bagus, sangat bagus! Sulit membuat polyglot dari dua bahasa 2D. Saya suka kisah horor yang menyertainya;)
ETHproduksi

Tidak yakin apakah jawaban ini atau ELF / .COM lebih mengesankan. Kerja bagus!
val

24

SQL / Javascript, 54 byte

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

Pendekatan yang sama dengan jawaban QB / JS saya : Baris pertama memiliki pernyataan SQL, baris kedua memiliki 'komentar' untuk SQL dan NOP untuk JS. Kemudian, kita mendefinisikan selectpernyataan SQL sebagai fungsi JS yang valid.


3
Itu adalah cara yang sangat cerdas untuk menggabungkan kedua bahasa ini. Punya +1!
ETHproduk

22

/Brainf..k/, 143 + 3 = 146 byte

Jawaban ini membutuhkan -Aflag to output di ASCII untuk Brain-Flak dan untungnya Brainfuck tidak peduli dengan flag itu sehingga tidak mempengaruhi output di Brainfuck.

(((((()(()()()){})({}){}){}){})+++++++[<+++<(((()()()())((((({}){}){}){}){}()))[][][][]())>>-])<[<++++>-]<.--.---------.------.>++[<++++>-]<.>>

Cobalah secara Online!

Cobalah secara Online!

Bagaimana ini bekerja?

Satu-satunya tumpang tindih antara sintaks Brain-Flak dan Brainfuck adalah karakter <>[]. Untuk brain-flak ini sebagian besar berarti program harus memastikan jumlah switch stack yang merata <>. Dan untuk Brainfuck ini berarti kita harus menghindari loop tak terbatas yang disebabkan oleh penggunaan []monad.

Kode Brain-Flak adalah sebagai berikut:

(((((()(()()()){})({}){}){}){})[<<(((()()()())((((({}){}){}){}){}()))[][][][]())>>])<[<>]<>[<>]<>>

Selain dari [<<...>>]bit di tengah dan <[<>]<>[<>]<>>di akhir kode ini cukup setara untuk kursus sejauh program Brain-Flak pergi. Negatif di sekitar nol ( [<...>]) ada untuk membuat loop untuk Brainfuck. Bagian dalam <...>digunakan untuk memindahkan Brainfuck ke sel kosong sebelum bertemu [][][][]yang akan berulang tanpa batas.

Kode Brainfuck adalah sebagai berikut:

+++++++[<+++<[][][][]>>-]<[<++++>-]<.--.---------.------.>++[<++++>-]<.>>

Selain bit-bit yang disebutkan di atas, ini juga merupakan program yang cukup standar, jadi saya akan berikan Anda detailnya.


Saya suka yang ini: D
Conor O'Brien

9
Ada BANYAK lebih dari dua bahasa yang cocok dengan regex /brainf..k/, jadi Anda harus menggunakan format tajuk yang sama seperti orang lain.
mbomb007

13
@ mbomb007 satu-satunya bahasa lain yang bisa saya temukan yang cocok dengan regex ini adalah brainfork . Mudah ketika dijalankan di brainfork ini mencetak "TRIK" jadi saya akan meninggalkan regex untuk sementara waktu.
Sriotchilism O'Zaic

For brain-flak this mostly means the program has to ensure an even number of stack switchesApa kamu yakin akan hal itu? Seharusnya tidak masalah karena <>NOP ada di brainfuck
DJMcMayhem

@DJMcMayhem itu harus berakhir pada tumpukan yang sama kita meletakkan semuanya kalau tidak tidak akan mencetak apa pun.
Sriotchilism O'Zaic

21

> <> / Memancing , 38 byte

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

Demi membuat a ><>/ Fishingpolyglot.

Ini adalah potongan Fishingkode pertama saya setelah bermain untuk waktu yang lama ><>.
Kesan pertama saya: seperti di alam, nelayan memiliki kemampuan fisik kurang dari doanya, tetapi menebusnya dengan alatnya!

Di sini kodenya sangat sederhana: ><>hanya akan mengeksekusi baris pertama, di mana _ada cermin vertikal dan tidak berpengaruh karena ikan mulai berenang secara horizontal. Itu hanya mendorong tricktumpukan kemudian mencetaknya sebelum berhenti.
Sebab Fishing, _instruksinya turun. Nelayan akan mengikuti dek yang merupakan baris kedua sambil menangkap karakter dari baris ketiga. Ini akan mendorong treatpita kemudian mencetaknya, berhenti saat mencapai ujung geladak.

Jika kesalahan keluar diizinkan, Anda bisa turun ke 35 byte dengan kode berikut yang akan melempar kesalahan saat dijalankan ><>setelah trickdicetak dari tumpukan:

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

Anda juga harus memeriksa jawaban bahasa bertema saya, #hell / Agony and evil / ZOMBIE !


Ah, saya ingin membuat polyglot ikan / memancing :) Anda mengalahkan saya karenanya. Yang bagus!
Emigna

+1 untuk " seperti di alam, nelayan memiliki kemampuan fisik yang lebih sedikit daripada doanya tetapi
menebusnya

20

05AB1E / Sebenarnya , 10 byte

"trick"’®Â

Penjelasan

05AB1E

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

Cobalah online

Sebenarnya

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

Cobalah online


Anda tahu, saya dapat dengan jelas membaca trick, tetapi bagaimana caranya ’®Â? ..
Kevin Cruijssen

1
Sekarang orang sudah tahu fitur ini. Lain kali kita akan mendapatkan pertanyaan seperti " hQq3k atau bvM; p polyglot " ...
jimmy23013

3
@KevinCruijssen: '® diterjemahkan sebagai "ambil kata dengan indeks 3757 dari kamus", yaitu "treat".
Emigna

@Emigna Ok ... Jadi semua ~ 1,1M kata-kata bahasa Inggris dapat diakses di 05AB1E?
Kevin Cruijssen

1
@KevinCruijssen: Tidak, totalnya ada 10rb (masing-masing mewakili 2 karakter). Anda dapat menemukan seluruh daftar di sini .
Emigna

16

Haskell / ML Standar , 56 byte

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

Tampilan Haskell

Titik koma memungkinkan beberapa deklarasi dalam satu baris dan bertindak seperti linebreak, jadi kami dapatkan

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

Program Haskell dijalankan dengan memanggil mainfungsi, jadi di baris terakhir putStr"trick"dijalankan yang hanya mencetak trick.
Dua baris pertama ditafsirkan sebagai deklarasi fungsi mengikuti pola <functionName> <argumentName1> ... <argumentNameN> = <functionBody>. Jadi di baris pertama fungsi bernama fundideklarasikan yang mengambil dua argumen bernama putStrdan xdan fungsi tubuh print"treat". Ini adalah fungsi Haskell yang valid dengan tipe fun :: t -> t1 -> IO (), artinya dibutuhkan argumen tipe arbitrer tdan yang kedua dari beberapa tipe t1kemudian mengembalikan aksi-IO. Jenis tdan t1tidak masalah karena argumen tidak digunakan di badan fungsi. Jenis tindakan-IO berasal dari print"treat", yang mencetak "treat"ke StdOut (perhatikan ", itu sebabnyaputStrbukannya printdigunakan dalam main). Namun karena ini hanya deklarasi fungsi, tidak ada yang benar-benar dicetak karena funtidak dipanggil main.
Hal yang sama terjadi pada baris kedua val main=();, sebuah fungsi valdideklarasikan yang mengambil argumen arbitrer bernama maindan mengembalikan unit , tuple kosong (). Jenisnya adalah val :: t -> ()(Nilai dan tipe unit dilambangkan dengan ()).

Cobalah di Ideone.


Tampilan ML standar

Standar ML adalah bahasa fungsional utama dengan sintaksis yang terkait, tetapi tidak sama dengan Haskell. Secara khusus, deklarasi fungsi diawali dengan kata kunci funjika mereka mengambil argumen, dan kata kunci valjika tidak. Juga dimungkinkan untuk memiliki ekspresi di tingkat atas (artinya tidak ada di dalam deklarasi apa pun) yang dieksekusi ketika program dijalankan. (Dalam menulis Haskell di 1+2luar deklarasi melempar naked expression at top level-eror). Akhirnya simbol untuk menguji kesetaraan =bukan ==di Haskell. (Ada banyak perbedaan lagi, tetapi hanya itu yang penting untuk program ini.)
Jadi SML melihat dua deklarasi

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

diikuti oleh ekspresi

main=putStr"trick"

yang kemudian dievaluasi. Untuk menentukan apakah mainsama putStr"trick", kedua belah pihak harus dievaluasi dan keduanya harus memiliki tipe yang sama, seperti SML (dan juga Haskell) diketik secara statis. Pertama-tama mari kita lihat sisi kanan: putStrbukan fungsi perpustakaan di SML, tetapi kami mendeklarasikan fungsi yang disebutkan putStrdalam baris fun putStr x=print"treat";- ia membutuhkan argumen x(ini adalah string "trick"dalam kasus kami) dan segera melupakannya lagi, karena tidak terjadi pada fungsi tubuh. Kemudian tubuh print"treat"dieksekusi yang mencetak treat(tanpa melampirkan ", SML printberbeda dari Haskell print).
printmemiliki tipe string -> unit, demikian putStrjuga tipe a -> unitdan oleh karena itu putStr"trick"memiliki tipe sajaunit. Agar diketik dengan baik, mainharus memiliki tipe unitjuga. Nilai untuk unit di SML sama dengan di Haskell (), jadi kami mendeklarasikan val main=();dan semuanya diketik dengan baik.

Cobalah di codingground.
Catatan: Output di konsol adalah

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

karena dalam SML \ NJ nilai dan jenis setiap pernyataan ditampilkan setelah setiap deklarasi. Jadi pertama jenis putStrdan maindiperlihatkan, maka ekspresi akan dievaluasi menyebabkan treatyang akan dicetak, maka nilai ekspresi ( truekarena kedua belah pihak dari =yang ()) terikat untuk variabel hasil implisit ityang kemudian juga ditampilkan.


1
Saya selalu berpikir fun ... ... =itu adalah gula sintaksis val rec ... = fn ... =>. Tapi sekali lagi sudah puluhan tahun sejak saya menggunakan ML.
Neil

@Neil Kau benar, funadalah sintaksis gula untuk fungsi anonim terikat val( rechanya diperlukan jika fungsi bersifat rekursif) dan oleh karena itu perumusan "harus diawali" salah dipilih, saya akan mengedit jawabannya. Secara umum penggunaan funadalah praktik terbaik, terutama dalam kode golf karena jauh lebih pendek.
Laikoni

15

Ruby / C, 64 62 51 48 byte

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

Apa yang dilihat Ruby:

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

The tapMetode mengambil blok dan mengeksekusi sekali. Ini adalah pengidentifikasi pendek yang dapat kita buat #definemakro untuk dalam C. Ini juga memungkinkan kita untuk menempatkan blok kurung kurawal dalam kode bersama, meskipun Ruby tidak mengizinkan {}s dalam sebagian besar konteks.

Satu-satunya nilai palsu di Ruby adalah falsedan nil. Secara khusus, 0 benar. Dengan demikian, Ruby akan mencetak "trik."

Apa yang dilihat C (setelah pra-prosesor):

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

0 palsu di C, jadi C akan mencetak "treat."

2 byte disimpan berkat daniero.


1
Bagus. Anda dapat menggunakan putsalih-alih printfmenyimpan dua byte
daniero

Terima kasih! Saya sangat terbiasa menggunakan printfC, saya lupa bahwa ia juga memiliki putsfungsi.
m-chrzan

Dua ide: Tidak bisakah Anda menggunakan sesuatu yang lebih pendek tap? Dan mengapa Anda tidak menyingkirkan ruang? p ? "trick":"treat"=>p?"trick":"treat"
BrainStone

tapsebenarnya melayani dua tujuan. Ini adalah pengidentifikasi pendek untuk #definemengunci, tetapi juga memungkinkan saya untuk menempatkan kawat gigi langsung dalam kode Ruby. {}blok di Ruby tidak bekerja seperti yang mereka lakukan di C dan bahasa yang sama, tetapi tap tidak mengambil blok, dan mengeksekusi sekali.
m-chrzan

Nama metode di Ruby dapat diakhiri dengan tanda tanya, sehingga diperlukan spasi setelahnya p. ?<character>adalah karakter literal, jadi ruang diperlukan setelah ?.
m-chrzan

15

QBasic / JavaScript, 51 44 byte

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

Di QBasic, ia mencetak baris kedua dan tidak mengeksekusi baris pertama karena diyakini sebagai komentar (terima kasih '). Di JS, ia memanggil fungsi PRINT, yang didefinisikan pada baris pertama, tepat setelah JS NOP '';.


1
Pendekatan yang sangat cerdas!
BrainStone

14

ShapeScript / Foo , 13 byte

'trick'"treat

Cobalah online! trik | memperlakukan

Bagaimana itu bekerja

ShapeScript adalah parsing karakter demi karakter. Ketika EOF dipukul tanpa menemukan kutipan penutupan, tidak ada yang didorong di stack. 'trick'tidak mendorong string di dalam tanda kutip, yang dicetak ke STDOUT secara implisit.

Foo tidak memiliki perintah yang ditetapkan untuk karakter 'trick', sehingga bagian itu diabaikan secara diam-diam. Namun, ia mencetak apa pun di antara tanda kutip ganda segera ke STDOUT, bahkan jika kutipan penutupnya hilang.


14

Ruby / Perl, 21 byte

print"trick"%1||treat

Perl

Menghitung "trick" % 1yang 0 % 1jadi ||mengirimkan treatke printsebaliknya, karena Perl menerima barewords.

Rubi

Memformat string "trick"dengan argumen 1, yang menghasilkan "trick"kebenaran, sehingga ||tidak diproses.


14

MATL / CJam , 17 byte

'TRICK'%];"TREAT"

Dalam MATL output ini TRICK. Dalam CJam itu menghasilkan TREAT .

Penjelasan

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

Anda kehilangan 3 karakter di sana! (MAKAN)
Destructible Lemon

@DestructibleWatermelon Terima kasih! Diedit
Luis Mendo

Sekarang Anda kehilangan tiga dalam penjelasan MATL!
Destructible Lemon

@DestructibleWatermelon Aww. Terima kasih lagi :-D
Luis Mendo

12

Jelly / pl , 12 byte

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

Ini adalah program yang ditampilkan menggunakan halaman kode Jelly .

treatµ
“¡ṾI»

Cobalah online!

Ini adalah program yang ditampilkan menggunakan kode halaman 437 .

treat
⌂■␀║I√

Cobalah online!

Kedua program telah diuji secara lokal dengan file 12 byte yang sama, jadi ini adalah polyglot yang tepat.

Bagaimana itu bekerja

Di Jelly, setiap baris mendefinisikan tautan (fungsi); baris terakhir mendefinisikan tautan utama , yang dieksekusi secara otomatis ketika program dijalankan. Kecuali kode sebelum 7fbyte terakhir (linefeed di halaman kode Jelly) berisi kesalahan parser (yang akan segera membatalkan eksekusi), mereka hanya diabaikan. Baris terakhir, “¡ṾI»cukup indeks ke kamus Jelly untuk mengambil kata trik , yang dicetak secara implisit di akhir program.

Saya tidak tahu banyak tentang pl, tetapi nampaknya interpreter hanya mengambil satu baris kode dan mengabaikan semua yang datang setelahnya. Seperti di Perl, kata pengantar string diperlakukan sebagai string, jadi treatmencetak dengan tepat.


12

Objective-C / C, 50 byte

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

Objective-C mendapat permen dan hadiah cetakan , tetapi C tidak dan trik mencetak .

Bagaimana itu bekerja

Saya tidak tahu banyak tentang Objective-C , tetapi ia melakukan apa yang kami harapkan dalam situasi ini. Definisi ulang dari putstidak mempengaruhi output karena kita tidak pernah memanggil fungsi, dan maincetakan memperlakukan dan linefeed ke STDOUT.

Anda mungkin mengharapkan C untuk melakukan hal yang sama, tetapi setidaknya gcc 4.8, gcc 5.3, dan dentang 3.7 tidak.

Karena kita tidak perlu nyata printf (yang mengambil format string dan argumen tambahan) dan string yang akan dicetak berakhir dengan linefeed, kita dapat menggunakan puts gantinya. put sedikit lebih cepat dari printf (yang harus menganalisis argumennya sebelum dicetak), jadi kecuali kita mendefinisikan kembali fungsi printf juga, kompiler mengoptimalkan dan mengganti panggilan untuk printf dengan panggilan untuk menempatkan . Sedikit kompiler tahu bahwa memanggil putsdengan argumen "treat"akan mencetak trik sebagai gantinya!

Tidak termasuk stdio.h sangat penting di sini, karena mendefinisikan put memerlukan penggunaan tipe yang sama dengan yang ada di file header ( puts(const char*)).

Akhirnya, perlu dicatat bahwa panggilan untuk printf di menempatkan melewati string tanpa linefeed tambahan. Jika tidak, kompiler akan "mengoptimalkan" panggilan itu juga, menghasilkan kesalahan segmentasi.


10

Batch / sh, 30 byte

:;echo Treat;exit
@echo Trick

Penjelasan. Batch melihat baris pertama sebagai label, yang diabaikannya, dan mengeksekusi baris kedua, yang mencetak Trick. @ Menekan Batch's standar menggemakan perintah untuk stdout. (Label tidak pernah digaungkan.) Sementara itu sh melihat yang berikut:

:
echo Treat
exit
@echo Trick

Baris pertama tidak melakukan apa-apa (ini alias true), baris kedua mencetak Treat, dan baris ketiga keluar dari skrip, sehingga Trik @echo tidak pernah tercapai.


10

sed / Hexagony 32 byte

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

sed

Cobalah secara Online!

Baris pertama mencetak trickjika ada string kosong di akhir input. (sed tidak melakukan apa-apa jika tidak ada input, tetapi baris kosong pada stdin diperbolehkan dalam kasus ini)

Contoh dijalankan:

$ echo | sed -f TrickOrTreat.sed
trick

Segi enam

Cobalah secara Online!

Yang pertama /mengarahkan pointer instruksi ke atas dan ke kiri, sehingga membungkus bagian kiri bawah, melewatkan teks yang digunakan untuk sed. Ini menggunakan kembali r dari kode sed dan menjalankan beberapa yang lain tanpa efek. Hex diperluas terlihat seperti ini:

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

Keluaran:

treat

Saya telah melihat posting Hexagony yang memiliki gambar jalur eksekusi, apakah ada yang mudah untuk menghasilkannya?
Riley


1
Kode Hexagony Anda mencetak byte nol terkemuka. Tidak yakin apakah itu dianggap sebagai ruang kosong untuk keperluan tantangan ini.
Martin Ender

@ MartinEnder Kedengarannya diizinkan. Terima kasih telah menunjukkan itu, saya selalu merindukan mereka untuk beberapa alasan ...
Riley

Saya berhasil memperbaikinya sambil juga menghemat beberapa byte (dengan biaya mencetak huruf besar A, meskipun Anda bisa membuatnya lebih jelek dengan mengubah semua huruf menjadi huruf besar): hexagony.tryitonline.net/...
Martin Ender

10

C # / Java

Ini mungkin tidak memenuhi syarat karena tidak berjalan sendiri, tetapi tantangannya telah mengingatkan saya pada sebuah kekhasan dalam bagaimana C # dan Java menangani perbandingan string secara berbeda sehingga Anda dapat bersenang-senang dengan kode kebingungan.

Fungsi berikut ini valid dalam C # dan Java, tetapi akan mengembalikan nilai yang berbeda ...

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

Uniknya memang menarik.
BrainStone

10

Brain-Flak / Brain-Flueue, 265 253 219 165 139 115 113 101 byte

Termasuk +1 untuk -A

Terima kasih kepada Wheat Wizard untuk bolak-balik, bermain golf beberapa byte dari kode masing-masing, dengan saya.

((((()()()))([]((({}{}))({}([((({}()())))]([](({}{}){}){}{})))[]))[])[()()])({}()()){}({})({}[][]){}

Brain-Flak: Cobalah online!
Brain-Flueue: Cobalah secara online!

Penjelasan:
Bagian pertama berisi daftar nilai yang dilihat Brain-Flak.
Ketika beralih ke Brain-Flueue, saya mulai membuat daftar nilai ketika Brain-Flueue melihatnya.

# 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 byte

'trick'#"treat

The 'trick'di PowerShell membuat string dan meninggalkannya di pipeline. The #dimulai komentar, sehingga program selesai dan implisit Write-Outputcetak trick.

Di Foo, (Coba Online!) , 'trick'Diabaikan, #menyebabkan program tidur selama beberapa 0detik (karena tidak ada apa-apa di pointer array), kemudian "treatmulai string. Sejak EOF tercapai, ada implisit "untuk menutup string, dan itu dicetak ke stdout.


Juga berfungsi di J / Foo.
Conor O'Brien

@ ConorO'Brien Apakah penjelasannya sama? Saya tidak pernah menggunakan J dan saya tidak terbiasa dengannya.
AdmBorkBork

Tidak, ini tidak berfungsi di J. # adalah fungsi salin, dan hanya membutuhkan argumen kiri kompleks yang tidak negatif, bukan string. Simbol komentarNB.
Adám

@ Adm benar kamu. Lupa#
Conor O'Brien

9

PHP / Perl, 28 byte

print defined&x?trick:treat;

defined&x
memberikan sesuatu yang benar dalam PHP (tidak tahu kenapa, tapi itu benar).
Dalam Perl memeriksa apakah fungsi xdidefinisikan - yang tidak.
-> trickdalam PHP, treatdalam Perl.


@ jmathews Sudahkah Anda mencoba memasukkan karakter kontrol backspace ke versi windows Anda? Bagaimana dengan CLS?
Titus

`adalah nilai sebenarnya dari definisi & x atau d & x tanyakan pada saya yang mana yang Anda dapatkan
Jörg Hülsermann
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.