Lừa hoặc điều trị polyglot


161

Vì Halloween sắp đến nên tôi nghĩ mình có thể bắt đầu một thử thách chơi gôn nhỏ vui nhộn!

Thử thách khá đơn giản. Bạn phải viết một chương trình đầu ra trickhoặc treat.
"Vắt?" bạn có thể yêu cầu. Vâng hãy để tôi giải thích:

Chương trình của bạn phải làm như sau:

  • Có thể biên dịch / chạy được bằng hai ngôn ngữ khác nhau. Các phiên bản khác nhau của cùng một ngôn ngữ không được tính.
  • Khi bạn chạy chương trình bằng một ngôn ngữ, nó sẽ xuất ra trickvà ngôn ngữ kia sẽ xuất ra treat. Trường hợp này không liên quan và đệm chuỗi với các ký tự khoảng trắng được cho phép (xem ví dụ).
  • Đây là , vì vậy giải pháp có ít byte nhất sẽ thắng.

Một vài lời giải thích:

Đầu ra hợp lệ (Chỉ dành cho các từ không chạy mã bằng hai ngôn ngữ. Ngoài ra, thêm dấu ngoặc kép để báo hiệu đầu hoặc cuối của đầu ra. Không bao gồm chúng trong giải pháp của bạn!):

"trick"

"Treat"

"    TReAt"

"
     tRICk          "

Đầu ra không hợp lệ :

"tri ck"

"tr
eat"

"trck"

Tôi quan tâm để xem những gì bạn có thể đến với! Chúc bạn chơi golf vui vẻ!

Tôi muốn lưu ý rằng đây là thử thách đầu tiên của tôi vì vậy nếu bạn có đề xuất về câu hỏi này, vui lòng để lại dưới dạng nhận xét.

Bảng xếp hạng

Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

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

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành một liên kết mà sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

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


21
Câu trả lời meta này nói rằng các bản sao gần như có thể được dung thứ nếu có lý do chính đáng. Tôi tin rằng sự phổ biến mà câu hỏi này nhận được từ việc gần gũi với Halloween là một lý do chính đáng, vì vậy tôi sẽ bỏ phiếu để mở lại. Tôi sẽ không đóng nó sau Halloween (nhưng tôi cũng không biết liệu đây có phải là một điều tốt hay không).
Aaron

2
@ mbomb007. Đây là một bản sao của những gì ?
TRiG

3
chắc chắn không phải là một bản sao Điều duy nhất giống với cái khác là nó cũng là một thách thức đa âm với đầu ra được chỉ định.
Brian Minton

3
... 3 trang ... Tôi thực sự nghĩ rằng điều này sẽ nhận được rất nhiều hoạt động dựa trên giá trị hiện tại của biến thể theo mùa.
wizzwizz4

2
Thật là một câu hỏi tuyệt vời! Tôi thích cách một số câu trả lời chiếu sáng và khai thác cách các đoạn mã đơn giản có nghĩa là những thứ khác nhau trong các ngôn ngữ khác nhau - ví dụ: tính trung thực / giả dối và tính kết hợp của toán tử ternary.
Don nở

Câu trả lời:


146

2sable / pl , 8 byte

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

Cả hai chương trình đã được kiểm tra cục bộ với cùng một tệp 8 byte, vì vậy đây là một polyglot thích hợp.

2sable: lừa

Đây là chương trình trong mã trang 1252 .

treat“ÐË

Hãy thử trực tuyến!

pl: đối xử

Đây là chương trình trong mã trang 437 .

treatô╨╦

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

2sable: lừa

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: đối xử

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
Nhưng tôi đã phải thừa nhận câu trả lời này là vô lý! Cái gì tiếp theo? Một câu trả lời ngắn hơn chính những từ đó?
BrainStone

45
Câu trả lời này cực kỳ ấn tượng. Thật đáng kinh ngạc khi bạn quản lý để viết một chương trình ngắn hơn độ dài của hai từ.
DJMcMayhem

1
Huh? Đó là 2 chương trình
FireCubez

1
@FireCubez Đó là cùng một mã, byte trên mỗi byte. Các đại diện trực quan khác nhau với codepage mặc dù.
Dennis

201

Batch Python / Windows, 25 byte

print"trick"#||echo.treat

Mọi thứ sau # được hiểu là một nhận xét của python, trong khi | | là một OR trong lô, nói rằng như lệnh trước đó không thành công, hãy thực thi lệnh này.

Tôi cũng thích việc sử dụng OR vì nó gần như đọc "mẹo hoặc điều trị" :)


33
TBH Tôi đã bỏ phiếu này chỉ cho nhận xét về OR.
Jmons

7
TBH Tôi chưa bao giờ mong đợi bài đăng đầu tiên của mình ở đây để nhận được 65 lượt
upvote

11
TBH cho phép không chỉ nói về upvotes. Nó không phải Quora
S Andrew

3
@SAndrew là một thành viên hoàn toàn mới của cộng đồng này, tôi không mong đợi sẽ tạo ra một bài đăng sẽ sớm nhận được điều này và tôi rất vui khi được đóng góp. Tôi không cố gắng để khoe khoang, xin đừng hiểu lầm. Tôi thực sự rất vui khi được nhận rất tốt vì tôi rất mới. cảm ơn bạn đã bình luận :)
nephi12

2
Sự đồng thuận của cộng đồng @YotamSalmon nói rằng STDERR bị bỏ qua theo mặc định; chỉ STDOUT được xem xét. Hãy thử lại lệnh với 2>nul.
Conor O'Brien

154

Khoảng trắng / Starry, 135 byte

Đây là một bầu trời đêm trong ngày Halloween!

  + + + + + 
    +

* + + * + *

   + *           
     + +        

 + * +   



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

Lưu ý rằng khoảng trắng trên các dòng trống có thể không được giữ nguyên nếu bạn sao chép từ đoạn mã trên

Khoảng trắng đầu ra "TRICK". Hãy thử trực tuyến!
Đầu ra đầy sao "TREAT". Hãy thử trực tuyến!

Giải trình

Đầy sao

Starry bỏ qua tất cả các tab và dòng mới để mã nó đọc là như sau

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

Bytewise, đẩy các giá trị rất tốn kém so với các phép toán stack và số học trong Starry. Mã bắt đầu bằng cách đẩy và sao chép 4 và thực hiện một số thao tác trên nó và với 2 và 1 được đẩy sau đó sẽ tạo ra tất cả các giá trị ASCII cần thiết.

Mã chú thích

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)

Khoảng trắng

Như tên có thể gợi ý, Whitespace chỉ phân tích ba ký tự khoảng trắng Không gian, tab và dòng mới. Không giống như Starry, các khoảng trắng dễ dàng đẩy các giá trị ASCII của T, R, I, C, và Kvà in chúng.

Mã chú thích

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

Sự đan xen của các lần đẩy và in được chọn chỉ dựa trên lý do thẩm mỹ vì nó không ảnh hưởng đến số byte.


12
bầu trời thật đẹp
lois6b

9
Đây là câu trả lời tốt nhất, rất sáng tạo. tôi bị sốc bởi sự khéo léo. và kỹ năng. dũng cảm!
nephi12

137

Tệp Linux ELF x86 / DOS .COM, 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

Nguồn 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

Điều này sử dụng thực tế là tiêu đề ELF bắt đầu bằng 7F 45, được hiểu là mã x86, là một bước nhảy.

Các phần có liên quan cho 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, thưa ngài. Bravo.
Draconis

9
Trái tim tôi ngừng đập.
John Keates

muppetlabs.com/~breadbox/software/tiny/teensy.html là một cách đọc tốt cho bất kỳ ai quan tâm đến thủ thuật chồng chéo tiêu đề ở đây.
Sparr

4
Đây là một trong những câu trả lời hay nhất tôi từng thấy trên trang web này. Codegolf hơi quá thường biến thành ngôn ngữ bí truyền được xây dựng nhằm mục đích chơi golf, thay vì câu trả lời thông minh. Thật là đẹp
K từ

Đây là công cụ tuyệt vời.
Gooseman

104

ác / ZOMBIE , 109 byte

Một câu trả lời ma quái!

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

Các ZOMBIEđang định nghĩa một vampiretên xfcó nhiệm vụ chỉ fđược kích hoạt tại instanciation và ý chí sản lượng trickmột lần trước khi bị ngừng hoạt động do stumble. Cuộc saygọi khác là mã chết (thích hợp!) Cho ZOMBIE, nhưng chứa hầu hết evilmã.

Đối với evil, xftên là một cuộc gọi để nhảy sang tiếp theo j, trước zuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeawtiếng rên rỉ zombie mà thủ công và phát ra treat. Mã sau đây được thực thi (chữ thường) hoặc bị bỏ qua nhưng vì không wcó đầu ra nào được tạo ra.


1
@KevinCruijssen cảm ơn, tôi rất thích dịp này để tham gia vào một số ngôn ngữ bí truyền ít được biết đến :)
Aaron

Chà, từ bốn người bạn đã sử dụng, tôi đã thấy Agony một vài lần trước đây và tôi mơ hồ nhớ rằng đã từng thấy ZOMBIE một lần. Chưa bao giờ nghe nói về HashHell hoặc ác trước đây. :)
Kevin Cruijssen

chủ đề Halloween của điều này là ấn tượng! Tôi thậm chí chưa bao giờ nghe nói về hai ngôn ngữ đó
ejfrancis

95

Python / Perl, 28 byte

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

Giải trình

[]là một ArrayRef trong Perl, điều đó là sự thật, nhưng đó là một mảng trống trong Python, do đó là giả.


7
Tương tự, print({}and"trick"or"treat")trong Python / Lua.
user200783

1
@ user200783 Điều đó cũng có tác dụng tương tự trong Perl, vì đó {}là HashRef!
Dom Hastings

2
Nó cũng gần như giống hệt với Python / Ruby, nhưng cần thêm một khoảng trắng:print ([]and"trick"or"treat")
Ink Ink

2
Yêu nó! Đây là một bình luận tuyệt vời về những gì ngầm định chuyển đổi thành bool để dễ đọc.
Don nở

Đây có thể là một polyglot trong Lua, Perl và Python nếu có print({}and"trick"or"treat")!
ckjbgames

48

PHP / JavaScript, 32 30 byte

Hiển thị trick trong PHP và treattrong JS.

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

NaNHằng số chưa biết được ngầm định chuyển đổi thành một chuỗi bởi PHP, làm cho nó thành sự thật. Đó là giả mạo trong JS.

Phương pháp thay thế, 38 byte

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

Toán tử ternary là liên kết đúng trong JS:

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

Và liên kết trái trong PHP:

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

1
Bạn nói đúng, xấu của tôi
Gareth Parker

alert () là JavaScript trong HTML, tuy nhiên, không phải JavaScript từ bảng điều khiển.
perr ferrie

1
Phương pháp thay thế: '\ 0' == "\ 0"? Die (trick): alert ('Treat'); `.
Ismael Miguel

3
Gỡ lỗi các toán tử ternary xích trong PHP phải rất thú vị.
Robert Fraser

3
@Robert Gỡ lỗi bất cứ điều gì trong PHP rất thú vị.
sampathsris

39

HTML / HTML + JavaScript, 53 byte

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

treatlà tài liệu văn bản nội dung văn bản trong HTML.
Nếu JS được bật, nó sẽ thay thế nội dung HTML bằng trick.


3
Giải pháp thú vị. Tôi thích nó
BrainStone

1
Bạn nên sử dụng document.write()thay thế. -8 byte
darrylyeo

@darrylyeo document.writesẽ không thay thế đầu ra HTML mà nối vào nó.
Tít

1
Đã thử nghiệm trong Chrome. Hoàn toàn hoạt động. Bật và tắt javascript thay đổi nội dung khi làm mới.
Tatarize

@Tatarize: Đã thử nghiệm trong Firefox 49, Opera 41, Safari 5.0, Chrome 54, Edge 38 trên Windows, Firefox 5.3 và Safari 5.0 trên iOS, Firefox 49 và Dolphin 11.5 trên Android. Chỉ Firefox trên Windows thay thế; tất cả những người khác nối thêm.
Tít

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"/**/);}}

// \ làm cho dòng tiếp theo cũng là một nhận xét trong C nhưng là một nhận xét một dòng thông thường trong Java, vì vậy bạn có thể tạo mã bỏ qua C có nghĩa là cho Java và bằng cách thêm / * vào dòng thứ hai, bạn có thể nhận xét cho Java phân tích cú pháp dưới dạng mã của C.

Chỉnh sửa: Tôi đã cải thiện nó một chút bằng cách sắp xếp lại các dòng và nhận xét.

Edit2: Tôi đã tổ chức lại nhiều hơn và rút ngắn nó hơn nữa.

Edit3: Tôi đã thêm các chỉnh sửa được đề xuất bởi BrainStone để xóa 5 byte, cảm ơn :)

Edit4: Một dòng mới hóa ra là không cần thiết nên tôi đã gỡ bỏ nó.

Edit5: Tôi đã thay đổi printf thành put.

Chỉnh sửa 6: Tôi đã thêm một chỉnh sửa được đề xuất bởi Ray Hamel.


1
Bạn có thể an toàn 1 byte bằng cách thay đổi C thành C ++ và thay thế #include<stdio.h>bằng #include<cstdio>. Không nhiều nhưng một byte là một byte. Và bổ sung loại bỏ int trước mặt của mainý chí an toàn 4 byte. intđược ngụ ý bởi C và C ++
BrainStone

Cảm ơn, tôi đã sửa đổi mã theo đề xuất của bạn :)
I_LIKE_BREAD7

1
Đẹp! Tôi đã có một thời gian khó khăn để tìm ra một cái gì đó cho Java và kết thúc với Java 7 + Whitespace . Btw, bạn có thể chơi thêm một byte bằng cách xóa khoảng trống tại String[]s.
Kevin Cruijssen

29

Jolf + Chaîne, 12 byte

Vì Chaîne không thể chấp nhận một tệp để tải lên bằng mã hóa, tôi giả sử UTF-8. (Nếu tôi có thể giả sử ISO-8859-7, đây sẽ là 11 byte, nhưng điều đó sẽ không công bằng.)

trick«treat

Trong Chaîne, «bắt đầu một bình luận, và phần còn lại được in nguyên văn. Trong Jolf, «bắt đầu một chuỗi. Rất may, trickkhông có gì có hại ( 10; range(input, parseInt(input))về cơ bản), và treatđược in.

Hãy thử Jolf ở đây!

Hãy thử Chaîne tại đây!

Cả hai đều hoạt động trên trình duyệt của tôi (firefox, phiên bản mới nhất), nhưng điều tương tự không thể nói với các trình duyệt khác.


2
Tôi cho rằng việc kiểm kê nhiều ngôn ngữ tối nghĩa có lợi ích ...
Conor O'Brien

1
Rất vui khi thấy rằng chúng ta đang tiến gần đến các giải pháp khá nhiều chỉ nhờ vào chính những từ đó. Tôi tự hỏi nếu bất cứ ai có thể tái sử dụng tr.
BrainStone

1
@BrainStone Cá nhân tôi nghi ngờ rằng trcó thể được sử dụng lại trong bất kỳ môn đánh gôn nào - đó là một thông tin nhỏ sẽ mất ít nhất một nhà điều hành để mã hóa các ngôn ngữ chơi gôn, sau đó là một ngôn ngữ có điều kiện cụ thể. Nó thậm chí có thể dài ra hoặc dài hơn. Tuy nhiên, đó chỉ là phỏng đoán của tôi;)
Conor O'Brien

Hãy cùng tìm hiểu. Nhưng tôi phải đồng ý. Số byte từ 10 trở xuống sẽ là điên rồ!
BrainStone


27

#hell / đau khổ , 43 byte

Rất nhiều ><>ở khắp mọi nơi, đây là gì, một thách thức Cá tháng Tư? Đây là một câu trả lời với các ngôn ngữ theo chủ đề thích hợp.

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

#helllà một tập hợp con trong LUAđó may mắn chấp nhận io.writecác cuộc gọi đầu ra. Chúng tôi sử dụng LUA's-- ý kiến mình để nó chỉ thực hiện đoạn này.

Agonylà một Brainfuckdẫn xuất, có đặc thù là có mã và bộ nhớ làm việc trên cùng một băng. Dòng đầu tiên chỉ in 5 ký tự (10 ô) từ cuối đoạn mã, trong đó tôi được mã hóa treatdưới dạng Agonycác lệnh. LUAMở bình luận --sửa đổi giá trị của một ô không được sử dụng.


Tôi phải nói rằng những người theo chủ đề Halloween của bạn là imho tốt nhất. Rất sáng tạo!
BrainStone

@BrainStone Cảm ơn, tôi đã rất vui khi làm chúng!
Aaron

27

Cubix / Hexagony , 31 byte

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

Lừa nó ra! Điều trị trực tuyến!

Halloween theo chủ đề ? Lưu ý sự thật kinh hoàng về các ngôn ngữ này và mã:

  1. Nếu và ngay cả khi bạn không làm gì (chỉ cần đặt no-op), bạn không bao giờ có thể có thể thoát khỏi vòng lặp được xác định là sẽ chạy mãi mãi ...
  2. Và bị mắc kẹt giữa ngôn ngữ lập trình 3D và 2D (Ôi đau đớn ...)
  3. Bên trong các kích thước, bạn sẽ dần mất đi nơi bạn đang ở ... nơi bạn đang ...
  4. Và có một =v=nụ cười với bạn, hành động không có gì trong mã

Chúng ta hãy đi sâu vào bí ẩn của giao thức truyền thông 31 byte ẩn về kích thước và khủng bố ...

lừa

Khi mã gập hoặc mở ra ... Đó là cubified, bố cục trông như thế này:

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

Và phần chính là phần này ở giữa:

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

Nó đẩy k,c,i,r,tlên ngăn xếp và oxuất ra và ;bật trong một vòng lặp giới hạn bởi các gương phản xạ và? hướng dẫn bạn tùy thuộc vào giá trị trên đỉnh của ngăn xếp ...

đối đãi

Thật bất ngờ, mã biến đổi từ một khối lập phương thành một hình lục giác. (Tưởng tượng rằng)

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

Và phần chính là phần này:

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

Nó chạy t;các bản in tvà chạm vào gương và chuyển hướng sang Tây Bắc bắt đầu từ góc SE và chạm vào một gương khác. Thao tác này chạy r;và kết thúc e;_a]đưa nó đến Con trỏ lệnh 1 bắt đầu ở góc NE chỉ SE và các lần truy cập /phản ánh theo chiều ngang đến ;sau đót .

Sau đó, nó kết thúc tốt đẹp đến =, ;@ kết thúc sự lộn xộn.

Vậy ... Đang _làm gì ở đó?

Tại sao nó bên trongt e a (3 chữ cái đầu tiên trong mã)?

Đây là kết thúc của câu chuyện -

không có gì .

Nghe có vẻ như kết thúc của một câu chuyện kinh dị?


Đẹp, rất đẹp! Thật khó để tạo ra một đa âm từ hai ngôn ngữ 2D. Tôi thích câu chuyện kinh dị đi cùng với nó;)
ETHproductions

Không chắc câu trả lời này hay ELF / .COM ấn tượng hơn. Làm tốt lắm!
val

24

SQL / Javascript, 54 byte

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

Cách tiếp cận tương tự như với câu trả lời QB / JS của tôi : Dòng đầu tiên có câu lệnh SQL, dòng thứ hai có 'nhận xét' cho SQL và NOP cho JS. Sau đó, chúng tôi định nghĩa câu lệnh của SQL selectlà một hàm JS hợp lệ.


3
Đó là một cách rất thông minh để kết hợp hai ngôn ngữ này. Có +1!
Sản phẩm ETH

22

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

Câu trả lời này yêu cầu -Acờ xuất ra trong ASCII cho Brain-Flak và may mắn là Brainfuck không quan tâm đến cờ đó nên nó không ảnh hưởng đến đầu ra trong Brainfuck.

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

Hãy thử trực tuyến!

Hãy thử trực tuyến!

Làm thế nào điều này hoạt động

Sự trùng lặp duy nhất giữa cú pháp của Brain-Flak và Brainfuck là các ký tự <>[]. Đối với flak não, điều này chủ yếu có nghĩa là chương trình phải đảm bảo số lượng công tắc ngăn xếp chẵn <>. Và đối với Brainfuck, điều này có nghĩa là chúng ta cần tránh các vòng lặp vô hạn gây ra bởi việc sử dụng[] đơn nguyên.

Mã Brain-Flak như sau:

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

Ngoài [<<...>>]bit ở giữa và <[<>]<>[<>]<>>cuối cùng, mã này là ngang bằng với khóa học cho đến khi các chương trình Brain-Flak đi. Tiêu cực xung quanh số 0 ( [<...>]) là có để tạo vòng lặp cho Brainfuck. Phần bên trong <...>được sử dụng để di chuyển Brainfuck đến một ô trống trước khi nó gặp phần [][][][]sẽ lặp lại vô hạn.

Mã Brainfuck như sau:

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

Ngoài các bit đã nói ở trên, đây cũng là một chương trình khá chuẩn nên tôi sẽ cung cấp cho bạn các chi tiết.


Tôi thích cái này: D
Conor O'Brien

9
RẤT NHIỀU hơn hai ngôn ngữ khớp với biểu thức chính quy /brainf..k/, vì vậy bạn nên sử dụng cùng định dạng tiêu đề như mọi ngôn ngữ khác.
mbomb007

13
@ mbomb007 ngôn ngữ khác duy nhất tôi có thể tìm thấy phù hợp với regex này là brainfork . Thuận tiện khi chạy trong brainfork, bản in này "TRICK" vì vậy tôi sẽ rời khỏi regex trong thời gian này.
Sriotchilism O'Z cổ

For brain-flak this mostly means the program has to ensure an even number of stack switchesBạn có chắc chắn về điều đó không? Nó không phải là vấn đề vì <>NOP trong brainfuck
DJMcMayhem

@DJMcMayhem nó phải kết thúc trên cùng một ngăn xếp, chúng tôi sẽ đặt mọi thứ nếu không nó sẽ không in bất cứ thứ gì.
Sriotchilism O'Z cổ

21

> <> / Câu cá , 38 byte

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

Vì lợi ích của việc tạo ra một ><>/ Fishingpolyglot.

Đó là đoạn Fishingmã đầu tiên của tôi sau khi chơi trong một thời gian dài ><>.
Ấn tượng đầu tiên của tôi: như trong tự nhiên, ngư dân có khả năng thể chất ít hơn lời cầu nguyện của mình nhưng bù lại bằng công cụ của nó!

Ở đây mã cực kỳ đơn giản: ><>sẽ chỉ thực hiện dòng đầu tiên, trong đó _là gương dọc và không có tác dụng vì cá bắt đầu bơi theo chiều ngang. Nó chỉ đẩy trickvào ngăn xếp sau đó in nó trước khi dừng lại.
Đối với Fishing, các _hướng dẫn để đi xuống. Ngư dân sẽ theo boong là dòng thứ hai trong khi bắt các nhân vật của dòng thứ ba. Những thứ này sẽ đẩytreat vào băng sau đó in nó, dừng lại khi nó đến cuối boong.

Nếu lỗi được cho phép, bạn có thể giảm xuống 35 byte với đoạn mã sau sẽ gây ra lỗi khi chạy ><>khi trickđược in ra khỏi ngăn xếp:

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

Bạn cũng nên kiểm tra câu trả lời theo ngôn ngữ theo chủ đề của tôi, #hell / Agonyevil / ZOMBIE !


Aw, tôi muốn tạo ra một polyglot cá / câu cá :) Bạn đánh bại tôi với nó. Đẹp quá
Emigna

+1 cho " như trong tự nhiên, ngư dân có khả năng thể chất ít hơn lời cầu nguyện của mình nhưng bù lại bằng công cụ của nó! "
Kevin Cruijssen

20

05AB1E / Trên thực tế , 10 byte

"trick"’®Â

Giải trình

05AB1E

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

Dùng thử trực tuyến

Thực ra

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

Dùng thử trực tuyến


Bạn biết đấy, tôi có thể đọc rõ ràng trick, nhưng ’®Âđối xử thế nào? ..
Kevin Cruijssen

1
Bây giờ mọi người đã biết tính năng này. Lần tới, chúng tôi sẽ nhận được các câu hỏi như " hQq3k hoặc bvM; p polyglot " ...
jimmy23013

3
@KevinCruijssen: '®Â được dịch là "lấy từ có chỉ số 3757 từ từ điển", nghĩa là "đối xử".
Emigna

@Emigna Ok ... Vậy tất cả ~ 1.1M từ tiếng Anh có thể truy cập được trong 05AB1E?
Kevin Cruijssen

1
@KevinCruijssen: Không, có tổng cộng 10k (mỗi ký tự là 2 ký tự). Bạn có thể tìm thấy toàn bộ danh sách ở đây .
Emigna

16

Haskell / ML chuẩn , 56 byte

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

Chế độ xem Haskell

Dấu chấm phẩy cho phép nhiều khai báo trong một dòng và hoạt động giống như ngắt dòng, vì vậy chúng tôi nhận được

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

Một chương trình Haskell được thực thi bằng cách gọi mainhàm, vì vậy trong hàng cuối cùng putStr"trick"được thực thi mà chỉ in trick.
Hai hàng đầu tiên được hiểu là khai báo hàm theo mẫu <functionName> <argumentName1> ... <argumentNameN> = <functionBody>. Vì vậy, trong hàng đầu tiên, một hàm có tên funđược khai báo sẽ lấy hai đối số có tên putStrxthân hàm print"treat". Đây là một hàm Haskell hợp lệ với loại fun :: t -> t1 -> IO (), có nghĩa là nó lấy một đối số của một loại tùy ý tvà một loại thứ hai của một số loại t1sau đó trả về một hành động IO. Các loại tt1không quan trọng vì các đối số không được sử dụng trong thân hàm. Loại hành động IO kết quả từ print"treat", in "treat"ra StdOut (chú ý ", đó là lý do tại saoputStr thay vì printđược sử dụng trongmain). Tuy nhiên, vì nó chỉ là một khai báo hàm, không có gì thực sự được in như funkhông được gọi trong main.
Điều tương tự cũng xảy ra trong dòng thứ hai val main=();, một hàm valđược khai báo sẽ lấy một đối số tùy ý có tên mainvà trả về đơn vị , bộ dữ liệu trống (). Đó là loại val :: t -> ()(Cả giá trị và loại đơn vị được ký hiệu ()).

Hãy thử nó trên Ideone.


Chế độ xem ML tiêu chuẩn

ML chuẩn là ngôn ngữ chức năng chủ yếu có cú pháp liên quan đến, nhưng không giống với Haskell. Cụ thể, khai báo hàm được tiền tố với từ khóa funnếu chúng có bất kỳ đối số nào và từ khóa valnếu chúng không có. Ngoài ra, có thể có một biểu thức ở mức cao nhất (có nghĩa là không nằm trong bất kỳ khai báo nào) được thực thi khi chương trình được chạy. (Trong Haskell viết 1+2bên ngoài một tuyên bố ném một naked expression at top level-error). Cuối cùng, biểu tượng để kiểm tra sự bình đẳng =thay vì ==trong Haskell. (Còn nhiều khác biệt nữa, nhưng đó là những điều duy nhất quan trọng đối với chương trình này.)
Vì vậy, SML thấy hai khai báo

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

theo sau là một biểu thức

main=putStr"trick"

mà sau đó được đánh giá. Để xác định xem có mainbằng nhau hay không putStr"trick", cả hai bên phải được đánh giá và cả hai phải có cùng loại, vì SML (cũng như Haskell) được nhập tĩnh. Trước tiên chúng ta hãy nhìn vào phía bên phải: putStrkhông phải là một hàm thư viện trong SML, nhưng chúng ta đã khai báo một hàm có tên putStrtrong dòng fun putStr x=print"treat";- nó cần một đối sốx (đây là chuỗi "trick"trong trường hợp của chúng ta) và ngay lập tức quên nó đi, vì nó không xảy ra trong cơ thể chức năng. Sau đó, phần thân print"treat"được thực thi mà in treat(không kèm theo ", SML printkhác với Haskell print).
printCó loại string -> unit, nên putStrcó loạia -> unit và do đóputStr"trick" chỉ có loạiunit. Để được đánh máy tốt, mainphải có loạiunitquá. Giá trị cho đơn vị là trong SML giống như trong Haskell (), vì vậy chúng tôi khai báo val main=();và mọi thứ đều được gõ tốt.

Hãy thử nó trên tiền mã hóa.
Lưu ý: Đầu ra trong giao diện điều khiển là

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

bởi vì trong SML \ NJ , giá trị và loại của mỗi câu lệnh được hiển thị sau mỗi lần khai báo. Vì vậy, trước tiên các loại putStrmainđược hiển thị, sau đó các biểu thức được ước tính gây ra treatđược in, sau đó là giá trị của biểu thức (true như hai bên =()) là ràng buộc để biến kết quả tiềm ẩn itmà sau đó cũng được hiển thị.


1
Tôi luôn nghĩ fun ... ... =là cú pháp đường cho val rec ... = fn ... =>. Nhưng sau đó một lần nữa, tôi đã sử dụng ML.
Neil

@Neil Bạn nói đúng, funlà cú pháp cú pháp cho hàm ẩn danh bị ràng buộc với val( recchỉ cần nếu hàm đệ quy) và do đó công thức "phải có tiền tố" được chọn sai, tôi sẽ chỉnh sửa câu trả lời. Nói chung, sử dụng funlà cách thực hành tốt nhất, đặc biệt là trong môn đánh gôn vì nó ngắn hơn nhiều.
Laikoni

15

Ruby / C, 64 62 51 48 byte

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

Những gì Ruby thấy:

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

Các tapphương pháp có một khối và thực hiện nó một lần. Đó là một mã định danh ngắn mà chúng ta có thể tạo một #definemacro cho C. Nó cũng cho phép chúng ta đặt một khối được đóng dấu ngoặc trong mã chia sẻ, mặc dù Ruby không cho phép {}s trong hầu hết các ngữ cảnh.

Các giá trị giả mạo duy nhất trong Ruby là falsenil. Đặc biệt, 0 là sự thật. Do đó, Ruby sẽ in "mánh khóe".

Những gì C thấy (sau bộ xử lý trước):

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

0 là sai trong C, vì vậy C sẽ in "điều trị".

Lưu 2 byte nhờ daniero.


1
Đẹp. Bạn có thể sử dụng putsthay vì printfđể lưu hai byte
daniero

Cảm ơn! Tôi đã quá quen với việc luôn luôn sử dụng printftrong C, tôi đã quên rằng nó cũng có putschức năng.
m-chrzan

Hai ý tưởng: Bạn không thể sử dụng một cái gì đó ngắn hơn cho tap? Và tại sao bạn không thoát khỏi không gian? p ? "trick":"treat"=>p?"trick":"treat"
BrainStone

tapthực sự phục vụ hai mục đích. Đó là một định danh ngắn #defineđể chốt, nhưng nó cũng cho phép tôi đặt dấu ngoặc trực tiếp vào mã Ruby. {}các khối trong Ruby không hoạt động giống như chúng làm bằng C và các ngôn ngữ tương tự, nhưng tap thực hiện một khối và thực thi nó một lần.
m-chrzan

Tên phương thức trong Ruby có thể kết thúc bằng dấu chấm hỏi, do đó, cần một khoảng trắng p. ?<character>là một nhân vật theo nghĩa đen, vì vậy một không gian là cần thiết sau ?.
m-chrzan

15

QBasic / JavaScript, 51 44 byte

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

Trong QBasic, nó in dòng thứ hai và không thực thi dòng đầu tiên vì nó được cho là một nhận xét (cảm ơn bạn). Trong JS, nó gọi hàm PRINT, được định nghĩa trên dòng đầu tiên, ngay sau JS NOP '';.


1
Một cách tiếp cận rất thông minh!
BrainStone

14

ShapeScript / Foo , 13 byte

'trick'"treat

Hãy thử trực tuyến! lừa | đối đãi

Làm thế nào nó hoạt động

ShapeScript được phân tích cú pháp theo ký tự. Khi EOF được nhấn mà không gặp phải trích dẫn kết thúc, không có gì được đẩy lên ngăn xếp. 'trick'không đẩy chuỗi bên trong dấu ngoặc kép, được in thành STDOUT ngầm.

Foo không có bất kỳ lệnh nào được gán cho các ký tự 'trick', vì vậy phần đó được âm thầm bỏ qua. Tuy nhiên, nó sẽ in bất cứ thứ gì giữa hai dấu ngoặc kép ngay lập tức sang STDOUT, ngay cả khi dấu ngoặc kép bị thiếu.


14

Ruby / Perl, 21 byte

print"trick"%1||treat

Perl

Tính "trick" % 1đó là 0 % 1nên ||gửi treatđể printthay vào đó, kể từ Perl chấp nhận barewords.

Hồng ngọc

Định dạng chuỗi "trick"với đối số 1, dẫn đến kết quả "trick"là trung thực, do đó ||không được xử lý.


14

MATL / CJam , 17 byte

'TRICK'%];"TREAT"

Trong MATL kết quả này TRICK. Trong CJam, nó xuất ra TREAT .

Giải trình

TOÁN

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

Camam

'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

Bạn đang thiếu 3 ký tự đấy! (ĂN)
Lemon phá hủy

@DeststallibleWateriwi Cảm ơn! Đã chỉnh sửa
Luis Mendo

Bây giờ bạn đang thiếu ba trong phần giải thích MATL!
Lemon phá hủy

@DeststallibleWateriwi Aww. Cảm ơn một lần nữa :-D
Luis Mendo

12

Jelly / pl , 12 byte

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

Đây là chương trình được hiển thị bằng trang mã của Jelly .

treatµ
“¡ṾI»

Hãy thử trực tuyến!

Đây là chương trình được hiển thị bằng mã trang 437 .

treat
⌂■␀║I√

Hãy thử trực tuyến!

Cả hai chương trình đã được kiểm tra cục bộ với cùng một tệp 12 byte, vì vậy đây là một polyglot thích hợp.

Làm thế nào nó hoạt động

Trong Jelly, mỗi dòng định nghĩa một liên kết (hàm); dòng cuối cùng xác định liên kết chính , được thực hiện tự động khi chương trình được chạy. Trừ khi mã trước 7fbyte cuối cùng (nguồn cấp dữ liệu trong trang mã của Jelly) có lỗi trình phân tích cú pháp (sẽ hủy bỏ việc thực thi ngay lập tức), chúng chỉ bị bỏ qua. Dòng cuối cùng, “¡ṾI»chỉ cần lập chỉ mục vào từ điển của Jelly để tìm nạp từ lừa , được in ngầm vào cuối chương trình.

Tôi không biết nhiều về pl, nhưng có vẻ như trình thông dịch chỉ tìm nạp một dòng mã và bỏ qua mọi thứ xuất hiện sau nó. Như trong Perl, barewords được coi là chuỗi, do đó treatin chính xác điều đó.


12

Mục tiêu-C / C, 50 byte

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

Objective-C đã xử lý kẹo và in , nhưng C thì không và in lừa .

Làm thế nào nó hoạt động

Tôi không biết nhiều về Objective-C , nhưng nó thực hiện những gì chúng ta mong đợi một cách hợp lý trong tình huống này. Định nghĩa putslại không ảnh hưởng đến đầu ra vì chúng ta không bao giờ gọi hàm, và mainin điều trị và một nguồn cấp dữ liệu thành STDOUT.

Bạn có thể mong đợi C làm điều tương tự, nhưng ít nhất gcc 4.8, gcc 5.3 và clang 3.7 thì không.

Vì chúng ta không cần printf thực (lấy chuỗi định dạng và đối số bổ sung) và chuỗi được in kết thúc bằng một nguồn cấp dữ liệu, chúng ta có thể sử dụng puts để thay thế. đặt là hơi nhanh hơn so với printf (trong đó có phân tích lập luận của mình trước khi in), vì vậy trừ khi chúng tôi xác định lại chức năng printf là tốt, trình biên dịch tối ưu hóa và thay thế các cuộc gọi đến printf với một cuộc gọi đến puts . Ít người biên dịch biết rằng gọi putsbằng đối số "treat"sẽ in lừa thay!

Không bao gồm stdio.h là rất quan trọng ở đây, vì xác định puts sẽ yêu cầu sử dụng cùng loại nó có trong file header ( puts(const char*)).

Cuối cùng, điều đáng chú ý là lệnh gọi printf in đưa một chuỗi mà không có nguồn cấp dữ liệu . Nếu không, trình biên dịch cũng sẽ "tối ưu hóa" cuộc gọi đó, dẫn đến lỗi phân đoạn.


10

Batch / sh, 30 byte

:;echo Treat;exit
@echo Trick

Giải trình. Batch xem dòng đầu tiên là nhãn mà nó bỏ qua và thực thi dòng thứ hai, in Trick. @ Ngăn chặn tiếng vang mặc định của Batch đối với thiết bị xuất chuẩn. (Nhãn không bao giờ được lặp lại.) Trong khi đó sh thấy như sau:

:
echo Treat
exit
@echo Trick

Dòng đầu tiên không làm gì cả (đó là bí danh true), dòng thứ hai in Treat và dòng thứ ba thoát khỏi tập lệnh, vì vậy Trick @echo không bao giờ đạt được.


10

sed / Hexagony 32 byte

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

quyến rũ

Hãy thử trực tuyến!

Dòng đầu tiên in trick nếu có một chuỗi trống ở cuối đầu vào. (sed không làm gì nếu không có đầu vào, nhưng một dòng trống trên stdin được cho phép trong trường hợp này)

Chạy ví dụ:

$ echo | sed -f TrickOrTreat.sed
trick

Lục giác

Hãy thử trực tuyến!

Đầu tiên /chuyển hướng con trỏ lệnh lên và bên trái, do đó, nó bao bọc phía dưới bên trái, bỏ qua văn bản được sử dụng cho sed. Nó sử dụng lại r từ mã sed và chạy một vài cái khác không có hiệu lực. Hex mở rộng trông như thế này:

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

Đầu ra:

treat

Tôi đã thấy các bài viết của Hexagony có hình ảnh của đường dẫn thực thi, có dễ tạo ra chúng không?
Riley


1
Mã Hexagony của bạn in một byte null hàng đầu. Không chắc chắn nếu điều đó được tính là khoảng trắng cho các mục đích của thử thách này.
Martin Ender

@MartinEnder Âm thanh như được cho phép. Cảm ơn vì đã chỉ ra điều đó, tôi luôn nhớ những người đó vì một số lý do ...
Riley

Tôi đã cố gắng khắc phục điều đó trong khi cũng tiết kiệm được một vài byte (với chi phí in chữ in hoa A, mặc dù bạn có thể làm cho nó bớt xấu đi bằng cách thay đổi tất cả các chữ cái thành chữ hoa): hexagony.tryitonline.net/ trộm
Martin Ender

10

C # / Java

Điều này có thể không đủ điều kiện vì nó không tự chạy, nhưng thử thách đã nhắc nhở tôi về một vấn đề khó hiểu trong cách C # và Java xử lý so sánh chuỗi khác nhau mà bạn có thể vui vẻ với việc xáo trộn mã.

Hàm sau đây hợp lệ trong C # và Java, nhưng sẽ trả về một giá trị khác ...

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

Thật sự thú vị.
BrainStone

10

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

Bao gồm +1 cho -A

Cảm ơn Wheat Wizard vì đã qua lại, chơi golf vài mã với nhau.

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

Brain-Flak: Hãy thử trực tuyến!
Brain-Flueue: Hãy thử trực tuyến!

Giải thích:
Phần đầu tiên liệt kê các giá trị mà Brain-Flak nhìn thấy.
Khi nó chuyển sang Brain-Flueue, tôi bắt đầu liệt kê các giá trị khi Brain-Flueue nhìn thấy chúng.

# 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

Các 'trick'trong PowerShell tạo ra một chuỗi và lá nó trên các đường ống dẫn. Các #bắt đầu bình luận, vì vậy chương trình hoàn thành và tiềm ẩn Write-Outputintrick .

Trong Foo, (Thử trực tuyến!) , Việc 'trick'bị bỏ qua, #nguyên nhân khiến chương trình ngủ trong 0vài giây (vì không có gì ở con trỏ của mảng), sau đó "treatbắt đầu một chuỗi. Vì đạt được EOF, nên có một ẩn "ý để đóng chuỗi và được in thành thiết bị xuất chuẩn.


Cũng hoạt động trong J / Foo.
Conor O'Brien

@ ConorO'Brien Giải thích có giống nhau không? Tôi chưa bao giờ sử dụng J và tôi không quen với nó.
admBorkBork

Không, điều này không hoạt động trong J. #là chức năng sao chép và nó chỉ lấy các đối số trái phức tạp không âm, không phải chuỗi. Biểu tượng bình luận làNB.
Adám

@ Adám phải không bạn. Quên#
Conor O'Brien

9

PHP / Perl, 28 byte

print defined&x?trick:treat;

defined&x
đưa ra một cái gì đó trung thực trong PHP (không biết tại sao, nhưng nó có).
Trong Perl, nó kiểm tra nếu chức năng xđược xác định - không.
-> tricktrong PHP, treatbằng Perl.


@jmathews Bạn đã thử đặt một ký tự điều khiển backspace vào phiên bản windows của mình chưa? Thế còn CLS?
Tít

`là giá trị trung thực của định nghĩa & x hoặc d & x, hãy hỏi tôi không phải bạn nhận được
Jörg Hülsermann
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.