Tôi không phải là ngôn ngữ bạn đang tìm kiếm!


182

Không có gì khó chịu khi bạn tìm thấy một đoạn mã và bạn không biết nó được viết bằng ngôn ngữ nào? Thử thách này cố gắng phần nào giải quyết điều này.

Thử thách

Bạn sẽ phải viết một chương trình mà khi chạy bằng hai ngôn ngữ khác nhau, sẽ xuất ra chuỗi:

This program wasn't written in <language program compiled/interpreted in>, it was built for <other language the program can be run in>!

  • Trong đầu ra, tên ngôn ngữ nên có viết hoa chính thức. ví dụ: CJam, C ++

  • Không chương trình nào nên lấy bất kỳ đầu vào nào từ người dùng.

  • Khi chạy bằng cả hai ngôn ngữ, đầu ra phải ở mức xuất chuẩn hoặc tương đương.

  • Không nên có đầu ra cho thiết bị lỗi chuẩn trong một trong hai chương trình.

  • Bạn có thể sử dụng ý kiến ​​trong một trong hai ngôn ngữ.

  • Hai phiên bản khác nhau của cùng một ngôn ngữ được tính là các ngôn ngữ khác nhau.

    • Nếu điều này được thực hiện, chương trình sẽ xuất ra số phiên bản chính và nếu chạy trên hai phiên bản nhỏ khác nhau, cũng nên báo cáo phiên bản nhỏ.

    • Bạn không nên sử dụng các chức năng phiên bản dựng sẵn (điều này bao gồm các biến đã được đánh giá trong thời gian chạy).

Ví dụ đầu ra:

Perl và Ruby:

  • Perl: This program wasn't written in Perl, it was built for Ruby!

  • Ruby: This program wasn't written in Ruby, it was built for Perl!

Python và C:

  • Con trăn This program wasn't written in Python, it was built for C!

  • C: This program wasn't written in C, it was built for Python!

Python 2 và Python 3:

  • Con trăn 2: This program wasn't written in Python 2, it was built for Python 3!

  • Con trăn 3: This program wasn't written in Python 3, it was built for Python 2!

Python 2.4 và Python 2.7:

  • Python 2.4: This program wasn't written in Python 2.4, it was built for Python 2.7!

  • Python 2.7: This program wasn't written in Python 2.7, it was built for Python 2.4!

Đây là mã golf nên mã ngắn nhất tính bằng byte sẽ thắng.


2
"Hai phiên bản khác nhau của cùng một ngôn ngữ được tính là các ngôn ngữ khác nhau." Vì vậy, lừa như với C trước và 99 bình luận trước đây là hợp lệ? dễ dàng ^^
Zaibis

1
Thêm vào đó, nó cảm thấy nghịch lý nhưng phù hợp với quy tắc của bạn.
Zaibis

1
Không ai thực hiện một polyglot Whitespace / Python?
Không phải Charles

đừng bận tâm. Xem triển khai 23
Không phải Charles

Có dựa vào chương trình để được chạy với một trình thông dịch nhất định được tính là đầu vào không? đó là, bật argv[0]?
con mèo

Câu trả lời:


86

Foo / CJam, 70 byte

"This program wasn't written in ""Foo"", it was built for ""CJam"\@"!"

Trong Foo, như nhiều người đã phát hiện ra, nó chỉ in mọi thứ trong dấu ngoặc kép và bỏ qua hầu hết các ký tự khác hoặc làm điều gì đó không ảnh hưởng đến đầu ra trong hầu hết các trường hợp. Nói tóm lại, \@không có gì và các chuỗi đều được in nguyên trạng.

Trong CJam, \hoán đổi hai mục trên cùng và @di chuyển mục thứ 3 lên trên cùng, sắp xếp các chuỗi theo đúng thứ tự. Và sau khi chương trình kết thúc, mọi thứ còn lại trong ngăn xếp sẽ được tự động in.


7
Và chỉ để giải trí, có một giải pháp 75 byte tương tự cho Fudge / CJam:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
Martin Ender

3
Đẹp. Tôi đã có "This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/cho Clip / CJam.
Dennis

5
Tôi đã vào chủ đề này để đăng một giải pháp Foo, bây giờ tôi đã nhận ra mọi người đều biết việc viết một polyglot Foo dễ dàng như thế nào.
lịch sử

Có một liên kết đến đặc tả ngôn ngữ lập trình Foo?
justhalf

1
@ErikE Đã thêm một số lời giải thích.
jimmy23013

140

C89 / C99, 171 152 136 114 111 107 105 byte

Cảm ơn tại @Hurkyls, @Qwertiys, @ jimmy23013 và @MD XF cho gợi ý của bạn.

phiên bản đánh gôn:

c;main(){c=-4.5//**/
-4.5;printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);}

phiên bản không có bản quyền:

c;

main()
{
    c = -4.5//**/
    -4.5;
    printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);
}

Mô tả nhỏ:

Các phiên bản C trước C99 chỉ có nhận xét đa dòng như thế này:

/*foo*/

với C99, bình luận dòng đơn đã được giới thiệu. như thế này:

//foo

vì vậy nếu bạn biên dịch một dòng như thế này:

c =-4.5//**/
-4.5;

mã biên dịch liên quan đến trình biên dịch c99 sẽ là:

c = -4.5 -4.5;

trong khi mã trình biên dịch c89 có liên quan sẽ là:

(vì phần đầu tiên /không phải là một phần của nhận xét và được coi là toán tử)

c = -4.5 / -4.5;

10
+1 cho một câu trả lời tuyệt vời. Một chút giải thích cho những người không quen thuộc với C sẽ rất tốt.
ace_HongKongInependence

4
@ace Tôi tin rằng điều này phụ thuộc vào các bình luận kiểu C99. Trong dòng thứ tư, chú ý //**/. Trong C89, đó là toán tử phân chia theo sau là một bình luận trống rỗng. Trong C99, //bắt đầu nhận xét một dòng, vì vậy phần còn lại của dòng trống. Do đó, trong C89, nó trở thành (90-(-4.5/-4.5))89, trong khi ở C99, nó trở thành (90-(-4.5-4.5))99.
kirbyfan64sos

14
Để lưu một vài byte, sử dụng 188-cthay vì c==99?89:99.

1
Tôi không nghĩ bạn cần không gian và dấu ngoặc đơn bên ngoài với bài tập.
PurkkaKoodari


88

JavaScript / Ruby, 170 byte

Có thể chỉ là 2.0, dường như không hoạt động trong ít nhất 2.1.5 ... Chỉnh sửa: Cập nhật theo lời khuyên từ @Jordan hy vọng nó hoạt động trong một vài phiên bản nữa ngay bây giờ!

a='1';c=console=console||eval('def c.log s;$><<s end;c');c.log("This program wasn't written in "+(d=['JavaScript','Ruby'])[b= ~(a=~/1/)]+', it was built for '+d[b+1]+'!')

Lạm dụng ~toán tử trong đó Ruby sẽ coi =~là một kết hợp regex trả về vị trí của kết quả khớp đầu tiên trong chuỗi ( 0), nhưng JavaScript sẽ coi nó như = ~/1/hiện tại -1(vì /1/được chuyển đổi thành NaNcác hoạt động số có 0giá trị).


Câu trả lời này không phù hợp với tôi trong Ruby 2.1.5. Tôi nhận được:NoMethodError: undefined method `log' for :log:Symbol
EMBLEM

@EMBLEM Thử nghiệm của tôi được thực hiện trên Ruby 2.0 được tích hợp trong OS X, tôi chưa thử nghiệm bất cứ điều gì ngoài điều đó, nhưng tôi chắc chắn sẽ thêm một nhận xét cho thấy nó có thể bị hỏng trong phiên bản khác!
Dom Hastings

Trong các phiên bản gần đây hơn của Ruby, một định nghĩa phương thức trả về tên của phương thức làm biểu tượng, vì vậy bạn evalsẽ quay trở lại :log. Tôi nghĩ rằng bạn có thể sửa chữa nó bằng cách đặt ;csau end. Các =~/ = ~lừa là rất tốt, mặc dù!
Jordan

Bạn cũng có thể tiết kiệm. Một vài byte bằng cách sử dụng $><<sthay vì puts svà sử dụng dấu ngoặc kép để bạn có thể bỏ dấu gạch chéo ngược vào wasn\'t.
Jordan

@Jordan Cảm ơn! Tuy nhiên, không chắc chắn làm thế nào tôi không phát hiện ra việc loại bỏ \'dấu ngoặc kép và $><<có nghĩa là tôi có thể áp dụng bản sửa lỗi mà bạn đã đề cập và giữ nguyên số byte!
Dom Hastings

82

Python 2 / Python 3, 92

Sử dụng kiểm tra phiên bản Python "tiêu chuẩn" (số nguyên so với phân chia float).

print("This program wasn't written in Python %d, it was built for Python %d!"%(3/2*2,4-3/2))

3
Điều này đã được nói đến trong hộp cát và sự đồng thuận là cho phép loại điều này
Blue

14
@flawr Python và Cobra có được phép không? ;)
Beta Decay

7
@flawr Python thực sự được đặt theo tên của bộ phim hài ~ ~ nhóm thần ~ Monty Python.
Mutantoe

@Mutantoe Có thể bạn thấy "Monty" không phải là tên của một con vật, cách chơi chữ sẽ không hiệu quả.
Pierre Arlaud

57

Câu cá / > <> 233 217 byte

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC
\   "This program wasn't written in ""><>"  ", it was built for Fishing!"
>r!`ol?!;32.                         Fishing                     ><>!`N

Câu cá là một ngôn ngữ dựa trên một ngư dân đi bộ xung quanh bắt cá. Để thực hiện một chương trình bằng ngôn ngữ này, người đầu tiên phải xác định một bến tàu mà anh ta đi bộ xung quanh. Dock chỉ cung cấp luồng điều khiển cho một chương trình. Các dock trong chương trình này là:

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC

Bất cứ khi nào Clệnh được tìm thấy, ngư dân ném ra dòng của mình để bắt một hướng dẫn. Các +-hướng dẫn giảm và tăng chiều dài của dòng tương ứng. vthay đổi hướng ném của anh ta xuống dưới. Con cá mà anh bắt được trong chương trình này là:

`This program wasn't written in Fishing, it was built for ><>!`N

> <> là ngôn ngữ dựa trên một con cá di chuyển trong nước. Các vlệnh bắt cá di chuyển xuống phía dưới, nơi mà nó sau đó được phản ánh ở bên phải với các \lệnh. Tất cả mọi thứ giữa các trích dẫn được đẩy lên ngăn xếp. Sau khi chuỗi được đẩy lên ngăn xếp, cá quấn quanh phía bên kia nơi nó được phản xạ xuống dưới \. Sau đó nó in ra nội dung của ngăn xếp với:

>r!`ol?!;32.

Bạn có thể giảm mã của mình xuống 13 byte bằng cách đặt vòng in của bạn cho> <> vào khoảng trắng trên dòng thứ ba (mà tôi không nghĩ sẽ can thiệp vào phần câu cá, mặc dù tôi không biết ngôn ngữ đó). Tôi không chắc cách nhận xét này sẽ xử lý toàn bộ mã, vì vậy đây là liên kết hastebin : hastebin.com/quqinozizi (Tôi có thể đã nhầm lẫn khoảng cách trên dòng thứ ba nhưng tôi nghĩ rằng mọi thứ đều được căn chỉnh chính xác).
cole

@Cole Nó hoạt động. Trong thực tế, đề xuất của bạn thực sự loại bỏ 16 ký tự.
TheNumberOne

14
Cá và polyglot câu cá ... có thể là đầu tiên của loại hình này!
Mark K Cowan

thật là buồn cười
D.Tate

55

23 / Malbolge, 5688 byte

                    bCBA@?>=<;:987
                                                                                        6543210/.-,+*)
                                                                                          ('&%$#"!~}|{zy
                                                                                               xwvutsrqponmlk
                                                                                                  jihgfedcba`_^]
                                                                                     \[ZYXWVUTSRQPO
                                                                                               NMLKJIHGFEDCBA
                                                                                    @?>=<;:9y76543
                                                                210/(L,l*)(!E}
                   |B"!~}|{zyxwvu
                                                                                                     tsrqponmlkjiha
                                                                                                  fed]#a`_^]?zZY
                                                                                         XWVUTSRQ3ONMLK
                   JIHGFEDCBA:^>=
                                                                                                       <;:98705.R21q/
                                                                                               .-,+*#G'&%${"!
                                                                                            x>|{zyxwYutm3k
                                                                                                        ponmlkjihg`&^c
                                                                                     ba`_^]\[ZYXWVO
                   sSRQPONMLEi,HG
                                                                                                      FEDCBA@?>=6Z:9
                                                                                    y76543210/.-,+
                                                                                                          *)('&%$#"y?w|u
                   ;sxwvutm3qSonm
                                                                                                       fkjiha'edcba`_
                                                                                            ^]\[ZYXWVUTSRQ
                   PONM/EiIHGFEDC
                               BA@?>7[;:987w5
                                      432+O/o-,%I)('
                                     &}$#z@~}|{zsxw
                   vutsrqponmlkji
                                                                                                 ha'&dFba`_^]\U
                                                                                            yYXWVUTMRQPONM
                   LKDhH*F?DCBA@?
                                                                                                 8\<;:98765432r
                                                                                        0/.-&J*)('&f$#
                                                                                                       "!~}|{zyxwvuts
                                                                                                       rqj0nmOkjihaf_
                                                                                            %cE[!_^]\[=SwW
                                                                                                     VU7SLpPONMLEJI
                                                                                                          HAeEDC%A@?>=<;
                   :9876543210/.-
                                                                                                       ,+$H('&}${A!xw
                          ={]yxwvutsrk1o
                                                                                                 nmOejib(fedcE"
                                                                                                      `_^]?[ZYRvVUT6
                                                                                     RKo2HMLKJIHAe
                                                                                                           EDCBA@?>=<;:9
                    87w5432+O/.-,
                                                                                                 +*)('&%e#"y?w
                                                                                     |{zs9wvun4rqp
                                                                                                      onmlNjib(fedc
                                                                                           ba`_^]\[ZYXWV
                                                                                                   8TMqKPONMLKDh
                                                                                                      +GFEDCB;_?>=<
                                                                                                    ;:9y7654321*N
                    .-,+*)('&f|{A
                                                                                                       !~}|{]yxwvo5s
                                                                                             rqpinmlkjihg`
                                                                                            &dcbD`_^]\[Tx
                                                                        ;WVUTMRQJnN0F
                                                 KDhH*FEDC<A@?
     >=<5Y92765.R?

Lưu ý rằng chương trình yêu cầu một nguồn cấp dữ liệu. Không có dòng nào chứa khoảng trắng theo dõi, vì vậy sao chép / dán chỉ hoạt động tốt.

xác minh

Để kiểm tra mã Malbolge trong trình thông dịch trực tuyến này , hãy dán mã đó vào vùng mã Malbolge và nhấp vào Load/Reset, sau đó Execute.

Để kiểm tra mã 23 trong trình thông dịch trực tuyến này , hãy dán mã đó vào vùng Nguồn , nhấn Enterđể chèn đường dẫn theo dõi, nhập 23vào vùng Bảng điều khiển (để chuyển từ ký hiệu 23.dezsy mặc định sang tự động phát hiện) và nhấp vào Run Interpreter!.


20
Anh bạn ... có vẻ như một quả bom đã nổ trong mã của bạn!
D.Tate

8
o_0 bạn đã viết mã Malbolge như thế nào
Pavel


55

Lua / C - 182 164 byte

#if 0
print"This program wasn't written in Lua, it was built for C!"--[[
#endif
main(){printf("This program wasn't written in C, it was built for Lua!\n");}/*]]--*/

Tận dụng lợi thế của tính năng trong đó Lua coi dấu băm trên dòng đầu tiên là một nhận xét để cho phép các shebang Unix. Mặt khác kết thúc các bình luận của ngôn ngữ khác trong các bình luận riêng của nó.

Để cạo byte, tôi dựa vào hành vi ngầm chỉ phát ra các cảnh báo trong GCC và Clang: khai báo ngầm định int cho định nghĩa chính và ẩn của printf.


3
Rất khéo léo thực hiện!
Bò lang băm

2
Nếu xóa "bao gồm <stdio.h>" là quá cực đoan, tôi sẽ hoàn nguyên câu trả lời.
benpop

2
Tại sao không sử dụng //bình luận trong phần C? Tiết kiệm 2 byte.
BrainStone

54

JavaScript / Haskell, 158 byte 147 byte

Ý tưởng chung: lẻn cú pháp nhận xét của từng người vào nhau.

Trong một dòng:

u="This program wasn't written in ";v=", it was built for ";j="JavaScript";h="Haskell";{-console.log(u+j+v+h+"!")}//-}main=putStrLn$u++h++v++j++"!"

Điều này trông như thế nào với Haskell:

-- some variable definitions
u = "This program wasn't written in "
v = ", it was built for "
j = "JavaScript"
h = "Haskell"

-- a comment
{-console.log(u+j+v+h+"!")}//-}

-- the main method that does the dirty deed
main = putStrLn $ u ++ h ++ v ++ j ++ "!"

Điều này trông giống như JavaScript:

/* variables can be declared without `var` */
u = "This program wasn't written in ";
v = ", it was built for ";
j = "JavaScript";
h = "Haskell";

/* hey look, an anonymous block! */
{ 
  /* we negate the `undefined` that comes out of console.log */
  -console.log(u+j+v+h+"!")
} 
/* there are two automatic semicolon insertions here:
   one before `}` and one before EOF. */

/* a one-line comment. */
//-}main=putStrLn$u++h++v++j++"!"

3
alertlà người chơi gôn
wizzwizz4

51

Brainfuck / Foo, 769 byte

-[--->+<]>-.[---->+++++<]>-.+.++++++++++.+[---->+<]>+++.[-->+++++++<]>.++.---.--------.+++++++++++.+++[->+++<]>++.++++++++++++.[->+++++<]>-.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.-----.[++>---<]>++.[->+++<]>-.[---->+<]>+++.--[->++++<]>-.-----.---------.+++++++++++..+++[->+++<]>.+++++++++.-[->+++++<]>-.-[--->++<]>-.+++++.-[->+++++<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+++[----->++<]>.------------.-[--->++<]>-.+++++++++++.[---->+<]>+++.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.+[---->+<]>+++.[->+++<]>++.[--->+<]>-.------------.+++.++++++++.[---->+<]>+++.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.+++[->++<]>.+[--->+<]>++..[--->+<]>----."This program wasn't written in Foo, it was built for Brainfuck!"

Một câu trả lời cực kỳ phức tạp và phức tạp ... hoặc không.


21
Khỉ thật, không phải bạn nữa Foo: D
Beta Decay

5
Tôi thích cách bạn nghĩ.
Pierre Arlaud

13
Khi chạy cái này trong Brainfuck, Brainfuck sẽ đợi đầu vào vì ,trong văn bản ở cuối. Tôi tin rằng đi ngược lại các quy tắc chuyển nhượng.
Simon Forsberg

1
@SimonForsberg đó là một thời gian dài, nhưng trong một phiên dịch viên như thử trực tuyến, và hầu hết những người khác tôi nghĩ, ,chỉ cần đặt ô thành 0, cho EOF
Lemon

41

C / Python, 238 ký tự

Điều này không in chính xác 100% những gì được yêu cầu, nhưng khá gần.
Khởi động lại thẻ ngày valentine của tôi .

#define def main(){0?
#define print printf(
#define return 0)));}
#define pass 0);

def main():
    print "This program wasn't written in ",
    pass
    print "Python",
    print ", it was built for ",
    print "C",
    return

main();

5
Nó in cái gì nếu nó không chính xác?
Beta Decay

4
Thứ printf lồng nhau đó thật tuyệt vời ...
Immibis

4
Điều này không hợp lệ C. Clang phàn nàn về def:sau đó def main(), và bạn không thực sự mở một cơ quan chức năng cho chính. Bạn đã thực sự thử biên dịch câu trả lời của bạn trong C?
C0deH4cker

5
Đường dây #define def main(){0?bị thiếu
kay

3
#define returnlàm tôi khóc một chút ...
corsiKa

32

C / C ++, 136

#include<stdio.h>
int main(){
char*a="++",z=sizeof'c'/2;
printf("This program wasn't written in C%s, it was built for C%s!\n",a+z,a+2-z);
}

Dòng mới được thêm vào để định dạng. Hãy thử nó trong C hoặc C ++ .


32
Điều gì xảy ra nếu tôi trên một nền tảng có int là 2 byte? Tôi có thể lấy trình biên dịch C + ở đâu?
Immibis

@immibis haha: P nhưng một lưu ý nghiêm trọng, thủ thuật struct trống có thể hoạt động:struct{}s;z=2*sizeof s
grc

31

Befunge / > <> , 141 138 134 133 130 byte

3 byte được lưu nhờ @Cole .

Chính xác là, tôi đang sử dụng Befunge-98.

\"!><> rof tliub saw ti ,egnufeB"   >" rof nettirw t'nsaw margorp sih"'T>:#,_@'~~~~~~
>l?v"!egnufeB rof tliub saw ti ,><>"^
?!;>ol

Sử dụng sự thật rằng:

  • \ là một tấm gương trong> <> và trao đổi trong Befunge
  • 'string'là một chuỗi trong> <> và 'clà một char trong Befunge

Trừ khi bạn cần nó cho mã Befunge (mà tôi không nghĩ là bạn làm như vậy), bạn có thể tắt 3 byte bằng cách thay thế dòng dưới cùng bằng?!;>ol
cole

23

PHP / MySQL, 147 byte

-- $argc;die("This program wasn't written in PHP, it was built for MySQL!");
SELECT("This program wasn't written in MySQL, it was built for PHP!");

17
Cuối cùng, một điều tôi cũng hiểu.
MikeTheLiar

1
Bạn sẽ có thể thoát khỏi dấu ngoặc đơn của dòng thứ hai, với hai byte ít hơn:SELECT"This program wasn't written in MySQL, it was built for PHP!";
msh210

2
Nhưng điều đó sẽ không còn hoạt động trong PHP - nó sẽ gây ra lỗi phân tích cú pháp. CHỌN "..." không phải là biểu thức PHP hợp lệ.
Razvan

22

Trăn 3 / > <> , 177 173 172 167 byte

Cảm ơn @mathmandan đã cạo 5 byte!

Vâng, đây là một kinh nghiệm và cũng là một thử. Bất kỳ đề nghị golf đều được chào đón, vì điều này là khá dài. Tôi đã cố gắng hết sức để sử dụng lại văn bản, nhưng nó khá khó khăn.

Về mặt kỹ thuật, đó sẽ là Python 3 mà chương trình này sẽ xuất ra (và tôi có thể thay đổi nếu tôi không đáp ứng các thông số kỹ thuật - nhưng trong ví dụ đầu ra Python / C Pythonđã được liệt kê).

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"                 #v   "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
#  .4b;!?lor"!nohtyP r"~/

Hãy thử nó trên một thông dịch> <> trình thông dịch trực tuyếntrình thông dịch Python 3 ( trình thông dịch > <> yêu cầu bạn nhập mã theo cách thủ công)

Trả về

This program wasn't written in ><>, it was built for Python!

trong> <> và

This program wasn't written in Python, it was built for ><>!

trong Python.

Giải thích (Python)

Đối với khía cạnh Python, mọi thứ khá đơn giản. Đây là mã mà chúng tôi quan tâm (về cơ bản là mã không có nhận xét, được ký hiệu là bằng #Python). Lưu ý rằng trong Python \là một ký tự thoát khi được sử dụng trong chuỗi, vì vậy hãy \"đánh giá "trong chuỗi.

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)

Điều chúng tôi quan tâm nhất ở đây là các thao tác được thực hiện trên biến aa:

aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)

Do đó, báo cáo in ước tính

"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"

Giải thích (> <>)

Bây giờ chúng ta đến phần khó khăn hơn. Một lần nữa, đây là mã với các bit không cần thiết được loại bỏ.

aa=" ni nettirw t'nsaw margorp sihT\"\
                          v   "><>"r~/
a=", it was built for "+v \a

   .4b;!?lor"!nohtyP r"~/

Dòng 1:

aa=" ni nettirw t'nsaw margorp sihT\"\

aa=         pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\           deflects the pointer downwards

Ngăn xếp ngay bây giờ (nếu được in): \This program wasn't written in

Dòng 2:

Lưu ý rằng dòng 2 bắt đầu tại /vị trí của con trỏ từ dòng 1 và di chuyển từ phải sang trái.

v   "><>"r~/

/     deflects the pointer leftwards
~r    pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v     deflects the pointer downwards

Ngăn xếp ngay bây giờ: ><> ni nettirw t'nsaw margorp sihT

Dòng 3:

Giống như dòng trước, dòng này bắt đầu tại \, đó là nơi dòng 2 gửi con trỏ. Lưu ý rằng bởi vì con trỏ quấn quanh dòng khi nó đến đầu tiên, atôi sẽ viết lời giải thích của mình theo thứ tự con trỏ đi đâu (và do đó, những gì được thực thi)

a=", it was built for "+v \a

\aa=       deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v         sum the last two values pushed and deflect

Ngăn xếp ngay bây giờ ( xlà ký tự được hình thành bằng cách thêm "r" và khoảng trắng. - đó không phải là ký tự thực tế, chỉ là một trình giữ chỗ từ tôi):

xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

Dòng 4:

Con trỏ chỉ đơn giản tiếp tục đi xuống để dòng này đảm bảo không có lời giải thích thêm.

Dòng 5:

Bắt đầu từ /và đi về bên trái.

.4b;!?lor"!nohtyP r"~/

~"r Python!" pops x off and adds back r and a space
r            reverses the stack
o            pops and prints a character
l?!;         pushes the length of the stack and stops if it's 0
b4.          pushes 11 then 4 then moves to that location (where o is)

Ngăn xếp ngay bây giờ (đầu ra đảo ngược):

!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

Và đó nên là nó để giải thích. Hãy cho tôi biết nếu có bất kỳ mâu thuẫn nào giữa phần giải thích / mã hoặc nếu tôi làm gì sai; Tôi đã viết mã xuống một số mã nữa trong khi tôi đang viết lời giải thích để tôi có thể có các đoạn mã cũ và mã mới.


Sẽ là sai nếu tôi nói rằng bạn phải thêm 3 vì nó không phải là python 2. Không sao cả.
Màu xanh

Nếu đây chỉ là Python, tôi tin bạn có thể thay thế aa[:-2][::-1]bằng aa[-3::-1]. Tất nhiên, trong trường hợp này, điều đó có thể can thiệp vào định dạng> <>, nhưng có lẽ nó đáng để xem xét nếu bạn chưa có. Đặc biệt tôi khá chắc chắn rằng bạn cần một khoảng trắng bên dưới vdòng trước, nhưng có vẻ như print(aa[-3::-1]+"Pytho"nó sẽ phù hợp với 24 ký tự bên dưới a=", it was built for "+, và sau đó bạn có thể đặt một khoảng trắng theo sau +"n"+a). Tôi không chắc chắn nếu điều này sẽ phá vỡ một cái gì đó khác, nhưng nếu nó hoạt động nó sẽ tiết kiệm một vài byte.
mathmandan

@mathmandan Ý tưởng tuyệt vời, tôi sẽ cập nhật mã của tôi và ghi có cho bạn.
cole

Công việc tốt! FYI, tôi nghĩ rằng điều này sẽ hoạt động tốt trong Python 2 và trong Python 2, bạn có thể lưu một byte bằng cách bỏ dấu ngoặc trong câu lệnh in : print aa[-3::-1]+"Pytho" +"n"+a. Một câu hỏi khác: trong phiên bản> <>, điều gì xảy ra với cái 1ban đầu được đẩy lên ngăn xếp?
mathmandan

@mathmandan Tôi nghĩ rằng trình thông dịch mà tôi đã sử dụng không in ký tự nếu nó không hợp lệ hoặc ký tự được in hoàn toàn không hiển thị. Tôi thực sự không chắc chắn 100% tại sao việc in ký tự đó không thành vấn đề; Tôi vô tình phát hiện ra nó.
cole

19

Batch .BAT File / Batch .CMD File, 194 185 Byte

@ECHO OFF
SET a=BAT
SET b=CMD
CALL :F&&GOTO :C||GOTO :O
:C
SET a=CMD
SET b=BAT
:O
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF
:F
md;2>nul
SET v=1

Chỉnh sửa: Đã lưu 9 byte và sửa lỗi bị thiếu !nhờ DLosc

Vâng, có sự khác biệt giữa các tệp BAT và CMD. Tài liệu tham khảo. Về cơ bản, CMD đặt ERRORLEVELtrên một SETlệnh, trong khi BAT không, có nghĩa là ở đây ERRORLEVELdo bị thay đổimd lệnh được xóa bởi SET v=1trong một phiên bản nhưng không phải là khác. Kịch bản này dựa trên ví dụ được cung cấp bởi "Ritchie" trong chuỗi tin tức đó.

Lưu ý rằng tập lệnh rút gọn ở trên giả định ENABLEEXTENSIONSđược đặt ON(theo mặc định trên mọi nền tảng). Kịch bản mở rộng bên dưới thiết lập rõ ràng, để đảm bảo chức năng chính xác. Không có điều đó,SET lệnh cho CMD không cho phép tất cả các tiện ích mở rộng và (trên một số hệ thống, có thể) có thể không được đặt một ERRORLEVELcách thích hợp.

Mở rộng và nhận xét

@ECHO OFF
setlocal ENABLEEXTENSIONS

REM Call the :FUNC subroutine and branch based on the resulting errorlevel
CALL :FUNC&&GOTO :CMD||GOTO :BAT

REM Just in case. If we reach this, though, hoo-boy ...
GOTO :EOF

:BAT
REM We're a BAT file, so set variables and goto output
SET a=BAT
SET b=CMD
GOTO :OUTPUT

:CMD
REM We're a CMD file, so set variables and goto output
SET a=CMD
SET b=BAT
GOTO :OUTPUT

:OUTPUT
REM Print out the result, then go to end of file
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF

:FUNC
REM Simple subroutine to set the ERRORLEVEL appropriately
md;2>nul
REM Right now, ERRORLEVEL on both CMD and BAT is 1
SET v=1
REM Right now, ERRORLEVEL on CMD is 0, but BAT is still 1

... Có sự khác biệt giữa CMD và BAT?
Stan Strum


16

CJam / GolfScript, 81 78 byte

"This program wasn't written in "o"GolfScript"", it was built for ""CJam"oo"!"

Phiên bản 81 byte gốc:

"This program wasn't written in "["CJam"", it was built for ""GolfScript"]-1a%"!"

14

PHP / Perl, 98 96 byte

$a="HP";$b="erl";
//;$a=$b;$b=HP;
print"This code wasn't written in P$a, it was built for P$b!";

Không biết điều này có gian lận hay không, vì theo như tôi có thể nói cách duy nhất để chạy PHP mà không cần <?thẻ mở là như thế php -r $(cat codefile.php). Nhưng giả sử đó là hợp pháp ... //là một nhận xét PHP, nhưng trong Perl, đó là một biểu thức chính quy (mà trong một tuyên bố của chính nó, không làm gì cả). Phần còn lại nên khá tự giải thích.

Chỉnh sửa: Bây giờ sử dụng một bareword trong phần chỉ Perl. Tôi muốn sử dụng những ngôn ngữ đó ở vị trí đầu tiên cho cả hai ngôn ngữ, nhưng PHP hiển thị cảnh báo khi bạn làm điều đó, trái với "Không nên có đầu ra cho thiết bị lỗi chuẩn".


1
<?'>#';là cú pháp hợp lệ trong cả hai ngôn ngữ.
primo

14

Ruby / Python, 105 ký tự

a=["Ruby","Python"];a.sort();print("This program wasn't written in "+a[0]+", it was built for "+a[1]+"!")

Cái này thật sự rất tốt! Tôi đặc biệt thích rằng không có ý kiến ​​sử dụng.
styfle

14

JavaScript 1.8 / JavaScript 1.7, 89 byte

a=![].reduce;`This program wasn't written in JS 1.${8-a}, it was built for JS 1.${7+a}!`

Bởi vì Array.prototype.reduce là mới trong 1.8

EDIT: Đã loại bỏ 7 byte bằng cách trực tiếp khởi tạo athay vì sử dụngreverse()

EDIT: JavaScriptcó thể được viết làJS , tiết kiệm 8 byte

EDIT: Cảm ơn Hedi vì đã chỉ ra rằng tôi có thể tiết kiệm thêm 3 byte nếu tôi không sử dụng biến bnữa

EDIT: Đã loại bỏ 6 byte bằng máy tính 7+a8-a, trong đó a=1nếu giảm được xác định (JS 1.8) và a=0nếu nó không được xác định (JS 1.7)

EDIT: Hedi đã phát hành thêm 6 byte cho thấy việc sử dụng chuỗi mẫu

EDIT: ETHproductions đánh ra 2 byte gợi ýa=!![].reduce; thay vìa=[].reduce?1:0;

EDIT: no1xsyzy đã chơi thêm một byte đề nghị đảo ngược kiểm tra boolean


Với "JS" thay vì "JavaScript", sử dụng hai lần "JS 1." trong chuỗi của bạn ngắn hơn sử dụng biến b.
Hedi

Bạn có thể sử dụng chuỗi mẫu để làm cho nó ngắn hơn: `Chương trình này không được viết bằng JS 1. $ {7 + a}, nó được xây dựng cho JS 1. $ {8 + a}!`
Hedi

2
Tôi nghĩ bạn có thể lưu hai byte bằng cách thay đổi a=[].reduce?1:0;thành a=!![].reduce;.
Sản xuất ETH

@ETHproductions Cảm ơn, nhưng tôi không nghĩ nó sẽ hoạt động. Tôi cần agiữ giá trị 1hoặc 0, không truehoặcfalse
Mario Trucco

@ETHproductions xin lỗi, bạn nói đúng, tôi đã thử và nó hoạt động. Cảm ơn!
Mario Trúcco

13

SWI-Prolog 6 / SWI-Prolog 7, 156 byte

P='SWI-Prolog ',A=6,B=7,(is_list(""),N=A,M=B;N=B,M=A),atomic_list_concat(['This program wasn\'t written in ',P,N,', it was built for ',P,M,'!'],W),write(W).

Sử dụng thực tế là dấu ngoặc kép ""là mã chuỗi (tức là danh sách mã ký tự) trong các phiên bản SWI-Prolog cũ hơn 7 và là loại Chuỗi thích hợp trong phiên bản 7. is_list("")do đó sẽ sai trong phiên bản 7 và đúng trong các phiên bản trước.


12

BF / SPL, 5342 byte

Tôi khá chắc chắn đây là đa ngôn ngữ lập trình Shakespeare đầu tiên trên trang web này.

Có lẽ sẽ không giành được bất kỳ giải thưởng. Hoạt động bằng cách lẻn mã BF vào tiêu đề hành động / cảnh / chương trình. Mã SPL sử dụng các dấu chấm than thay vì dấu chấm trừ một vài trường hợp. Các chương trình không cần phải nhập dữ liệu, vì vậy dấu phẩy trong khai báo ký tự được "nhận xét" bằng cách xóa các ô và đặt dấu ngoặc vuông quanh dấu phẩy. Quy trình tương tự được áp dụng khi ẩn dấu ngoặc vuông xung quanh câu lệnh enter / exeunt.

[-][.
Ford,.
Page,.
Act I:]+++++++++[>+++++++++<-]>+++.
Scene I:>[.
[Enter Ford and Page]
Ford:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad day and bad bad day!Speak thy mind!
Scene II:]<<++[>++++++++++<-]>.
Page:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad bad day and bad bad bad day!Speak thy mind!
Scene III:+.
Page:
You is sum of thyself and day!Speak thy mind!
Scene IV:++++++++++.
Page:
You is sum of thyself and sum of bad bad bad day and bad day!Speak thy mind!
Scene V:>++++[>++++++++<-]>.
Ford:
You is fat fat fat fat fat cat!Speak thy mind!
Scene VI:[-<+>]<<---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene VII:++.
Page:
You is sum of thyself and fat cat!Speak thy mind!
Scene VIII:---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene IX:--------.
Page:
You is sum of thyself and big big big pig!Speak thy mind!
Scene X:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XI:<++++[->----<]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XII:++++++++++++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and big big pig!Speak thy mind!
Scene XIII:>.
Ford:
Speak thy mind!
Scene XIV:<++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XV:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XVI:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XVII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XVIII:>+++++++.
Ford:
You is sum of thyself and sum of fat fat fat cat and pig!Speak thy mind!
Scene XIX:<++++++.
Page:
You is sum of thyself and sum of fat fat cat and fat cat!Speak thy mind!
Scene XX:>-------.
Ford:
You is sum of thyself and sum of big big big pig and cat!Speak thy mind!
Scene XXI:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIII:---------.
Page:
You is sum of thyself and sum of big big big pig and pig!Speak thy mind!
Scene XXIV:+++++++++++.
Page:
You is sum of thyself and sum of cat and sum of fat cat and fat fat fat cat.Speak thy mind!Speak thy mind!
Scene XXV:<+++[>-----<-]>.
Page:
You is sum of thyself and sum of big big big big pig and cat!Speak thy mind!
Scene XXVI:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene XXVII:>.
Ford:
Speak thy mind!
Scene XXVIII:<-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIX:+++++.
Page:
You is sum of thyself and sum of fat fat cat and cat!Speak thy mind!
Scene XXX:>.
Ford:
Speak thy mind!
Scene XXXI:[->++<]>++.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat cat and cat!Speak thy mind!You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene XXXII:++++.
Page:
You is sum of thyself and big red hog!Speak thy mind!
Scene XXXIII:<+++++[>-----<-]>-.
Page:
You is sum of thyself and big big big big big pig!Speak thy mind!
Scene XXXIV:[-<+>]<------------.
Ford:
Speak thy mind!
Scene XXXV:<-----.
Page:
You is sum of thyself and sum of fat fat fat fat fat fat cat and sum of big pig and pig!Speak thy mind!
Scene XXXVI:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XXXVII:>.
Ford:
Speak thy mind!
Scene XXXVIII:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXXIX:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XL:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XLI:>.
Ford:
Speak thy mind!
Scene XLII:<<++++[>----<-]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XLIII:<+++++[>++++<-]>-.
Page:
You is sum of thyself and sum of fat fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XLIV:------------.
Page:
You is sum of thyself and sum of big big big big pig and fat fat cat!Speak thy mind!
Scene XLV:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XLVI:++++++++.
Page:
You is sum of thyself and fat fat fat cat!Speak thy mind!
Scene XLVII:>.
Ford:
Speak thy mind!
Scene XLVIII:<--------------.
Page:
You is sum of thyself and sum of big big big big pig and fat cat!Speak thy mind!
Scene XLIX:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene L:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene LI:>.
Ford:
Speak thy mind!
Scene LII:>+++++++[<+++++++>-]<++.
Page:
You is sum of thyself and sum of big big big big big pig and big big big big pig!Speak thy mind!
Scene LIII:---.
Page:
You is sum of thyself and fat fat cat!Speak thy mind!
Scene LIV:----.
Ford:
You is sum of thyself and cat!Speak thy mind!
Scene LV:>+++++++[<------>-]<-.
Ford:
You is cat!
Scene LVI:>[.
[Exeunt]

Kiểm tra BF tại https://repl.it/E8Hh/23 .

Mã SPL đã được thử nghiệm tại trình biên dịch được tìm thấy ở đây: https://github.com/drsam94/Spl/ .


11

Ruby 1.8 / Ruby 1.9, 87

puts"This program wasn't written in Ruby 1.#{?9%49}, it was built for Ruby 1.#{?8%47}!"

Trong Ruby 1.8, ?9giá trị ASCII là "9", là 8 modulo 49. Trong Ruby 1.9, đó là chuỗi "9" và %49là một hoạt động định dạng không có gì vì "9" không có bất kỳ chuỗi định dạng nào trong nó


11

Python 2.7.9 / Python 2.7.10, 127 byte

Chúng tôi đã có một vài bài đăng sử dụng các phiên bản nhỏ, nhưng không có bài nào chuyển sang cấp độ tiếp theo ...

import types
n=len(dir(types))
print"This program wasn't written in Python 2.7.%d, it was made for Python 2.7.%d!"%(n%33,-n%52)

Dùng thử trên Ideone (Python 2.7.10) và repl.it (về mặt kỹ thuật Python 2.7.2, nhưng sẽ cho kết quả tương tự như 2.7.9).

Python 2.7.10, theo thay đổi :

Thêm một __all__đến typesmô-đun.

Điều này đã đẩy len(dir(types))từ 42 lên 43, tạo ra sự khác biệt về số lượng mà chúng ta có thể khai thác để tạo đầu ra mong muốn.


10

Python / QBasic, 160 142 byte

Đã thử nghiệm với Python 3QBasic 1.1 . Không hoạt động trong Python 2 mà không thêm from __future__ import print_functionvào dòng 4.

1# DEFSTR A-B
a = "QBasic"
b = "Python"
'';a,b=b,a;PRINT=print
PRINT ("This program wasn't written in " + a + ", it was built for " + b + "!")
  • Trong Python, 1#là biểu thức 1(no-op) theo sau là một nhận xét. Trong QBasic, đó là số dòng (với hậu tố loại đánh dấu là a DOUBLE). Câu DEFSTRlệnh cho QBasic biết rằng tất cả các biến có tên bắt đầu bằng Ahoặc B(không phân biệt chữ hoa chữ thường) là biến chuỗi. Bằng cách đó, chúng ta có thể gọi các biến của mình abthay vì a$b$ (không hoạt động trong Python).
  • Trong QBasic, 'bắt đầu một bình luận. Trong Python, ''là chuỗi rỗng (no-op). Sau đó, chúng tôi trao đổi tên ngôn ngữ và xác định bí danh choprint hàm (vì các từ khóa QBasic được tự động định dạng thành chữ hoa).
  • Các dấu ngoặc đơn trên dòng cuối cùng không cần thiết trong QBasic, nhưng cũng không làm tổn thương gì.

Nếu tôi được phép tắt bộ tự động định dạng (là một tùy chọn trong QB64 , mặc dù không có trong QBasic gốc), tôi có thể giảm xuống còn 114 byte bằng Python 2 :

1#DEFSTR A-B
a="QBasic"
b="Python"
'';a,b=b,a
print"This program wasn't written in "+a+", it was built for "+b+"!"

-3 byte: Chuyển sang QB64 thực tế.
Máy

Tự động định dạng.
Máy

QB64 / Python 2 là 131 byte! Hoặc Python 3 cho 133 byte.
Máy

9

Perl / Ruby, 129 byte

0&&eval('def sort a,b;[b,a] end');printf"This program wasn't written in %s, it was built for %s!",(@a=sort"Perl","Ruby")[0],@a[1]

Không có lạm dụng biểu thức chính quy trong trường hợp này, chỉ cần tận dụng tối đa thực tế là 0 là sự thật trong Ruby theo evalđịnh nghĩa cho sort(mà thực sự reverselà) và printfing. Ruby không thích sử dụng danh sách cho các đối số, vì vậy tôi phải thực hiện từng mục một.


Tại sao aphải là một biến đối tượng, trái ngược với biến cục bộ?
Nic Hartley

@QPaysTaxes @sigil trên một biến trong Perl biểu thị rằng đó là một danh sách, trong Perl lưu trữ, nói $athay vào đó, không mang lại đầu ra.
Dom Hastings

Ah tôi thấy. Cảm ơn đã giải thích.
Nic Hartley

9

///Retina , 95 + 3 = 98 byte

/
//

This program wasn't written in \/\/\/, it was built for Retina!
/?./....(.*)(R.*)!
$2$1///!

+3 byte cho -scờ trong Retina.

Giải thích cho ///

Hướng dẫn đầu tiên là

/
//

xóa tất cả các dòng mới khỏi phần còn lại của mã, dẫn đến

This program wasn't written in \/\/\/, it was built for Retina!/?./....(.*)(R.*)!$2$1///!

Tất cả mọi thứ cho đến !chỉ là một chữ và được in thành STDOUT. Hướng dẫn tiếp theo là

/?./....(.*)(R.*)!$2$1/

Nhưng chuỗi tìm kiếm ?.không thể được tìm thấy, vì vậy không có gì xảy ra. Sau đó, mã còn lại //!là một lệnh không đầy đủ để chương trình kết thúc, đã in đúng chuỗi.

Giải thích cho võng mạc

/
//

Điều này nói với Retina để thay thế /bằng //. Nhưng đầu vào trống, vì vậy điều này không phù hợp với bất cứ điều gì.

<empty>
This program wasn't written in \/\/\/, it was built for Retina!

Điều này thay thế đầu vào bằng chuỗi trong dòng thứ hai.

/?./....(.*)(R.*)!
$2$1///!

Điều này khớp với chuỗi \/\/\/, it was built for Retina!và thay thế nó bằng Retina, it was built for ///!để cho kết quả chính xác.


Bạn biết đấy, tôi nghĩ sẽ thật tầm thường khi làm một cái giữa Retina và rs ...;)
kirbyfan64sos

@ kirbyfan64sos Có lẽ, nhưng nó sẽ ngắn đến mức nào? ;)
Martin Ender

Chà, cho đến nay tôi đã nhận được khoảng 85 byte + 3 -s, mặc dù nói những gì tôi đã làm sẽ làm hỏng cuộc vui! : D
kirbyfan64sos

1
@ kirbyfan64sos Hãy tiếp tục và đăng nó, tôi không nghĩ rằng mình sẽ có thời gian để xem xét rs bất cứ lúc nào sớm.
Martin Ender

9

sed / Hexagony 251 byte

/$/cThis program wasn't written in sed, it was built for Hexagony!
#...>32;p;r;o;g;r;\+/;a;w;23+;m;a<.;.>s;n;+39;t;+32\s/;n;e;;t;i;r;w;<. |.>+32;i;n;+32;H;e\ ;/4+;y;n;o;g;a;x;< i>4;+32;i;t;+32;\;/u;b;23+;s;a;w<h>;i;l;t;+32;f\;/;s;23+;r;o;< T>e;d;+33;@

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


Trong sed, nó in đúng chuỗi nếu nó khớp với chuỗi trống ở cuối (luôn luôn). Dòng thứ hai là một bình luận. Điều này không yêu cầu một chuỗi trên STDIN, nhưng nó có thể trống ( được phép dựa trên sự đồng thuận này ).

Thí dụ:

echo '' | sed -f whatLanguage.sed

Trong Hexagony, các /chuyển hướng đầu tiên ở phía dưới bên trái, nó đi theo phía bên trái lên đến nơi phần sed bắt đầu, sau đó chỉ quấn từ trái sang phải, xuống một dòng, phải sang trái, xuống một dòng, v.v. Hex mở rộng trông như thế này:

         / $ / c T h i s p r 
        o g r a m w a s n ' t 
       w r i t t e n i n s e d 
      , i t w a s b u i l t f o 
     r H e x a g o n y ! # . . . 
    > 3 2 ; p ; r ; o ; g ; r ; \
   + / ; a ; w ; 2 3 + ; m ; a < .
  ; . > s ; n ; + 3 9 ; t ; + 3 2 \
 s / ; n ; e ; ; t ; i ; r ; w ; < . 
| . > + 3 2 ; i ; n ; + 3 2 ; H ; e \ 
 ; / 4 + ; y ; n ; o ; g ; a ; x ; < 
  i > 4 ; + 3 2 ; i ; t ; + 3 2 ; \
   ; / u ; b ; 2 3 + ; s ; a ; w <
    h > ; i ; l ; t ; + 3 2 ; f \
     ; / ; s ; 2 3 + ; r ; o ; < 
      T > e ; d ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .

Tôi sẽ không bao giờ hiểu Hexagony ...
DJgamer98

@ DJgamer98 Tôi cũng không thực sự hiểu nó. Đây là lần đầu tiên tôi sử dụng nó.
Riley

Bạn có thể rút ngắn Hexagony một chút bằng cách sử dụng thực tế ;lấy mod ô hiện tại 256 để xác định giá trị byte (ví dụ: bạn có thể in một khoảng P0;trắng bất kể giá trị ô hiện tại). Kịch bản CJam này tạo ra tất cả các cặp: cjam.tryitonline.net/
Ender

9

Python / Retina, 133 120 119 117 115 byte

Bây giờ tôi đã biết nhiều hơn về Retina và regexes, tôi đã đánh gôn thêm một chút. Nó cũng thực sự hoạt động bây giờ.

#?.*
print"This program wasn't written in Python, it was built for Retina!"
#?.*t"

#?(\w+)(,.* )(.+)!"
#$3$2$1!
#

Python chỉ in câu lệnh. Retina thay thế bất cứ điều gì bằng câu lệnh in Python, sau đó loại bỏ printvà bất kỳ dấu ngoặc kép nào. Sau đó, tôi trao đổi PythonRetinavà loại bỏ các #.

Thử trong Python | Thử trong võng mạc



@ jimmy23013 Giới hạn không tồn tại tại thời điểm thử thách này được đăng. Đó là một tính năng tương đối mới của Retina.
mbomb007


8

JavaScript / CoffeeScript, 125 124 byte

console.log("This program wasn't written in",(a=['Coffee','Java'])[+(b=0=='0')]+"Script, it was built for",a[b^1]+"Script!")

Trong CoffeeScript, a==bđược biên dịch xuốnga===b , điều này làm cho điều kiện trung gian sai. Tôi đã sử dụng một chút phép thuật để chuyển đổi giá trị boolean thành một số nguyên.

Đã lưu 1 byte nhờ @DomHastings!

Phiên bản 125 byte:

console.log("This program wasn't written in",(a=['Coffee','Java'])[(b=0=='0')+0]+"Script, it was built for",a[b^1]+"Script!")

Đẹp! Tôi nghĩ rằng bạn có thể tiết kiệm một byte với +(b=0=='0')thay vì +0!
Dom Hastings

Thay vì b^1, tôi nghĩ bạn có thể sử dụng~b
Ismael Miguel

@IsmaelMiguel Không. Nó nói nó được xây dựng cho undefinedScript.
kirbyfan64sos

Tôi quên mất điều đó ~1 == -2. Nhưng (b=0=='0')+0có thể được viết là +(b=0=='0'). Hoặc b=+(0=='0'). Điều đó sẽ cắt đi 1 byte.
Ismael Miguel

@IsmaelMiguel Tôi đã làm điều đó trong phiên bản gần đây nhất ...
kirbyfan64sos
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.