เคล็ดลับหรือรักษาพูดได้หลายภาษา


160

ตั้งแต่วันฮัลโลวีนกำลังจะมาถึงฉันคิดว่าฉันอาจเริ่มต้นการแข่งขันกอล์ฟสนุก ๆ

ความท้าทายค่อนข้างง่าย คุณต้องเขียนโปรแกรมที่ผลอย่างใดอย่างหนึ่งหรือtrick "บิด?" คุณอาจถาม ให้ฉันอธิบาย:treat

โปรแกรมของคุณต้องทำสิ่งต่อไปนี้:

  • สามารถคอมไพล์ / รันได้ในสองภาษาที่ต่างกัน ภาษาเดียวกันที่ต่างกันจะไม่นับ
  • เมื่อคุณเรียกใช้โปรแกรมในภาษาหนึ่งที่ควรเอาท์พุทtrickและอื่น ๆ treatควรเอาท์พุท กรณีที่ไม่เกี่ยวข้องและ padding สตริงที่มีตัวอักษรช่องว่างได้รับอนุญาต (ดูตัวอย่าง)
  • นี่คือดังนั้นการแก้ปัญหาด้วยจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ

คำอธิบายเล็กน้อย:

เอาท์พุทที่ถูกต้อง (สำหรับคำที่ไม่ใช้สำหรับรันโค้ดในสองภาษารวมทั้งเพิ่มเครื่องหมายคำพูดเพื่อส่งสัญญาณการเริ่มต้นหรือจุดสิ้นสุดของเอาต์พุตอย่ารวมไว้ในโซลูชันของคุณ!):

"trick"

"Treat"

"    TReAt"

"
     tRICk          "

เอาต์พุตไม่ถูกต้อง :

"tri ck"

"tr
eat"

"trck"

ฉันสนใจที่จะเห็นสิ่งที่คุณสามารถเกิดขึ้นกับ! มีความสุขในการเล่นกอล์ฟ!

ฉันต้องการที่จะทราบว่านี่เป็นความท้าทายครั้งแรกของฉันดังนั้นหากคุณมีข้อเสนอแนะเกี่ยวกับคำถามนี้โปรดทิ้งไว้ในรูปแบบของความคิดเห็น

ลีดเดอร์

นี่คือ Stack Snippet เพื่อสร้างทั้งกระดานผู้นำปกติและภาพรวมของผู้ชนะตามภาษา

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

# Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น

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

หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:

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

นอกจากนี้คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างกระดานแต้มนำ:

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


21
คำตอบเมตานี้ระบุว่าสามารถยอมรับได้ใกล้เคียงกันหากมีเหตุผลที่ดี ฉันเชื่อว่าความนิยมที่คำถามนี้ได้รับจากการเข้าใกล้ฮัลโลวีนนั้นเป็นเหตุผลที่ดีในตัวเองดังนั้นฉันจะโหวตให้เปิดใหม่อีกครั้ง ฉันไม่รังเกียจที่จะปิดมันหลังจากวันฮัลโลวีน (แต่ฉันไม่รู้ว่านี่จะเป็นสิ่งที่ดีหรือไม่)
แอรอน

2
@ mbomb007 นี่คือที่ซ้ำกันของสิ่งที่ ?
TRiG

3
ไม่ซ้ำกันแน่นอน สิ่งเดียวที่เหมือนกันกับอีกอันหนึ่งก็คือมันเป็นความท้าทายหลายภาษาที่มีเอาต์พุตที่ระบุ
Brian Minton

3
... 3 หน้า ... ฉันจริงๆคิดว่านี้จะได้รับจำนวนมากของกิจกรรมเป็นไปตามมูลค่าปัจจุบันของตัวแปรตามฤดูกาล
wizzwizz4

2
เป็นคำถามที่ยอดเยี่ยมมาก! ฉันชอบที่คำตอบบางคำให้ความสว่างและใช้ประโยชน์จากความเรียบง่ายของรหัสเศษเล็กเศษน้อยหมายถึงสิ่งที่แตกต่างในภาษาต่าง ๆ - เช่นความจริง / ความผิดพลาดและความสัมพันธ์ของผู้ประกอบการที่ประกอบไปด้วยไตรภาค
Don Hatch

คำตอบ:


145

2sable / pl , 8 ไบต์

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

ทั้งสองโปรแกรมได้รับการทดสอบแบบโลคัลด้วยไฟล์ 8 ไบต์เดียวกันดังนั้นนี่คือรูปหลายเหลี่ยมที่เหมาะสม

2sable: เคล็ดลับ

นี้เป็นโปรแกรมในรหัสหน้า 1252

treat“ÐË

ลองออนไลน์!

พี: รักษา

นี้เป็นโปรแกรมในรหัส 437

treatô╨╦

ลองออนไลน์!

มันทำงานอย่างไร

2sable: เคล็ดลับ

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

พี: รักษา

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
แต่ฉันต้องยอมรับว่าคำตอบนี้ไร้สาระธรรมดา! อะไรต่อไป? คำตอบที่สั้นกว่าคำพูดของตัวเองเหรอ?
BrainStone

45
คำตอบนี้น่าประทับใจอย่างยิ่ง มันวิเศษมากที่คุณสามารถเขียนโปรแกรมให้สั้นกว่าความยาวของคำสองคำ
DJMcMayhem

1
ฮะ? เหล่านี้คือ 2 โปรแกรม
FireCubez

1
@FireCubez มันเป็นรหัสเดียวกันไบต์ต่อไบต์ การแสดงภาพนั้นแตกต่างกันไปในแต่ละเพจ
Dennis

200

Python / Windows Batch ขนาด 25 ไบต์

print"trick"#||echo.treat

ทุกอย่างหลังจากที่ # ถูกตีความว่าเป็นความคิดเห็นโดยหลามในขณะที่ || เป็นชุดคำสั่ง OR ที่บอกว่าคำสั่งก่อนหน้านี้ล้มเหลวให้รันคำสั่งนี้

ฉันชอบการใช้ OR เพราะมันเกือบจะอ่าน "เคล็ดลับหรือรักษา" :)


33
TBH ฉันลงคะแนนเพียงเพื่อความคิดเห็นเกี่ยวกับ OR
Jmons

7
TBH ฉันไม่เคยคาดหวังว่าโพสต์แรกของฉันที่นี่จะได้รับ 65 upvotes :)
nephi12

11
TBH ช่วยให้ไม่เพียง แต่พูดถึง upvotes มันไม่ใช่ Quora
S Andrew

3
@ SAndrew ในฐานะสมาชิกใหม่ของชุมชนนี้ฉันไม่ได้คาดหวังว่าจะได้รับการโพสต์ซึ่งจะได้รับการตอบรับที่ดีในไม่ช้าและฉันยินดีที่ได้มีส่วนร่วม ฉันไม่ได้พยายามคุยโวโปรดอย่าเข้าใจผิด ฉันมีความสุขจริงๆที่ได้รับอย่างดีเหมือนฉันใหม่มาก ขอบคุณที่คุณแสดงความคิดเห็น :)
nephi12

2
ความเห็นของชุมชน @YotamSalmon บอกว่า STDERR ถูกละเว้นโดยค่าเริ่มต้น พิจารณาเฉพาะ STDOUT 2>nulลองคำสั่งอีกครั้งกับ
Conor O'Brien

153

ช่องว่าง / Starry, 135 ไบต์

นี่คือท้องฟ้ายามค่ำคืนที่ชัดเจนในวันฮาโลวีน!

  + + + + + 
    +

* + + * + *

   + *           
     + +        

 + * +   



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

โปรดทราบว่าช่องว่างในบรรทัดว่างอาจไม่ถูกรักษาไว้หากคุณคัดลอกจากรหัสข้างต้น

ช่องว่างส่งออก "TRICK" ลองออนไลน์!
เอาต์พุต Starry "TREAT" ลองออนไลน์!

คำอธิบาย

แจ่มจรัส

Starry ละเว้นแท็บและบรรทัดใหม่ทั้งหมดดังนั้นโค้ดที่อ่านจะเป็นดังนี้

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

ในทางตรงกันข้ามค่าการกดมีราคาแพงมากเมื่อเทียบกับการดำเนินการสแต็กและเลขคณิตใน Starry รหัสเริ่มต้นด้วยการผลักดันและทำซ้ำ 4 และดำเนินการกับจำนวนของการดำเนินการและมี 2 และ 1 ผลักดันในภายหลังในการผลิตค่า ASCII ที่จำเป็นทั้งหมด

รหัสข้อเขียน

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)

ช่องว่าง

ตามชื่อที่แนะนำอาจช่องว่างแยกเฉพาะอักขระช่องว่างสามตัวเท่านั้นเว้นวรรคแท็บและขึ้นบรรทัดใหม่ ซึ่งแตกต่างจากดาวที่ช่องว่างเพียงแค่ผลักดันให้ค่า ASCII ของT, R, I, CและKและพิมพ์พวกเขา

รหัสข้อเขียน

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

การผสมผสานระหว่างการผลักและการพิมพ์นั้นได้รับการคัดเลือกตามเหตุผลด้านสุนทรียะเพียงอย่างเดียวเนื่องจากไม่มีผลต่อจำนวนไบต์


11
ท้องฟ้าที่สวยงามมาก
lois6b

8
นี่เป็นคำตอบที่ดีที่สุดดังนั้นความคิดสร้างสรรค์ ฉันตกใจกับความเฉลียวฉลาด และทักษะ ไชโย!
nephi12

137

ไฟล์ Linux ELF x86 / DOS .COM ขนาด 73 ไบต์

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

แหล่งที่มาของ 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

สิ่งนี้ใช้ความจริงที่ว่าส่วนหัวของเอลฟ์เริ่มต้นด้วย 7F 45 ซึ่งตีความว่าเป็นรหัส x86 นั้นเป็นการกระโดด

ชิ้นส่วนที่เกี่ยวข้องสำหรับ 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
ไชโย ไชโย
Draconis

9
ใจฉันเต้นรัว
John Keates

muppetlabs.com/~breadbox/software/tiny/teensy.htmlเป็นการอ่านที่ดีสำหรับทุกคนที่สนใจเคล็ดลับการทับซ้อนของส่วนหัวที่นี่
Sparr

4
นี่คือหนึ่งในคำตอบที่ดีที่สุดที่ฉันเคยเห็นในเว็บไซต์นี้ Codegolf เล็กน้อยกลายเป็นภาษาลึกลับที่สร้างขึ้นมาเพื่อการเล่นกอล์ฟมากกว่าคำตอบที่ฉลาด นี่คือสิ่งที่สวยงาม
Knetic

นี่คือสิ่งที่ดี
Gooseman

103

evil / ZOMBIE , 109 ไบต์

อีกคำตอบที่น่ากลัว!

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

ZOMBIEรหัสกำหนดvampireชื่อxfซึ่งเป็นงานเดียวที่fสามารถใช้งานได้ที่ instanciation และส่งออกจะครั้งเดียวก่อนที่จะถูกปิดการใช้งานโดยtrick stumbleอีกsayสายหนึ่งคือรหัสที่ตายแล้ว (เหมาะสมอย่างไร!) สำหรับZOMBIEแต่มีevilรหัสส่วนใหญ่

สำหรับevilที่xfชื่อเรียกร้องให้กระโดดต่อไปjซึ่งแจ๋วครางผีดิบที่ฝีมือและเอาท์พุทzuueeueeawuuwzaeeaeeaeawuuuuwzuueeueeaw treatรหัสต่อไปนี้จะถูกดำเนินการ (ตัวอักษรตัวพิมพ์เล็ก) หรือละเว้น แต่เนื่องจากwไม่มีการผลิตไม่ควรมีการผลิต


1
@KevinCruijssen ขอบคุณผมมีความสุขครั้งนี้จะได้รับในบางภาษาลึกลับน้อยที่รู้จักกัน :)
แอรอน

จากสี่คนที่คุณเคยใช้ฉันเคยเห็น Agony มาก่อนหน้านี้สองสามครั้งและฉันจำได้ว่าเคยเห็น ZOMBIE ครั้งเดียว ไม่เคยได้ยิน HashHell หรือชั่วมาก่อน :)
Kevin Cruijssen

ชุดฮาโลวีนนี้เป็นที่น่าประทับใจ! ฉันไม่เคยได้ยินแม้แต่สองภาษาเลย
ejfrancis

95

Python / Perl ขนาด 28 ไบต์

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

คำอธิบาย

เนื่องจาก[]เป็น ArrayRef ใน Perl มันเป็นความจริง แต่เป็นอาร์เรย์ว่างใน Python ดังนั้นจึงเป็นเท็จ


7
ในทำนองเดียวกันprint({}and"trick"or"treat")ใน Python / Lua
user200783

1
@ user200783 นั่นจะมีผลเหมือนกันใน Perl เช่นกันเนื่องจาก{}เป็น HashRef!
Dom Hastings

2
ก็เกือบจะเหมือนกันสำหรับ Python / Ruby แต่ต้องการพื้นที่ว่างเพิ่มเติม:print ([]and"trick"or"treat")
Value Ink

2
รักมัน! นี่เป็นคำอธิบายที่ยอดเยี่ยมเกี่ยวกับการแปลงเป็นบูลโดยนัยเพื่อการอ่าน
Don Hatch

นี่อาจเป็นรูปหลายภาษาใน Lua, Perl และ Python ถ้าใช่print({}and"trick"or"treat")!
ckjbgames

48

PHP / JavaScript, 32 30 ไบต์

แสดงtrickใน PHP และtreatใน JS

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

NaNค่าคงที่ที่ไม่รู้จักจะถูกแปลงเป็นสตริงโดย PHP ทำให้เป็นจริง มันผิดพลาดใน JS

ทางเลือกวิธี 38 ไบต์

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

ผู้ประกอบการที่ประกอบไปด้วยกันมีความสัมพันธ์ที่ถูกต้องใน JS:

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

และเชื่อมโยงด้านซ้ายใน PHP:

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

1
คุณพูดถูกฉันไม่ดี
กาเร็ ธ ปาร์คเกอร์

alert () เป็น JavaScript ใน HTML แต่ไม่ใช่ JavaScript จากคอนโซล
เตอร์ปีเตอร์

1
วิธีอื่น: '\ 0' == "\ 0"? die (เคล็ดลับ): การแจ้งเตือน ('จัดการ'); `
Ismael Miguel

3
การดีบักตัวดำเนินการประกอบไปด้วยโซ่ใน PHP ต้องสนุกมาก
Robert Fraser

3
@ Robert การดีบักทุกอย่างใน PHP นั้นสนุกมาก
sampathsris

39

HTML / HTML + JavaScript ขนาด 53 ไบต์

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

treatเป็นเนื้อหาข้อความของเอกสารใน HTML
หาก JS ถูกเปิดใช้งานก็จะเข้ามาแทนที่เนื้อหา HTML trickด้วย


3
ทางออกที่น่าสนใจ ฉันชอบมัน
BrainStone

1
คุณควรใช้document.write()แทน -8 ไบต์
darrylyeo

@darrylyeo document.writeจะไม่แทนที่เอาต์พุต HTML แต่ต่อท้าย
ติตัส

1
ทดสอบใน Chrome ทำงานได้อย่างสมบูรณ์ การเปิดและปิดจาวาสคริปต์จะเปลี่ยนเนื้อหาเมื่อรีเฟรช
Tatarize

@ Tatarize: ทดสอบใน Firefox 49, Opera 41, Safari 5.0, Chrome 54, Edge 38 บน Windows, Firefox 5.3 และ Safari 5.0 บน iOS, Firefox 49 และ Dolphin 11.5 บน Android Firefox เท่านั้นบน Windows แทนที่ คนอื่น ๆ ทั้งหมดผนวก
ติตัส

33

C / Java 7, 165 155 128 123 122 120 103 ไบต์

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

// \ ทำให้บรรทัดถัดไปแสดงความคิดเห็นใน C แต่เป็นความคิดเห็นหนึ่งบรรทัดปกติใน Java ดังนั้นคุณสามารถสร้างโค้ดที่ละเว้น C สำหรับ Java และโดยการเพิ่ม / * ในบรรทัดที่สองคุณสามารถสร้างข้อคิดเห็นสำหรับ Java ที่เป็น แยกวิเคราะห์เป็นรหัสโดย C.

แก้ไข: ฉันปรับปรุงให้ดีขึ้นเล็กน้อยโดยจัดระเบียบเส้นและความคิดเห็นใหม่

แก้ไข 2: ฉันทำการจัดระเบียบใหม่และลดให้สั้นลงอีก

แก้ไข 3: ฉันได้เพิ่มการแก้ไขที่แนะนำโดย BrainStone เพื่อลบ 5 ไบต์ขอบคุณ :)

Edit4: หนึ่งบรรทัดใหม่กลายเป็นสิ่งที่ไม่จำเป็นดังนั้นฉันจึงลบมัน

Edit5: ฉันเปลี่ยน printf เพื่อใส่

แก้ไข 6: ฉันเพิ่มการแก้ไขที่แนะนำโดย Ray Hamel


1
คุณสามารถปลอดภัย 1 ไบต์โดยการเปลี่ยน C ถึง C ++ และแทนที่ด้วย#include<stdio.h> #include<cstdio>ไม่มากยกเว้นไบต์เป็นไบต์ และนอกจากนี้การลบint infront ของmainจะปลอดภัย 4 ไบต์ intมีความหมายโดย C และ C ++
BrainStone

ขอขอบคุณฉันปรับเปลี่ยนรหัสตามคำแนะนำของคุณ :)
I_LIKE_BREAD7

1
ดี! ผมมีช่วงเวลาที่ยากขึ้นมาพร้อมกับบางสิ่งบางอย่างสำหรับ Java และจบลงด้วยJava 7 + ช่องว่างตัวเอง Btw คุณสามารถตีอีกหนึ่งไบต์ด้วยการลบพื้นที่String[]sออก
Kevin Cruijssen

29

Jolf + Chaîneขนาด 12 ไบต์

เนื่องจากChaîneไม่สามารถยอมรับไฟล์ที่จะอัพโหลดพร้อมการเข้ารหัสผมถือว่า UTF-8 (ถ้าฉันสามารถใช้ ISO-8859-7 ได้จะเป็น 11 ไบต์ แต่นั่นไม่ยุติธรรมเลย)

trick«treat

ในChaîne «เริ่มต้นแสดงความคิดเห็นและส่วนที่เหลือจะถูกพิมพ์คำต่อคำ ใน Jolf «เริ่มต้นสตริง โชคดีที่trickไม่มีอะไรที่เป็นอันตราย ( 10; range(input, parseInt(input))โดยทั่วไป) และtreatถูกพิมพ์ออกมา

ลอง Jolf ที่นี่!

ลองChaîneที่นี่!

พวกเขาทำงานบนเบราว์เซอร์ของฉัน (Firefox รุ่นล่าสุด) แต่ไม่สามารถพูดได้เหมือนกันสำหรับเบราว์เซอร์อื่น


2
ฉันคิดว่าการเป็นคลังของภาษาที่คลุมเครือหลายอย่างมีประโยชน์ ...
Conor O'Brien

1
ยินดีที่ได้เห็นว่าเราใกล้ชิดกับคนใจบุญมากเพียง แต่พูดออกมาตามคำพูดของพวกเขาเท่านั้น trผมสงสัยว่าถ้าใครสามารถนำมาใช้ใหม่
BrainStone

1
@BrainStone ส่วนตัวผมสงสัยว่าtrสามารถนำกลับมาใช้ในสนามกอล์ฟใด ๆ - มันเป็นข้อมูลเล็ก ๆ น้อย ๆ ที่จะต้องใช้เวลาอย่างน้อยผู้ประกอบการในการเข้ารหัสในภาษากอล์ฟแล้วตามเงื่อนไขเฉพาะภาษา มันอาจจะยาวถึงความยาวเท่ากันหรือนานกว่านั้นก็ได้ อย่างไรก็ตามนั่นเป็นเพียงการคาดเดาของฉัน;)
Conor O'Brien

มาหาคำตอบกัน แต่ฉันต้องยอมรับ จำนวนไบต์ 10 หรือน้อยกว่านั้นจะเสียสติ!
BrainStone

@BrainStone ขนาด 8 ไบต์: codegolf.stackexchange.com/a/97580/5011
SeanC

27

#hell / Agony , 43 ไบต์

มาก><>ทุกที่นี่คือสิ่งที่ท้าทาย April Fools? นี่คือคำตอบสำหรับภาษาที่มีธีมที่เหมาะสม

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

#hellเป็นชุดย่อยLUAที่โชคดีรับio.writeสายเรียกเข้า เราใช้LUA's --ความคิดเห็นเพื่อที่จะดำเนินการเฉพาะส่วนนี้

Agonyเป็นBrainfuckอนุพันธ์ซึ่งมีลักษณะพิเศษที่จะมีรหัสและหน่วยความจำที่ใช้งานได้ในเทปเดียวกัน บรรทัดแรกพิมพ์เพียง 5 ตัวอักษร (10 เซลล์) จากส่วนท้ายของรหัสซึ่งฉันเข้ารหัสtreatเป็นAgonyคำสั่ง LUAการเปิดความคิดเห็น--จะปรับเปลี่ยนค่าของเซลล์ที่ไม่ได้ใช้


ฉันต้องบอกว่าธีมฮาโลวีนของคุณนั้นดีที่สุดสำหรับฉัน สร้างสรรค์มาก!
BrainStone

@BrainStone ขอบคุณฉันสนุกที่ได้ทำมัน!
แอรอน

27

Cubix / Hexagony , 31 ไบต์

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

หลอกมัน! รักษามันออนไลน์!

ฮัลโลวีแกน ? บันทึกข้อเท็จจริงที่น่ากลัวเกี่ยวกับภาษาเหล่านี้และรหัส:

  1. หากและถึงแม้ว่าคุณจะไม่ทำอะไรเลย (แค่ใส่ไม่มีตัวเลือก) คุณจะไม่มีทางหลุดจากลูปที่ตั้งใจจะทำงานตลอดไป ...
  2. และติดอยู่ตรงกลางของภาษาโปรแกรม 3D และ 2D (โอ้ความเจ็บปวด ... )
  3. ภายในมิติคุณจะค่อยๆหายไปในที่ที่คุณอยู่ ... คุณอยู่ที่ไหน ...
  4. และมี=v=รอยยิ้มให้คุณซึ่งทำหน้าที่ที่ไม่มี ops ในรหัส

มาขุดความลึกลับของโปรโตคอลการสื่อสารขนาด 31 ไบต์ที่ซ่อนอยู่ของมิติและความหวาดกลัว ...

เคล็ดลับ

เมื่อโค้ดย่อหรือขยายตัวเอง ... นั่นคือcubifiedเลย์เอาต์จะเป็นดังนี้:

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

และส่วนหลักคือส่วนนี้อยู่ตรงกลาง:

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

มันดันk,c,i,r,tไปที่สแต็คและoเอาท์พุทและ;ปรากฏภายในวงที่ล้อมรอบด้วยแผ่นสะท้อนแสงและ?ซึ่งจะแนะนำคุณขึ้นอยู่กับค่าที่ด้านบนของสแต็ค ...

รักษา

ทันใดนั้นโค้ดก็เปลี่ยนจากลูกบาศก์เป็นรูปหกเหลี่ยม (ลองจินตนาการว่า)

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

และส่วนหลักคือส่วนนี้:

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

มันทำงานt;ที่พิมพ์tและกระทบกระจกและเปลี่ยนทิศทางเป็น NW เริ่มต้นจากมุม SE และกระทบกระจกอื่น นี้จะทำงานr;และ wraps ไปe;_aและ]นำมันไปสอนชี้ 1 ซึ่งเริ่มต้นที่มุมทิศตะวันออกเฉียงเหนือชี้ SE และเพลงฮิต/ซึ่งสะท้อนให้เห็นในแนวนอนเพื่อแล้ว;t

จากนั้นก็จะตัดไป=, ;และ@ลงท้ายระเบียบ

ดังนั้น ... กำลัง_ทำอะไรอยู่ที่นั่น?

ทำไมมันอยู่ในt e a(ตัวอักษร 3 ตัวแรกในรหัส)?

นี่คือจุดสิ้นสุดของเรื่องราว -

มันไม่ทำอะไรเลย

เสียงเหมือนตอนจบของหนังสยองขวัญหรือไม่?


ดีมากดีมาก! เป็นการยากที่จะสร้างหลายภาษาจากสองภาษา 2D ฉันชอบเรื่องราวสยองขวัญที่สอดคล้องกับมัน;)
ETHproductions

ไม่แน่ใจว่าคำตอบนี้หรือ ELF / .COM น่าประทับใจกว่าหรือไม่ เยี่ยมมาก!
วาล

24

SQL / Javascript, 54 ไบต์

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

วิธีการเดียวกับคำตอบ QB / JSของฉัน: บรรทัดแรกมีคำสั่ง SQL บรรทัดที่สองมี 'ความคิดเห็น' สำหรับ SQL และ NOP สำหรับ JS จากนั้นเราจะกำหนดselectคำสั่งของ SQL เป็นฟังก์ชัน JS ที่ถูกต้อง


3
นั่นเป็นวิธีที่ชาญฉลาดมากในการรวมสองภาษานี้ มี +1!
ETHproductions

22

/Brainf..k/, 143 + 3 = 146 ไบต์

คำตอบนี้ต้องการให้-Aแฟล็กเอาท์พุทใน ASCII สำหรับ Brain-Flak และโชคดีที่ Brainfuck ไม่สนใจเกี่ยวกับแฟล็กนั้นดังนั้นจึงไม่มีผลต่อเอาต์พุตใน Brainfuck

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

ลองออนไลน์!

ลองออนไลน์!

มันทำงานอย่างไร

ทับซ้อนระหว่างไวยากรณ์ของ Brain-Flak และ brainfuck <>[]ที่มีตัวละคร สำหรับความสะเพร่าของสมองสิ่งนี้ส่วนใหญ่หมายถึงโปรแกรมจะต้องตรวจสอบให้แน่ใจว่ามีสวิตช์จำนวน<>มาก และสำหรับ Brainfuck สิ่งนี้หมายความว่าเราต้องหลีกเลี่ยงการวน[]ซ้ำที่เกิดจากการใช้งานของMonad

รหัส Brain-Flak มีดังนี้:

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

นอกเหนือจาก[<<...>>]บิตที่อยู่ตรงกลางและ<[<>]<>[<>]<>>ในตอนท้ายโค้ดนี้ก็ถือว่าเป็นเรื่องที่ดีสำหรับหลักสูตรเท่าที่โปรแกรม Brain-Flak ดำเนินไป ลบรอบศูนย์ ( [<...>]) เพื่อสร้างวนรอบสำหรับ Brainfuck ด้านใน<...>จะใช้เพื่อย้าย Brainfuck ไปยังเซลล์ว่างก่อนที่จะพบสิ่ง[][][][]ที่จะวนซ้ำอย่างอื่น

รหัส Brainfuck มีดังนี้:

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

นอกเหนือจากบิตที่กล่าวมาแล้วนี่เป็นโปรแกรมมาตรฐานที่สวยงามดังนั้นฉันจะให้รายละเอียดแก่คุณ


ฉันชอบอันนี้: D
Conor O'Brien

9
มีเป็นจำนวนมากมากกว่าสองภาษาที่ตรงกับ regex ไม่/brainf..k/ดังนั้นคุณควรใช้รูปแบบหัวเดียวกับคนอื่น
mbomb007

13
@ mbomb007 เพียงภาษาอื่นที่ฉันสามารถหาที่เหมาะกับ regex นี้อยู่brainfork สะดวกเมื่อทำงานในสมองมันพิมพ์ "TRICK" ดังนั้นฉันจะออกจาก regex ในขณะนี้
Sriotchilism O'Zaic

For brain-flak this mostly means the program has to ensure an even number of stack switchesคุณแน่ใจหรือไม่ มันไม่สำคัญว่า<>จะเป็นเพราะNOP ใน brainfuck
DJMcMayhem

@DJMcMayhem มันจะต้องจบลงใน stack เดียวกันเราใส่ทุกอย่างมิฉะนั้นจะไม่พิมพ์อะไรเลย
Sriotchilism O'Zaic

21

> <> / ตกปลา , 38 ไบต์

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

เพื่อประโยชน์ในการทำ a ><>/ Fishingpolyglot

มันเป็นFishingรหัสชิ้นแรกของฉันหลังจากเล่นมานาน><>แล้ว
ความประทับใจครั้งแรกของฉัน: ตามธรรมชาติแล้วชาวประมงมีความสามารถทางร่างกายน้อยกว่าคำอธิษฐาน แต่ใช้เครื่องมือเป็นเครื่องมือ!

ที่นี่รหัสง่ายมาก: ><>จะดำเนินการบรรทัดแรกเท่านั้นซึ่ง_เป็นกระจกแนวตั้งและไม่มีผลตั้งแต่ปลาเริ่มว่ายในแนวนอน เพียงแค่กดtrickลงบนสแต็กจากนั้นพิมพ์ก่อนหยุด
สำหรับFishingการ_สั่งลงไป ชาวประมงจะติดตามดาดฟ้าที่เป็นเส้นที่สองในขณะที่จับตัวละครของบรรทัดที่สาม สิ่งเหล่านี้จะดันtreatเทปจากนั้นพิมพ์หยุดเมื่อถึงจุดสิ้นสุดของสำรับ

หากได้รับอนุญาตให้แก้ไขข้อผิดพลาดคุณสามารถลงไปที่ 35 ไบต์ด้วยรหัสต่อไปนี้ซึ่งจะทำให้เกิดข้อผิดพลาดเมื่อทำงาน><>ทันทีที่trickพิมพ์ออกมาจากสแต็ก:

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

คุณควรตรวจสอบคำตอบภาษาที่มีธีมของฉัน#hell / Agonyและevil / ZOMBIE !


อ๊ะฉันอยากจะสร้างปลา / ชาวประมงหลายภาษา :) คุณชนะฉันไปแล้ว ทำได้ดีนี่!
Emigna

+1 สำหรับ " ตามธรรมชาติชาวประมงมีความสามารถทางกายภาพน้อยกว่าคำอธิษฐาน แต่ใช้เครื่องมือเป็นเครื่องมือ! "
Kevin Cruijssen

20

05AB1E / จริง 10 ไบต์

"trick"’®Â

คำอธิบาย

05AB1E

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

ลองออนไลน์

แท้จริง

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

ลองออนไลน์


คุณจะรู้ว่าฉันชัดเจนสามารถอ่านtrickแต่เป็นวิธีการ’®Âรักษา .. ?
เควิน Cruijssen

1
ตอนนี้ผู้คนรู้จักคุณสมบัตินี้แล้ว ครั้งต่อไปเราจะได้รับคำถามเช่น " hQq3k หรือ bvM; p polyglot " ...
jimmy23013

3
@KevinCruijssen: '®ถูกแปลว่า "ใช้คำที่มีดัชนี 3757 จากพจนานุกรม" ซึ่งก็คือ "ถือว่า"
Emigna

@Emigna ตกลง ... ดังนั้นคำทั้งหมด ~ 1.1M ที่สามารถเข้าถึงได้ใน 05AB1E หรือไม่
Kevin Cruijssen

1
@KevinCruijssen: ไม่มีทั้งหมด 10k (แต่ละตัวมีอักขระ 2 ตัว) คุณสามารถค้นหารายชื่อทั้งหมดที่นี่
Emigna

16

Haskell / ML มาตรฐาน 56 ไบต์

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

มุมมอง Haskell

อัฒภาคอนุญาตให้มีการประกาศหลายรายการในหนึ่งบรรทัดและทำหน้าที่เหมือนกับการกระจายบรรทัดดังนั้นเราจึงได้รับ

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

โปรแกรม Haskell จะถูกดำเนินการโดยการเรียกmainฟังก์ชั่นดังนั้นในแถวสุดท้ายจะถูกดำเนินการที่เพิ่งพิมพ์putStr"trick" สองแถวแรกจะถูกตีความเป็นประกาศฟังก์ชันต่อไปนี้รูปแบบ ดังนั้นในแถวแรกฟังก์ชั่นที่มีชื่อถูกประกาศซึ่งจะใช้เวลาสองอาร์กิวเมนต์ที่มีชื่อและร่างกายและฟังก์ชั่น นี่เป็นฟังก์ชั่น Haskell ที่ใช้ได้กับประเภทซึ่งหมายความว่าต้องใช้อาร์กิวเมนต์ของประเภทที่กำหนดเองและหนึ่งในประเภทที่สองจากนั้นส่งคืนการกระทำ IO ประเภทและไม่สำคัญเนื่องจากไม่ได้ใช้อาร์กิวเมนต์ในเนื้อหาของฟังก์ชัน ประเภทการกระทำของ IO เป็นผลมาจากซึ่งพิมพ์ไปยัง StdOut (สังเกตว่าเป็นสาเหตุtrick
<functionName> <argumentName1> ... <argumentNameN> = <functionBody>funputStrxprint"treat"fun :: t -> t1 -> IO ()tt1tt1print"treat""treat""putStrแทนที่จะprintใช้ในmain) อย่างไรก็ตามในขณะที่มันเป็นเพียงการประกาศฟังก์ชันไม่มีอะไรจะพิมพ์เป็นจริงไม่ได้เรียกว่าในfun เช่นเดียวกับที่เกิดขึ้นในบรรทัดที่สองเป็นฟังก์ชั่นการประกาศซึ่งจะมีการโต้แย้งโดยพลการตั้งชื่อและส่งกลับหน่วยที่ tuple ประเภทของมันคือ(ทั้งค่าและประเภทของหน่วยจะแสดงด้วย) main
val main=();valmain()val :: t -> ()()

ลองใช้กับ Ideone


มุมมอง ML มาตรฐาน

ML มาตรฐานเป็นภาษาที่ใช้งานได้เป็นหลักโดยมีไวยากรณ์ที่เกี่ยวข้อง แต่ไม่เหมือนกับ Haskell โดยเฉพาะอย่างยิ่งการประกาศฟังก์ชั่นจะนำหน้าด้วยคำหลักfunหากพวกเขารับข้อโต้แย้งใด ๆ และคำหลักvalถ้าพวกเขาไม่ นอกจากนี้ยังเป็นไปได้ที่จะมีการแสดงออกในระดับสูงสุด (หมายถึงไม่ได้อยู่ในการประกาศใด ๆ ) ซึ่งจะถูกดำเนินการเมื่อโปรแกรมถูกเรียกใช้ (ใน Haskell เขียน1+2นอกประกาศโยนnaked expression at top level-error) ในที่สุดสัญลักษณ์สำหรับการทดสอบความเท่าเทียมกันนั้น=แทนที่จะเป็น==ใน Haskell (มีความแตกต่างอีกมากมาย แต่เป็นสิ่งเดียวที่สำคัญสำหรับโปรแกรมนี้)
ดังนั้น SML จึงเห็นการประกาศสองครั้ง

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

ตามด้วยการแสดงออก

main=putStr"trick"

ซึ่งมีการประเมินแล้ว เพื่อตรวจสอบว่าmainเท่ากับputStr"trick"ทั้งสองฝ่ายจะต้องมีการประเมินและทั้งสองจะต้องมีประเภทเดียวกันเป็น SML (เช่นเดียวกับ Haskell) จะถูกพิมพ์แบบคงที่ ให้เราดูที่ด้านขวาก่อน: putStrไม่ใช่ฟังก์ชันไลบรารีใน SML แต่เราประกาศฟังก์ชั่นที่มีชื่อputStrในบรรทัดfun putStr x=print"treat";- มันใช้อาร์กิวเมนต์x(นี่คือสตริง"trick"ในกรณีของเรา) และลืมมันทันทีอีกครั้งเพราะมัน ไม่ได้เกิดขึ้นในร่างกายของฟังก์ชั่น จากนั้นร่างprint"treat"จะถูกประหารชีวิตซึ่งพิมพ์treat(โดยไม่ต้องปิดล้อม"SML printนั้นแตกต่างจากของ Haskell print)
printมีประเภทstring -> unitดังนั้นจึงputStrมีประเภทa -> unitและputStr"trick"มีเพียงประเภทunit. เพื่อที่จะพิมพ์ได้ดีmainต้องมีประเภทunitด้วย ค่าของหน่วยเป็น SML เหมือนกับใน Haskell ()ดังนั้นเราจึงประกาศval main=();และทุกอย่างถูกพิมพ์อย่างดี

ลองใช้ใน codingground
หมายเหตุ: ผลลัพธ์ในคอนโซลคือ

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

เพราะในSML \ NJค่าและประเภทของทุกคำสั่งจะแสดงหลังจากการประกาศแต่ละครั้ง ดังนั้นก่อนประเภทของputStrและmainมีการแสดงแล้วการแสดงออกที่ได้รับการประเมินผลก่อให้เกิดการtreatที่จะพิมพ์แล้วค่าของการแสดงออก ( trueเป็นทั้งสองด้านของ=มี()) ถูกผูกไว้กับตัวแปรผลโดยปริยายitซึ่งเป็นแล้วยังปรากฏ


1
ผมคิดเสมอว่าเป็นน้ำตาลประโยคสำหรับfun ... ... = val rec ... = fn ... =>แต่อีกครั้งมันเป็นเวลาหลายสิบปีแล้วที่ฉันใช้ ML
Neil

@ Neil คุณพูดถูกต้องfunมันคือน้ำตาลซินแทคติคสำหรับฟังก์ชั่นที่ไม่ระบุตัวตนที่ถูกผูกไว้กับval( recจำเป็นเฉพาะเมื่อฟังก์ชั่นซ้ำ) และดังนั้นสูตร "ต้องนำหน้า" เลือกไม่ดีฉันจะแก้ไขคำตอบ โดยทั่วไปแล้วการใช้งานfunเป็นแนวปฏิบัติที่ดีที่สุดโดยเฉพาะในการตีกอล์ฟ
Laikoni

15

ทับทิม / C 64 62 51 48 ไบต์

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

สิ่งที่ทับทิมเห็น:

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

tapวิธีการใช้เวลากระชากและดำเนินการเพียงครั้งเดียว มันเป็นตัวบ่งชี้สั้น ๆ ที่เราสามารถสร้าง#defineมาโครสำหรับใน C มันยังช่วยให้เราใส่บล็อกที่ล้อมรอบวงเล็บในรหัสที่ใช้ร่วมกันแม้ว่าทับทิมไม่อนุญาตให้{}s ในบริบทส่วนใหญ่

ค่า falsy เฉพาะในทับทิมมีและfalse nilโดยเฉพาะอย่างยิ่ง 0 คือความจริง ดังนั้นทับทิมจะพิมพ์ "เคล็ดลับ"

สิ่งที่ C เห็น (หลังจากตัวประมวลผลล่วงหน้า):

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

0 เป็นเท็จใน C ดังนั้น C จะพิมพ์ "ถือว่า"

บันทึก 2 ไบต์ขอบคุณ daniero


1
ดี คุณสามารถใช้putsแทนprintfการบันทึกสองไบต์
daniero

ขอบคุณ! ฉันคุ้นเคยกับการใช้printfใน C เสมอฉันลืมไปว่ามันมีputsฟังก์ชั่น
m-chrzan

สองแนวคิด: คุณใช้สิ่งที่สั้นกว่านี้ได้tapหรือไม่ และทำไมคุณไม่กำจัดช่องว่าง? p ? "trick":"treat"=>p?"trick":"treat"
BrainStone

tapจริง ๆ แล้วมีจุดประสงค์สองประการ มันเป็นตัวบ่งชี้สั้น ๆ สำหรับ#defineใช้ยึด แต่มันก็ช่วยให้ฉันสามารถใส่เครื่องมือจัดฟันโดยตรงในรหัส Ruby {}บล็อกในทับทิมไม่ทำงานเหมือนที่พวกเขาทำใน C และภาษาที่คล้ายกัน แต่tap ไม่ใช้บล็อกและดำเนินการเพียงครั้งเดียว
m-chrzan

pชื่อวิธีในรูบีสามารถจบด้วยเครื่องหมายคำถามเพื่อให้พื้นที่มีความจำเป็นหลังจากที่ เป็นตัวละครที่ตัวอักษรเพื่อให้พื้นที่มีความจำเป็นหลังจากที่?<character> ?
m-chrzan

15

QBasic / JavaScript, 51 44 ไบต์

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

ใน QBasic มันจะพิมพ์บรรทัดที่สองและไม่ดำเนินการบรรทัดแรกเนื่องจากเชื่อว่าเป็นความคิดเห็น (ขอบคุณ ') ใน JS ก็เรียก PRINT ฟังก์ชั่นซึ่งถูกกำหนดในบรรทัดแรกขวาหลังจากที่ JS '';NOP


1
วิธีการที่ฉลาดมาก!
BrainStone

14

ShapeScript / Fooขนาด 13 ไบต์

'trick'"treat

ลองออนไลน์! เคล็ดลับ | รักษา

มันทำงานอย่างไร

ShapeScript เป็นตัวแยกวิเคราะห์โดยตัวละคร เมื่อ EOF ถูกโจมตีโดยไม่ต้องเผชิญหน้ากับคำพูดปิดจะไม่มีสิ่งใดถูกผลักลงบนสแต็ก 'trick'จะผลักสตริงภายในเครื่องหมายคำพูดซึ่งพิมพ์ไปยัง STDOUT โดยปริยาย

ฟูไม่มีคำสั่งใด ๆ ที่กำหนดให้กับตัวละคร'trick'ดังนั้นส่วนนั้นจึงถูกละเว้นอย่างเงียบ ๆ อย่างไรก็ตามมันจะพิมพ์อะไรระหว่างเครื่องหมายคำพูดคู่ทันทีถึง STDOUT แม้ว่าการเสนอราคาปิดจะหายไป


14

Ruby / Perl, 21 ไบต์

print"trick"%1||treat

Perl

คำนวณ"trick" % 1ซึ่งเป็น0 % 1เพื่อ||ส่งtreatไปprintแทนตั้งแต่ Perl ยอมรับ barewords

ทับทิม

จัดรูปแบบสตริง"trick"ด้วยอาร์กิวเมนต์1ซึ่งส่งผล"trick"ให้เกิดความจริงดังนั้นจึง||ไม่ถูกประมวลผล


14

MATL / CJam 17 ไบต์

'TRICK'%];"TREAT"

ใน MATL ผลลัพธ์ TRICKนี้ ใน CJam มันเอาท์พุท TREAT

คำอธิบาย

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

คุณไม่มีอักขระ 3 ตัว! (EAT)
เลมอนที่ทำลายได้

@ ทำลายได้ขอบคุณแตงโม! แก้ไขแล้ว
Luis Mendo

ตอนนี้คุณหายไปสามในคำอธิบาย MATL!
เลมอนที่ถูกทำลาย

@ ทำลายแตงโม Aww ขอขอบคุณอีกครั้ง :-D
Luis Mendo

12

Jelly / plขนาด 12 ไบต์

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

นี้เป็นโปรแกรมที่แสดงโดยใช้หน้ารหัสของวุ้น

treatµ
“¡ṾI»

ลองออนไลน์!

นี้เป็นโปรแกรมที่แสดงโดยใช้รหัส 437

treat
⌂■␀║I√

ลองออนไลน์!

ทั้งสองโปรแกรมได้รับการทดสอบแบบโลคัลด้วยไฟล์ 12 ไบต์เดียวกันดังนั้นนี่คือรูปหลายเหลี่ยมที่เหมาะสม

มันทำงานอย่างไร

ใน Jelly ทุกบรรทัดจะกำหนดลิงก์ (ฟังก์ชั่น); บรรทัดสุดท้ายจะกำหนดลิงก์หลักซึ่งจะดำเนินการโดยอัตโนมัติเมื่อมีการเรียกใช้โปรแกรม ยกเว้นว่าโค้ดข้างหน้า7fไบต์สุดท้าย(linefeed ในหน้ารหัสของ Jelly) มีข้อผิดพลาดในการแยกวิเคราะห์ (ซึ่งจะยกเลิกการดำเนินการทันที) พวกมันจะถูกละเว้น บรรทัดสุดท้าย“¡ṾI»เพียงทำดัชนีลงในพจนานุกรมของ Jelly เพื่อดึงเอาเคล็ดลับคำซึ่งพิมพ์โดยนัยเมื่อสิ้นสุดโปรแกรม

ฉันไม่ค่อยรู้เรื่อง pl มากนัก แต่ดูเหมือนว่าล่ามจะดึงข้อมูลโค้ดเพียงบรรทัดเดียวและไม่สนใจทุกสิ่งที่เกิดขึ้นหลังจากนั้น เช่นเดียวกับ Perl, barewords ถือเป็นสตริงดังนั้นจึงtreatพิมพ์ออกมาอย่างแน่นอน


12

วัตถุประสงค์ -C / C, 50 ไบต์

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

Objective-C มีขนมและพิมพ์รักษาแต่ C ไม่ได้และพิมพ์เคล็ดลับ

มันทำงานอย่างไร

ฉันไม่รู้อะไรเกี่ยวกับObjective-Cมากนัก แต่มันทำในสิ่งที่เราคาดหวังอย่างสมเหตุสมผลในสถานการณ์นี้ นิยามของการputsไม่ส่งผลกระทบต่อการส่งออกเพราะเราไม่เคยเรียกฟังก์ชั่นและmainพิมพ์รักษาและ linefeed เพื่อ STDOUT

คุณอาจคาดหวังให้Cทำเช่นเดียวกัน แต่อย่างน้อย gcc 4.8, gcc 5.3 และ clang 3.7 ทำไม่ได้

เนื่องจากเราไม่ต้องการprintf จริง (ซึ่งใช้สตริงรูปแบบและอาร์กิวเมนต์เพิ่มเติม) และสตริงที่จะพิมพ์ลงท้ายด้วย linefeed เราจึงสามารถใช้putแทนได้ ทำให้เป็นที่เร็วกว่าเล็กน้อยprintf (ซึ่งมีการวิเคราะห์ข้อโต้แย้งของตนก่อนที่จะพิมพ์) ดังนั้นถ้าเรา redefine ฟังก์ชันprintfเป็นอย่างดีคอมไพเลอร์เพิ่มประสิทธิภาพและแทนที่การเรียกร้องให้printfด้วยการเรียกไปทำให้ คอมไพเลอร์ไม่ทราบว่าการเรียกด้วยอาร์กิวเมนต์จะพิมพ์เคล็ดลับแทนputs"treat"

ไม่รวมถึงstdio.hเป็นสิ่งสำคัญที่นี่เนื่องจากการกำหนดค่าputจะต้องใช้ชนิดเดียวกันกับที่มีอยู่ในไฟล์ส่วนหัว ( puts(const char*))

ในที่สุดก็เป็นที่น่าสังเกตว่าการเรียกไปยังprintfในทำให้ผ่านสตริงโดยไม่ต้องป้อนบรรทัดต่อท้าย มิฉะนั้นคอมไพเลอร์จะ "เพิ่มประสิทธิภาพ" ที่เรียกเช่นกันส่งผลให้เกิดความผิดพลาดในการแบ่งส่วน


10

ชุด / sh, 30 ไบต์

:;echo Treat;exit
@echo Trick

คำอธิบาย แบทช์เห็นบรรทัดแรกเป็นป้ายกำกับซึ่งจะละเว้นและดำเนินการบรรทัดที่สองซึ่งพิมพ์ Trick @ ระงับการสะท้อนค่าเริ่มต้นของแบทช์ของคำสั่งเป็น stdout (ฉลากไม่เคยสะท้อนออกมา) ในขณะเดียวกัน sh จะเห็นสิ่งต่อไปนี้:

:
echo Treat
exit
@echo Trick

บรรทัดแรกไม่ทำอะไรเลย (มันเป็นนามแฝงของtrue) บรรทัดที่สองพิมพ์ Treat และบรรทัดที่สามจะออกจากสคริปต์ดังนั้น @echo Trick จึงไม่เคยไปถึง


10

sed / Hexagony 32 ไบต์

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

sed

ลองออนไลน์!

บรรทัดแรกพิมพ์ออกมาtrickหากมีสตริงว่างที่ท้ายของอินพุต (ไม่ได้ทำอะไรเลยถ้าไม่มีการป้อนข้อมูล แต่บรรทัดว่างบน stdin ได้รับอนุญาตในกรณีนี้)

ตัวอย่างการเรียกใช้:

$ echo | sed -f TrickOrTreat.sed
trick

Hexagony

ลองออนไลน์!

ครั้งแรกที่/เปลี่ยนเส้นทางตัวชี้คำสั่งขึ้นและทางซ้ายดังนั้นมันจะล้อมรอบด้านล่างซ้ายข้ามข้อความที่ใช้สำหรับ sed มันนำ r จากโค้ดเซดมาใช้และรันอีกสองสามตัวเพื่อไม่มีผลกระทบ ฐานสิบหกที่ขยายออกมีลักษณะดังนี้:

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

เอาท์พุท:

treat

ฉันเคยเห็นโพสต์ของ Hexagony ที่มีรูปภาพของเส้นทางการดำเนินการมีเรื่องง่ายที่จะสร้างสิ่งเหล่านั้นหรือไม่?
Riley


1
รหัส Hexagony ของคุณพิมพ์ไบต์ว่างนำหน้า ไม่แน่ใจว่าสิ่งนั้นนับว่าเป็นช่องว่างสำหรับวัตถุประสงค์ของการท้าทายนี้หรือไม่
Martin Ender

@MartinEnder ดูเหมือนว่าได้รับอนุญาต ขอขอบคุณสำหรับการชี้ว่าผมเคยพลาดเหล่านั้นด้วยเหตุผลบางอย่าง ...
ไรลีย์

ฉันจัดการเพื่อแก้ไขในขณะที่ยังประหยัดไม่กี่ไบต์ (ที่ค่าใช้จ่ายของการพิมพ์ตัวพิมพ์ใหญ่Aถึงแม้ว่าคุณสามารถทำให้น้อยน่าเกลียดโดยการเปลี่ยนตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่): hexagony.tryitonline.net/
Martin Ender

10

C # / Java

สิ่งนี้อาจไม่ผ่านการรับรองเนื่องจากมันไม่ได้ทำงานด้วยตัวเอง แต่ความท้าทายทำให้ฉันนึกถึงความแปลกประหลาดในการเปรียบเทียบสตริงของ C # และ Java ที่แตกต่างกันซึ่งคุณสามารถสนุกกับการทำให้รหัสสับสน

ฟังก์ชั่นต่อไปนี้ใช้ได้ใน C # และ Java แต่จะส่งกลับค่าที่แตกต่าง ...

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

แปลกตาที่น่าสนใจอย่างแน่นอน
BrainStone

10

Brain-Flak / Brain-Flueue, 265 253 219 165 139 115 113 101 101 ไบต์

รวม +1 สำหรับ -A

ขอบคุณ Wheat Wizard สำหรับการกลับไปกลับมาเล่นกอล์ฟกันไม่กี่ไบต์โดยรหัสฉัน

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

Brain-Flak: ลองออนไลน์!
Brain-Flueue: ลองออนไลน์!

คำอธิบาย:
ส่วนแรกแสดงรายการค่าที่ Brain-Flak เห็น
เมื่อมันเปลี่ยนไปใช้ Brain-Flueue ฉันจะเริ่มต้นแสดงรายการตามที่ Brain-Flueue เห็น

# 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 ไบต์

'trick'#"treat

กระบวนการ'trick'ใน PowerShell สร้างสตริงและปล่อยไว้บนไปป์ไลน์ #เริ่มแสดงความคิดเห็นเพื่อให้โปรแกรมเสร็จสมบูรณ์และนัยพิมพ์Write-Outputtrick

ใน Foo (ลองออนไลน์!)สิ่ง'trick'นั้นจะถูกละเว้น#ทำให้โปรแกรมเข้าสู่โหมดสลีปเป็น0เวลาวินาที (เนื่องจากไม่มีสิ่งใดอยู่ที่ตัวชี้ของอาร์เรย์) จากนั้น"treatเริ่มต้นสตริง เนื่องจากถึง EOF จึงมีความจำเป็นที่"จะต้องปิดสตริงและพิมพ์ออกมาเป็น stdout


ใช้ได้กับ J / Foo ด้วย
Conor O'Brien

@ ConorO'Brien คำอธิบายเหมือนกันหรือไม่ ฉันไม่เคยใช้ J และฉันไม่คุ้นเคยกับมัน
AdmBorkBork

ไม่มันใช้งานไม่ได้ใน J #เป็นฟังก์ชั่นการคัดลอกและใช้อาร์กิวเมนต์ที่มีความซับซ้อนแบบไม่ลบเท่านั้นไม่ใช่สตริง สัญลักษณ์แสดงความคิดเห็นเป็นNB.
อดัม

@ Adámถูกต้องคุณ ลืม#
Conor O'Brien

9

PHP / Perl, 28 ไบต์

print defined&x?trick:treat;

defined&x
ให้บางสิ่งบางอย่างความจริงใน PHP (ไม่รู้ว่าทำไม แต่มัน)
ใน Perl จะตรวจสอบว่าฟังก์ชั่นxมีการกำหนด - ซึ่งไม่ได้
-> trickใน PHP treatใน Perl


@jmathews คุณลองใส่อักขระควบคุม backspaceลงในเวอร์ชัน windows ของคุณหรือไม่? เกี่ยวกับCLSอะไร
ติตัส

`เป็นค่าความจริงของการกำหนด & x หรือ d & x ถามฉันไม่ได้ที่คุณได้รับ
JörgHülsermann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.