ฉันไม่ใช่ภาษาที่คุณกำลังมองหา!


181

มันไม่น่ารำคาญหรือเมื่อคุณพบโค้ดชิ้นหนึ่งและคุณไม่รู้ว่าภาษานั้นเขียนด้วยภาษาอะไร? ความท้าทายนี้พยายามที่จะแก้ปัญหานี้บ้าง

ท้าทาย

คุณจะต้องเขียนโปรแกรมที่เมื่อทำงานในสองภาษาที่แตกต่างกันจะส่งออกสตริง:

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

  • ในผลลัพธ์ชื่อภาษาควรมีตัวพิมพ์ใหญ่อย่างเป็นทางการ เช่น CJam, C ++

  • ไม่ควรใช้โปรแกรมใด ๆ จากผู้ใช้

  • เมื่อทำงานในทั้งสองภาษาเอาต์พุตควรเป็น stdout หรือเทียบเท่า

  • ไม่ควรมีเอาต์พุตไปยัง stderr ในโปรแกรมใดโปรแกรมหนึ่ง

  • คุณสามารถใช้ความคิดเห็นในภาษาใดภาษาหนึ่ง

  • ภาษาเดียวกันสองเวอร์ชันที่แตกต่างกันจะนับเป็นภาษาที่แตกต่างกัน

    • หากทำเสร็จแล้วโปรแกรมควรส่งออกหมายเลขรุ่นหลักและหากใช้กับรุ่นรองสองรุ่นที่แตกต่างกันควรรายงานรุ่นรองด้วย

    • คุณไม่ควรใช้ฟังก์ชั่นเวอร์ชั่นที่สร้างไว้ล่วงหน้า (ซึ่งรวมถึงตัวแปรที่ได้รับการประเมินแล้วตอนรันไทม์)

ตัวอย่างผลลัพธ์:

Perl และ Ruby:

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

  • ทับทิม: This program wasn't written in Ruby, it was built for Perl!

Python และ C:

  • งูหลาม: 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 และ Python 3:

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

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

Python 2.4 และ 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!

นี่คือโค้ดกอล์ฟเพื่อให้โค้ดที่สั้นที่สุดเป็นไบต์ชนะ


2
"ภาษาเดียวกันสองเวอร์ชันที่แตกต่างนับเป็นภาษาอื่น" ดังนั้นการหลอกลวงด้วย C ก่อนและ 99 ความคิดเห็นที่ผ่านมานั้นถูกต้องหรือไม่ ง่าย ^^
Zaibis

1
เพิ่มมันรู้สึกขัดแย้ง แต่เหมาะกับกฎของคุณ
Zaibis

1
ไม่มีใครทำโพลิกล็อตของ Whitespace / Python ใช่ไหม
ไม่ใช่ Charles

ไม่เป็นไร. เห็นการใช้งาน 23
ไม่ใช่ว่า Charles

การพึ่งพาโปรแกรมที่จะรันด้วยการนับล่ามบางอย่างเป็นอินพุทหรือไม่? นั่นคือการเปิดargv[0]?
แมว

คำตอบ:


86

Foo / CJam, 70 ไบต์

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

ใน Foo มีคนจำนวนมากที่ค้นพบมันเพียงพิมพ์ทุกอย่างในเครื่องหมายคำพูดคู่และละเว้นอักขระอื่น ๆ ส่วนใหญ่หรือทำสิ่งที่ไม่ส่งผลกระทบต่อเอาต์พุตในกรณีส่วนใหญ่ ในระยะสั้น\@ไม่ทำอะไรเลยและสตริงทั้งหมดจะถูกพิมพ์ตาม - เป็น

ใน CJam ให้\สลับสองรายการบนสุดและ@ย้ายรายการที่ 3 ไปด้านบนซึ่งจัดเรียงสตริงเข้าในลำดับที่ถูกต้อง และหลังจากโปรแกรมสิ้นสุดลงทุกอย่างที่อยู่ในสแต็กจะถูกพิมพ์โดยอัตโนมัติ


7
และเพื่อความสนุกของมันมีวิธี 75- ไบต์คล้ายกันสำหรับ Fission / CJam:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
Martin Ender

3
ดี ฉันมี"This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/คลิป / CJam
เดนนิส

5
ฉันเข้ามาในกระทู้นี้เพื่อโพสต์คำตอบของ Foo คุณควรตระหนักว่าทุกคนรู้แล้วตอนนี้มันง่ายแค่ไหนที่จะเขียน Foo polyglot
ฮิสโทแคต

มีลิงค์ไปยังข้อมูลจำเพาะภาษาการเขียนโปรแกรม Foo หรือไม่
justhalf

1
@ErikE เพิ่มคำอธิบายบางอย่าง
jimmy23013

140

C89 / C99, 171 152 136 114 111 107 105 ไบต์

ขอบคุณที่ @Hurkyls @Qwertiys, @ jimmy23013 และ @MD XF สำหรับคำแนะนำของคุณ

รุ่น golfed:

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);}

เวอร์ชันที่ไม่ถูกปรับแต่ง:

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);
}

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

รุ่น C ก่อนหน้า C99 มีความคิดเห็นแบบหลายบรรทัดเช่นนี้:

/*foo*/

ด้วย C99 ความคิดเห็นบรรทัดเดียวแนะนำ แบบนี้:

//foo

ดังนั้นถ้าคุณรวบรวมบรรทัดเช่นนี้:

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

รหัสคอมไพเลอร์ที่เกี่ยวข้องกับคอมไพเลอร์ c99 จะเป็น:

c = -4.5 -4.5;

ในขณะที่รหัสที่เกี่ยวข้องสำหรับคอมไพเลอร์ c89 จะเป็น:

(เป็นคนแรก/ไม่ได้เป็นส่วนหนึ่งของความคิดเห็นและถือว่าเป็นผู้ดำเนินการ)

c = -4.5 / -4.5;

10
+1 สำหรับคำตอบที่น่าอัศจรรย์ คำอธิบายเล็กน้อยสำหรับผู้ที่ไม่คุ้นเคยกับ C จะดีแม้ว่า
ace_HongKong การพึ่งพา

4
@ace ฉันเชื่อว่าสิ่งนี้ขึ้นอยู่กับความคิดเห็นสไตล์ C99 ในบรรทัดที่สี่, //**/แจ้งให้ทราบล่วงหน้า ใน C89 นั่นคือตัวดำเนินการหารตามด้วยความคิดเห็นที่ว่างเปล่า ใน C99 ให้//เริ่มความคิดเห็นแบบบรรทัดเดียวดังนั้นส่วนที่เหลือของบรรทัดจะว่างเปล่า ดังนั้นใน C89 มันจะกลาย(90-(-4.5/-4.5))เป็น 89 ซึ่งในขณะที่ C99 มันจะกลายเป็น(90-(-4.5-4.5))ซึ่งคือ 99
kirbyfan64sos

14
บันทึกไม่กี่ไบต์ใช้แทน188-c c==99?89:99

1
ฉันไม่คิดว่าคุณต้องการพื้นที่และวงเล็บด้านนอกด้วยการมอบหมาย
PurkkaKoodari


88

JavaScript / Ruby ขนาด 170 ไบต์

อาจเป็น 2.0 เท่านั้นดูเหมือนจะไม่ทำงานอย่างน้อย 2.1.5 ... แก้ไข: อัปเดตตามคำแนะนำจาก@Jordanหวังว่ามันจะทำงานได้ในอีกไม่กี่รุ่น!

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]+'!')

การใช้~โอเปอเรเตอร์ที่ละเมิดใน Ruby นั้นจะถือว่า=~เป็นการจับคู่ regex ที่ส่งคืนตำแหน่งของการจับคู่ครั้งแรกในสตริง ( 0) แต่ JavaScript จะจัดการกับมันตาม= ~/1/ที่เป็นอยู่-1(เนื่องจาก/1/ถูกแปลงเป็นNaNสำหรับการดำเนินการตัวเลขซึ่งมี0ค่า)


คำตอบนี้ใช้ไม่ได้กับฉันใน Ruby 2.1.5 ฉันได้รับ:NoMethodError: undefined method `log' for :log:Symbol
EMBLEM

@EMBLEM การทดสอบของฉันดำเนินการกับ Ruby 2.0 ที่สร้างขึ้นใน OS X ฉันไม่ได้ทดสอบอะไรเลยนอกจากนั้น แต่ฉันจะเพิ่มความคิดเห็นอย่างแน่นอนเพื่อแสดงว่ามันอาจจะแตกในเวอร์ชั่นอื่น!
Dom Hastings

ในรุ่นล่าสุดของทับทิมนิยามวิธีการส่งกลับชื่อของวิธีการที่เป็นสัญลักษณ์ดังนั้นคุณจะกลับมาeval :logฉันคิดว่าคุณสามารถแก้ไขได้โดยการใส่หลัง;c / เคล็ดลับคือดี แต่! end=~= ~
Jordan

คุณสามารถบันทึกได้ กี่ไบต์โดยใช้$><<sแทนและใช้ราคาสองครั้งเพื่อให้คุณสามารถวางทับขวาในputs s wasn\'t
Jordan

@ จอร์แดนขอบคุณ! ไม่แน่ใจว่าฉันไม่เห็นการลบ\'เครื่องหมายคำพูดคู่ด้วยและ$><<หมายความว่าฉันสามารถใช้การแก้ไขที่คุณกล่าวถึงและนับไบต์เดียวกันได้!
Dom Hastings

82

Python 2 / Python 3, 92

ใช้การตรวจสอบเวอร์ชันของ Python "มาตรฐาน" (การหารจำนวนเต็มเทียบกับการลอย)

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

3
สิ่งนี้ถูกพูดถึงในกล่องทรายและฉันทามติก็อนุญาตให้ทำเช่นนี้ได้
Blue

14
@flawr จะอนุญาตให้ใช้ Python และ Cobra หรือไม่ ;)
Beta Decay

7
@flawr Python ได้รับการตั้งชื่อตามความขบขัน ~~ group ~~ gods, Monty Python
Mutantoe

@Mutantoe ดูเหมือนว่าคุณ "Monty" ไม่ได้เป็นชื่อของสัตว์ปุนไม่ทำงาน
Pierre Arlaud

57

ตกปลา / > <> 233 217 ไบต์

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

การตกปลาเป็นภาษาที่ใช้ในการจับปลา เพื่อให้โปรแกรมในภาษานี้เป็นคนแรกที่จะต้องกำหนดท่าเรือที่เขาเดินไปรอบ ๆ Dock เท่านั้นให้โฟลว์ควบคุมไปยังโปรแกรม Dock ในโปรแกรมนี้คือ:

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

เมื่อใดก็ตามที่Cพบคำสั่งชาวประมงจะขว้างแถวของเขาเพื่อรับคำแนะนำ +และ-คำแนะนำลดลงและเพิ่มความยาวของสายของเขาตามลำดับ vเปลี่ยนทิศทางการโยนของเขาเป็นลง ปลาที่เขาจับได้ในโปรแกรมนี้คือ:

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

> <>เป็นภาษาที่ใช้ปลาที่เคลื่อนที่ผ่านน้ำ vคำสั่งเริ่มปลาย้ายลงซึ่งจะมีการสะท้อนให้เห็นแล้วไปทางขวาที่มี\คำสั่ง ทุกอย่างระหว่างเครื่องหมายคำพูดถูกผลักลงบนสแต็ก หลังจากสตริงจะถูกผลักลงบนกองปลาล้อมรอบไปด้านอื่น ๆ \ซึ่งจะมีการสะท้อนลงโดย จากนั้นพิมพ์เนื้อหาของสแต็กด้วย:

>r!`ol?!;32.

คุณสามารถลดรหัสของคุณได้ 13 ไบต์โดยใส่วนรอบการพิมพ์สำหรับ> <> ในช่องว่างในบรรทัดที่สาม (ซึ่งฉันไม่คิดว่าจะเข้าไปยุ่งกับส่วนงานจับปลาแม้ว่าฉันจะไม่รู้ภาษานั้นก็ตาม) ฉันไม่แน่ใจว่าความคิดเห็นนี้จะจัดการกับรหัสทั้งหมดได้อย่างไรดังนั้นนี่คือลิงก์ hastebin: hastebin.com/quqinozizi (ฉันอาจทำให้ระยะห่างในบรรทัดที่สามสับสน แต่ฉันคิดว่าทุกอย่างสอดคล้องกันอย่างถูกต้อง)
โคล

@ Cole มันใช้งานได้ ในความเป็นจริงข้อเสนอแนะของคุณจริงลบ 16 ตัวอักษร
TheNumberOne

14
ปลาและภาษาตกปลาหลายภาษา ... อาจเป็นครั้งแรกของชนิด!
Mark K Cowan

นี่มันตลกจัง!
D.Tate

55

23 / Malbolge, 5688 ไบต์

                    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?

โปรดทราบว่าโปรแกรมต้องมีการป้อนบรรทัดต่อท้าย ไม่มีบรรทัดที่มีช่องว่างต่อท้ายดังนั้นการคัดลอก / วางควรทำงานได้ดี

การตรวจสอบ

เพื่อทดสอบรหัส Malbolge ในล่ามออนไลน์นี้วางไว้ในรหัส Malbolgeพื้นที่และคลิกแล้วLoad/ResetExecute

เพื่อทดสอบรหัส 23 ในล่ามออนไลน์นี้วางไว้ในแหล่งพื้นที่กดEnterเพื่อแทรกเลื่อนบรรทัดต่อท้ายชนิด23ในคอนโซลพื้นที่ (จะเปลี่ยนจากการเริ่มต้น23.dezsyสัญกรณ์เพื่อการตรวจหาอัตโนมัติ) Run Interpreter!และคลิก


20
เพื่อน ... ดูเหมือนว่าระเบิดในรหัสของคุณ!
D.Tate

8
o_0 คุณเขียนโค้ด Malbolge ได้อย่างไร
Pavel

55

Lua / C - 182 164 ไบต์

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

ใช้ประโยชน์จากฟีเจอร์ที่ Lua ใช้เครื่องหมายแฮชในบรรทัดแรกเป็นความคิดเห็นเพื่ออนุญาตให้ยูนิกซ์ Shebangs มิฉะนั้นหุ้มความคิดเห็นของภาษาอื่นในความคิดเห็นของตนเอง

ในการโกนหนวดไบต์ฉันต้องพึ่งพาพฤติกรรมโดยปริยายที่ส่งเสียงเตือนเฉพาะใน GCC และ Clang: การประกาศโดยนัยของ int สำหรับนิยามหลักและนิยามโดยนัยของ printf


3
ทำได้ดีมาก!
วัวต้มตุ๋น

2
หากการลบ "include <stdio.h>" มากเกินไปฉันจะกลับคำตอบ
benpop

2
ทำไมไม่ใช้//ความคิดเห็นในส่วน C บันทึก 2 ไบต์
BrainStone

54

JavaScript / Haskell, 158 ไบต์ 147 ไบต์

แนวคิดทั่วไป: แอบดูไวยากรณ์ความคิดเห็นของแต่ละคน

ในหนึ่งบรรทัด:

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++"!"

สิ่งนี้มีลักษณะอย่างไรต่อ 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 ++ "!"

สิ่งนี้มีลักษณะเหมือนกับ 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
alertเป็นนักกอล์ฟ
wizzwizz4

51

Brainfuck / Foo, 769 ไบต์

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

คำตอบที่ซับซ้อนและซับซ้อนอย่างยิ่ง ... หรือไม่


21
Dammit ไม่ใช่คุณอีกครั้ง Foo: D
Beta Decay

5
ฉันชอบที่คุณคิด
Pierre Arlaud

13
เมื่อเรียกใช้งานใน Brainfuck Brainfuck จะรอการป้อนข้อมูลเนื่องจาก,ในท้ายข้อความ ฉันเชื่อว่าขัดกับกฎการมอบหมาย
Simon Forsberg

1
@SimonForsberg มันใช้เวลานาน แต่ในล่ามเหมือนลองออนไลน์และคนอื่น ๆ ส่วนใหญ่ฉันคิดว่า,แค่ตั้งค่าเซลล์เป็น 0 สำหรับ EOF
Destructible Lemon

41

C / Python 238 ตัวอักษร

สิ่งนี้ไม่ได้พิมพ์ตามที่ร้องขอ 100% แต่ค่อนข้างใกล้เคียง
รีบูตของการ์ดวันวาเลนไทน์ของฉัน

#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
มันจะพิมพ์อะไรถ้ามันไม่ถูกต้อง?
Beta Decay

4
สิ่งที่ printf ซ้อนกันจะสดใส ...
immibis

4
สิ่งนี้ไม่ถูกต้อง C. Clang บ่นเกี่ยวกับdefและ:หลังdef main()และคุณไม่ได้เปิดเนื้อหาของฟังก์ชั่นสำหรับ main คุณลองรวบรวมคำตอบของคุณเป็น C จริงๆหรือ
C0deH4cker

5
สาย#define def main(){0?หายไป
kay

3
#define returnทำให้ฉันร้องไห้นิดหน่อย ...
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);
}

เพิ่มบรรทัดใหม่สำหรับการจัดรูปแบบ ลองในCหรือC ++


32
ถ้าฉันอยู่บนแพลตฟอร์มที่ int เป็น 2 ไบต์ ฉันจะรับคอมไพเลอร์ C + ได้ที่ไหน
immibis

@immibis ฮ่าฮ่า: P แต่ทราบรุนแรงเคล็ดลับ struct ว่างอาจทำงาน:struct{}s;z=2*sizeof s
GRC

31

Befunge / > <> , 141 138 134 133 130 ไบต์

3 ไบต์บันทึกขอบคุณที่@Cole

เพื่อความแน่นอนฉันใช้ Befunge-98

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

ใช้ข้อเท็จจริงที่:

  • \ เป็นกระจกใน> <> และสลับใน Befunge
  • 'string'เป็นสตริงใน> <> และ'cเป็นถ่านใน Befunge

หากคุณไม่จำเป็นต้องใช้รหัส Befunge (ซึ่งฉันไม่คิดว่าคุณทำ) คุณสามารถลบทิ้งได้ 3 ไบต์ด้วยการแทนที่บรรทัดล่างด้วย?!;>ol
cole

23

PHP / MySQL, 147 ไบต์

-- $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
ในที่สุดฉันก็เข้าใจ
MikeTheLiar

1
คุณควรจะสามารถกำจัดวงเล็บของบรรทัดที่สองได้โดยที่น้อยกว่าสองไบต์:SELECT"This program wasn't written in MySQL, it was built for PHP!";
msh210

2
แต่นั่นจะไม่ทำงานใน PHP อีกต่อไป - มันจะทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์ SELECT "... " ไม่ใช่นิพจน์ PHP ที่ถูกต้อง
Razvan

22

Python 3 / > <> , 177 173 172 167 ไบต์

ขอบคุณ @mathmandan สำหรับการลบ 5 ไบต์!

นี่เป็นประสบการณ์แล้วก็ลองดูด้วย ยินดีรับข้อเสนอแนะกอล์ฟตั้งแต่นี้ค่อนข้างยาว ฉันพยายามอย่างดีที่สุดเพื่อนำข้อความมาใช้ซ้ำ แต่มันค่อนข้างยาก

ในทางเทคนิคแล้วมันจะเป็น Python 3 ที่โปรแกรมนี้ควรจะส่งออก (และฉันสามารถเปลี่ยนได้ถ้าฉันไม่ตรงตามข้อกำหนด - แต่ในตัวอย่างที่แสดงรายการ Python / C Python)

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"~/

ลองใช้กับล่าม> <> ล่ามและล่ามPython 3 ( ล่าม > <> ต้องการให้คุณป้อนรหัสด้วยตนเอง)

ผลตอบแทน

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

ใน> <> และ

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

ใน Python

คำอธิบาย (Python)

สำหรับด้านของงูหลามมันค่อนข้างง่าย นี่คือโค้ดที่เราสนใจ (โดยทั่วไปคือโค้ดที่ไม่มีความคิดเห็นซึ่งแสดงโดย a #ใน Python) โปรดทราบว่าใน Python \เป็นอักขระเลี่ยงเมื่อใช้ในสตริงดังนั้น\"ประเมิน"ในสตริง

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

สิ่งที่เราใส่ใจมากที่สุดที่นี่คือการดำเนินการกับตัวแปรaa:

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

คำสั่งพิมพ์จึงประเมินว่า

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

คำอธิบาย (> <>)

ตอนนี้เราไปถึงส่วนที่ยากขึ้น อีกครั้งนี่คือรหัสที่มีการลบบิตที่ไม่จำเป็นออก

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

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

บรรทัด 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

สแต็กตอนนี้ (ถ้าพิมพ์): \This program wasn't written in

บรรทัด 2:

โปรดสังเกตว่าบรรทัดที่ 2 เริ่มต้นที่/ตำแหน่งของตัวชี้จากบรรทัดที่ 1 และเลื่อนจากขวาไปซ้าย

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

สแตกตอนนี้: ><> ni nettirw t'nsaw margorp sihT

บรรทัด 3:

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

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

สแต็กในขณะนี้ ( xเป็นตัวละครที่เกิดขึ้นจากการเพิ่ม "r" และช่องว่าง - ไม่ใช่อักขระจริงเพียงตัวยึดจากฉัน):

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

บรรทัด 4:

ตัวชี้ชี้ลงไปเรื่อย ๆ เพื่อให้บรรทัดนี้รับประกันไม่มีคำอธิบายเพิ่มเติม

บรรทัด 5:

เริ่มต้น/และไปทางซ้าย

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

สแต็กตอนนี้ (เอาท์พุทกลับรายการ):

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

และนั่นควรเป็นคำอธิบาย แจ้งให้เราทราบหากมีความไม่สอดคล้องกันระหว่างคำอธิบาย / รหัสหรือถ้าฉันทำอะไรผิด ฉันเล่นกอล์ฟรหัสของฉันมากขึ้นในขณะที่ฉันกำลังเขียนคำอธิบายอยู่ดังนั้นฉันอาจมีรหัสเก่าและใหม่ผสมกันอยู่เล็กน้อย


มันจะผิดถ้าฉันบอกว่าคุณต้องเพิ่ม 3 เพราะมันไม่ใช่งูหลาม 2 มันไม่เป็นไร
บลู

หากครั้งนี้มีงูหลามเท่านั้นผมเชื่อว่าคุณสามารถแทนที่ด้วยaa[:-2][::-1] aa[-3::-1]ในกรณีนี้แน่นอนว่าอาจรบกวนการจัดรูปแบบ> <> แต่อาจคุ้มค่าที่จะพิจารณาหากคุณยังไม่มี โดยเฉพาะอย่างยิ่งผมค่อนข้างมั่นใจว่าคุณต้องการพื้นที่ด้านล่างvในแนวเดียวกันก่อนหน้านี้ แต่ดูเหมือนว่าprint(aa[-3::-1]+"Pytho"จะพอดีกับ 24 ตัวอักษรด้านล่างและจากนั้นคุณสามารถใส่ช่องว่างตามมาด้วยa=", it was built for "+ +"n"+a)ฉันไม่แน่ใจว่าสิ่งนี้จะผิดอย่างอื่นหรือไม่ แต่ถ้าได้ผลจะช่วยประหยัดได้ไม่กี่ไบต์
mathmandan

@ Mathathand ความคิดที่ดีฉันจะอัปเดตรหัสของฉันและเครดิตคุณ
โคล

งานที่ดี! FYI ผมคิดว่าเรื่องนี้จะทำงานได้ดีในหลาม 2 และในหลาม 2 print aa[-3::-1]+"Pytho" +"n"+aคุณสามารถบันทึกไบต์โดยวางวงเล็บในงบพิมพ์: อีกหนึ่งคำถามว่า: ในเวอร์ชัน> <> เกิดอะไรขึ้นกับสิ่ง1ที่ผลักไปยังสแต็กในตอนแรก
mathmandan

@ Mathathand ฉันคิดว่าล่ามที่ฉันใช้ไม่ได้พิมพ์อักขระถ้ามันไม่ถูกต้องหรือตัวอักษรที่พิมพ์ไม่แสดงเลย ฉันไม่แน่ใจ 100% ว่าทำไมการพิมพ์ตัวละครนั้นไม่สำคัญ ฉันค้นพบมันโดยไม่ตั้งใจ
โคล

19

Batch .BAT File / BCM .CMD ไฟล์, 194 185 ไบต์

@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

แก้ไข: บันทึกแล้ว 9 ไบต์และแก้ไขด้วยการหายไป!ขอบคุณDLosc

ใช่มีความแตกต่างระหว่างไฟล์ BAT และ CMD การอ้างอิง โดยพื้นฐานแล้ว CMD จะตั้งค่าERRORLEVELบนSETคำสั่งในขณะที่ BAT ไม่ได้หมายความว่าที่นี่คำสั่งERRORLEVELmalformed mdจะได้รับการเคลียร์SET v=1ในเวอร์ชั่นหนึ่ง สคริปต์นี้ยึดตามตัวอย่างที่มีให้โดย "Ritchie" ในกลุ่มข่าวสารที่

โปรดทราบว่าสคริปต์ย่อที่ด้านบนสันนิษฐานว่าENABLEEXTENSIONSจะตั้งค่าON(โดยค่าเริ่มต้นแล้วในทุกแพลตฟอร์ม) สคริปต์ที่ขยายด้านล่างตั้งค่าไว้อย่างชัดเจนเพื่อรับประกันการทำงานที่ถูกต้อง หากไม่มีSETคำสั่งสำหรับ CMD จะไม่อนุญาตส่วนขยายทั้งหมดและ (ในระบบบางระบบ) อาจไม่ได้ตั้งค่าERRORLEVELอย่างเหมาะสม

ขยายตัวและตั้งข้อสังเกต

@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

... มีความแตกต่างระหว่าง CMD และ BAT ใช่ไหม
Stan Strum

18

Javascript / C, 148 146 143 chars

//\
alert/*
main(){puts/**/("This program wasn't written in "//\
+"Javascript"+/*
"C"/**/", it was built for "//\
+"C!")/*
"Javascript!");}/**/

C: http://codepad.org/u8UimGLc http://codepad.org/Y80M5jpc http://codepad.org/m4DB2Ndd
Javascript: เพียงคัดลอกรหัสไปยังคอนโซลของเบราว์เซอร์


1
@ Qwertiy ยอดเยี่ยม!

2
สวย.
Derek 朕會功夫

16

CJam / GolfScript, 81 78 ไบต์

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

81 ไบต์รุ่นดั้งเดิม:

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

14

PHP / Perl, 98 96 ไบต์

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

Dunno ถ้านี่คือการโกงหรือไม่เนื่องจากเท่าที่ผมสามารถบอกได้ว่าวิธีเดียวที่จะใช้ PHP ได้โดยไม่ต้องเปิดแท็กเป็นสิ่งที่ต้องการ<? php -r $(cat codefile.php)แต่สมมติว่าถูกกฎหมาย ... //เป็นความคิดเห็น PHP แต่ใน Perl เป็น regex (ซึ่งในคำสั่งด้วยตัวเองไม่ได้ทำอะไร) ที่เหลือควรอธิบายด้วยตนเอง

แก้ไข:ตอนนี้ใช้ bareword ในส่วน Perl เท่านั้น ฉันต้องการใช้สิ่งเหล่านี้ตั้งแต่แรกสำหรับทั้งสองภาษา แต่ PHP แสดงคำเตือนเมื่อคุณทำเช่นนั้นตรงกันข้ามกับ "ไม่ควรมีผลลัพธ์ไปยัง stderr"


1
<?'>#';เป็นไวยากรณ์ที่ถูกต้องในทั้งสองภาษา
primo

14

Ruby / Python 105 ตัวอักษร

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

มันดีจริงๆ! ฉันชอบโดยเฉพาะอย่างยิ่งที่ไม่มีความคิดเห็น
สไตล์

14

JavaScript 1.8 / JavaScript 1.7, 89 ไบต์

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

เพราะArray.prototype.reduceเป็นของใหม่ใน 1.8

แก้ไข: Golfed out 7 ไบต์โดยเริ่มต้นโดยตรงaแทนการใช้reverse()

แก้ไข: JavaScriptสามารถเขียนเป็นJSบันทึก 8 ไบต์

แก้ไข: ขอบคุณ Hedi สำหรับการชี้ให้เห็นว่าฉันสามารถบันทึกเพิ่มเติม 3 ไบต์ถ้าฉันไม่ใช้ตัวแปรbอีกต่อไป

แก้ไข: Golfed out 6 ไบต์โดยการคำนวณ7+aและ8-aที่a=1ถ้าลดการกำหนด (JS 1.8) และa=0หากไม่ได้กำหนด (JS 1.7)

แก้ไข: Hedi ดึงออกอีก 6 ไบต์แนะนำให้ใช้สตริงแม่แบบ

แก้ไข: ETHproductions ยื่นออกมา 2 ไบต์แนะนำa=!![].reduce;แทนa=[].reduce?1:0;

แก้ไข: no1xsyzy ดึงออกมาอีกหนึ่งไบต์แนะนำให้ย้อนกลับเช็คบูลีน


ด้วย "JS" แทน "JavaScript" โดยใช้ "JS 1" สองครั้ง ในสตริงของคุณสั้นกว่าการใช้ตัวแปร b
Hedi

คุณสามารถใช้เทมเพลตสตริงเพื่อทำให้โปรแกรมสั้นลง: `โปรแกรมนี้ไม่ได้เขียนใน JS 1 $ {7 + a} มันถูกสร้างขึ้นสำหรับ JS 1 $ {8 + a}!`
Hedi

2
ฉันคิดว่าคุณสามารถบันทึกไบต์ที่สองโดยการเปลี่ยนไปa=[].reduce?1:0; a=!![].reduce;
ETHproductions

@ ETHproductions ขอบคุณ แต่ฉันไม่คิดว่ามันจะได้ผล ฉันต้องการaเก็บค่า1หรือ0ไม่trueหรือfalse
Mario Trucco

@ETHproductions ขอโทษคุณพูดถูกฉันลองแล้วใช้งานได้ ขอบคุณ!
Mario Trucco

13

SWI-Prolog 6 / SWI-Prolog 7, 156 ไบต์

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

ใช้ความจริงที่ว่า double-quotes ""คือรหัสสตริง (เช่นรายการของรหัสอักขระ) ในรุ่น SWI-Prolog ที่เก่ากว่า 7 และเป็นประเภทสตริงที่เหมาะสมในเวอร์ชัน 7 is_list("")จึงจะเป็นเท็จในเวอร์ชัน 7 และเป็นจริงในรุ่นก่อนหน้า


12

BF / SPL, 5342 ไบต์

ฉันค่อนข้างแน่ใจว่านี่เป็นภาษาพูดของคนพูดภาษาเช็คสเปียร์คนแรกในเว็บไซต์นี้

อาจจะไม่ได้รับรางวัลใด ๆ ทำงานโดยการแอบใส่รหัส BF ลงในชื่อฉาก / ฉาก / รายการ รหัส SPL ใช้เครื่องหมายอัศเจรีย์แทนที่จะเป็นจุดยกเว้นในบางกรณี โปรแกรมไม่ควรป้อนข้อมูลดังนั้นเครื่องหมายจุลภาคในการประกาศอักขระถูก "ใส่ความคิดเห็น" โดยการ zeroing เซลล์และใส่วงเล็บเหลี่ยมรอบเครื่องหมายจุลภาค โพรซีเดอร์เดียวกันนี้ใช้เมื่อซ่อนวงเล็บเหลี่ยมรอบคำสั่ง 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]

ทดสอบ BF ที่https://repl.it/E8Hh/23

รหัส SPL ได้รับการทดสอบที่คอมไพเลอร์พบได้ที่นี่: 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}!"

ใน Ruby 1.8 ?9คือค่า ASCII ของ "9" ซึ่งคือ 8 modulo 49 ใน Ruby 1.9 เป็นสตริง "9" และ%49เป็นการดำเนินการจัดรูปแบบที่ไม่ทำอะไรเลยตั้งแต่ "9" ไม่มีสตริงรูปแบบใด ๆ ใน มัน.


11

Python 2.7.9 / Python 2.7.10, 127 bytes

เรามีโพสต์สองสามรายการที่ใช้รุ่นรอง แต่ไม่มีรายการใดที่ลงไปสู่ระดับถัดไป ...

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)

ลองใช้กับIdeone (Python 2.7.10) และrepl.it (ทางเทคนิค Python 2.7.2 แต่ควรให้ผลลัพธ์แบบเดียวกับ 2.7.9)

Python 2.7.10 ตามการเปลี่ยนแปลง :

เพิ่ม an __all__ไปยังtypesโมดูล

สิ่งนี้ผลักlen(dir(types))จาก 42 เป็น 43 ให้ความแตกต่างเป็นตัวเลขที่เราสามารถใช้ประโยชน์เพื่อสร้างผลลัพธ์ที่ต้องการ


10

Python / QBasic, 160 142 ไบต์

ทดสอบกับงูหลาม 3และQBasic 1.1 จะไม่ทำงานใน Python 2 โดยไม่ต้องเพิ่มfrom __future__ import print_functionในบรรทัด 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 + "!")
  • ใน Python 1#คือนิพจน์1(no-op) ตามด้วยความคิดเห็น ใน QBasic เป็นหมายเลขบรรทัด (ด้วยคำต่อท้ายประเภทที่ทำเครื่องหมายเป็นDOUBLE) DEFSTRคำสั่งบอก QBasic ว่าตัวแปรทั้งหมดที่มีชื่อขึ้นต้นด้วยAหรือB(กรณีตาย) เป็นตัวแปรสตริง ด้วยวิธีนี้เราสามารถเรียกตัวแปรของเราaและbแทนที่a$และb$(ซึ่งจะไม่ทำงานใน Python)
  • ใน QBasic 'เริ่มแสดงความคิดเห็น ใน Python ''คือสตริงว่าง (no-op) จากนั้นเราสลับชื่อภาษาและกำหนดนามแฝงสำหรับprintฟังก์ชั่น (เนื่องจากคำหลัก QBasic มีการจัดรูปแบบอัตโนมัติเป็นตัวพิมพ์ใหญ่)
  • วงเล็บในบรรทัดสุดท้ายนั้นไม่จำเป็นใน QBasic แต่จะไม่ทำอันตรายใด ๆ

หากฉันได้รับอนุญาตให้ปิดการจัดรูปแบบอัตโนมัติ (ซึ่งเป็นตัวเลือกในQB64แม้ว่าจะไม่ใช่ใน QBasic ดั้งเดิม) ฉันสามารถลดขนาดลงเหลือ114 ไบต์โดยใช้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 ไบต์: สลับเป็น QB64 จริง
CalculatorFeline

Autoformatting
CalculatorFeline

QB64 / Python 2 คือ 131 ไบต์! หรือ Python 3 ขนาด 133 ไบต์
CalculatorFeline

9

Perl / Ruby, 129 ไบต์

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]

ไม่มีการละเมิดการแสดงออกปกติในอันนี้เพียงแค่ทำให้ความจริงที่ว่า 0 เป็นความจริงในทับทิมเพื่อevalความหมายสำหรับsort(ซึ่งจริง ๆreverse) และprintfไอเอ็นจี Ruby ไม่ชอบใช้รายการสำหรับข้อโต้แย้งดังนั้นฉันต้องทำทีละข้อ


เหตุใดจึงaต้องเป็นตัวแปรอินสแตนซ์เมื่อเทียบกับตัวแปรโลคอล
Nic Hartley

@QPaysTaxes @sigil บนตัวแปรใน Perl แสดงว่าเป็นรายการใน Perl ที่จัดเก็บในพูด$aแทนจะไม่มีผลลัพธ์
Dom Hastings

อ่าฉันเข้าใจแล้ว ขอบคุณสำหรับคำอธิบาย
Nic Hartley

9

///และRetina , 95 + 3 = 98 ไบต์

/
//

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

+3 ไบต์สำหรับการ-sตั้งค่าสถานะใน Retina

คำอธิบายสำหรับ ///

คำสั่งแรกคือ

/
//

ลบบรรทัดใหม่ทั้งหมดออกจากส่วนที่เหลือของรหัสทำให้เกิด

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

ทุกอย่างจนถึง!เป็นเพียงตัวอักษรและพิมพ์ไปยัง STDOUT คำสั่งต่อไปคือ

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

แต่?.ไม่พบสตริงการค้นหาจึงไม่มีอะไรเกิดขึ้น จากนั้นรหัสที่เหลืออยู่//!ซึ่งเป็นคำสั่งที่ไม่สมบูรณ์ดังนั้นโปรแกรมจึงยุติลงโดยพิมพ์สตริงที่ถูกต้อง

คำอธิบายสำหรับ Retina

/
//

นี้จะบอก Retina เพื่อแทนที่ด้วย/ //แต่อินพุตว่างดังนั้นจึงไม่ตรงกับสิ่งใดเลย

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

สิ่งนี้จะแทนที่อินพุตด้วยสตริงในบรรทัดที่สอง

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

สิ่งนี้ตรงกับสตริง\/\/\/, it was built for Retina!และแทนที่ด้วยRetina, it was built for ///!เพื่อให้ผลลัพธ์ที่ถูกต้อง


คุณรู้ว่าฉันคิดว่ามันจะไม่สำคัญที่จะทำอย่างใดอย่างหนึ่งระหว่าง Retina และ rs ... ;)
kirbyfan64sos

@ kirbyfan64sos น่าจะเป็นไปได้ แต่มันจะสั้นแค่ไหน? ;)
Martin Ender

ถึงตอนนี้ฉันได้รับประมาณ 85 ไบต์ +3 -sถึงแม้ว่าการพูดในสิ่งที่ฉันทำจะทำให้เสียความสนุก! : D
kirbyfan64sos

1
@ kirbyfan64sos ไปข้างหน้าและโพสต์มันฉันไม่คิดว่าฉันจะมีเวลาที่จะค้นหาอาร์เอสได้ตลอดเวลาเร็ว ๆ นี้
Martin Ender

9

sed / Hexagony 251 ไบต์

/$/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: ลองออนไลน์!
Hexagony: ลองออนไลน์!


ใน sed จะพิมพ์สตริงที่ถูกต้องหากตรงกับสตริงว่างที่ท้าย (เสมอ) บรรทัดที่สองคือความคิดเห็น สิ่งนี้ต้องการสตริงบน STDIN แต่สามารถว่างได้ ( อนุญาตตามมตินี้ )

ตัวอย่าง:

echo '' | sed -f whatLanguage.sed

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

         / $ / 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 ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .

ฉันจะไม่เข้าใจ Hexagony ...
DJgamer98

@ DJgamer98 ฉันก็ไม่เข้าใจเหมือนกัน นี่เป็นครั้งแรกที่ฉันใช้มัน
Riley

คุณสามารถร่น Hexagony ให้สั้นลงได้โดยใช้ความจริงที่ว่า;เซลล์ปัจจุบัน mod 256 เพื่อกำหนดค่าไบต์ (เช่นคุณสามารถพิมพ์ช่องว่างP0;โดยไม่คำนึงถึงค่าเซลล์ปัจจุบัน) สคริปต์ CJam นี้สร้างคู่ทั้งหมด: cjam.tryitonline.net/ …
Martin Ender

9

Python / Retina, 133 120 119 117 115 ไบต์

ตอนนี้ฉันรู้เพิ่มเติมเกี่ยวกับจอประสาทตาและ regexes ฉันได้เล่นกอล์ฟอีกเล็กน้อย มันยังใช้งานได้จริงในขณะนี้

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

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

Python เพิ่งพิมพ์ข้อความ Retina จะแทนที่อะไรก็ได้ด้วยคำสั่งการพิมพ์ Python จากนั้นลบprintเครื่องหมายอัญประกาศ แล้วฉันสลับPythonและและลบRetina#

ลองใน Python | ลองใน Retina



@ jimmy23013 ไม่มีข้อ จำกัด ในขณะที่มีการโพสต์ความท้าทายนี้ นั่นเป็นคุณสมบัติที่ค่อนข้างใหม่ของจอประสาทตา
mbomb007


8

JavaScript / CoffeeScript ขนาด125 124 ไบต์

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

ใน CoffeeScript a==bจะถูกคอมไพล์ลงไปa===bซึ่งทำให้เงื่อนไขระดับกลางเป็นเท็จ ฉันใช้เวทย์มนตร์เล็กน้อยในการแปลงค่าบูลีนเป็นจำนวนเต็ม

บันทึก 1 ไบต์ขอบคุณ @DomHastings!

รุ่น 125 ไบต์:

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

ดี! ฉันคิดว่าคุณสามารถบันทึกไบต์ด้วย+(b=0=='0')แทน+0!
Dom Hastings

แทนที่จะb^1คิดว่าคุณสามารถใช้~b
อิสมาเอลมิเกล

@ IsmaelMiguel Nope undefinedScriptมันบอกว่ามันถูกสร้างขึ้นสำหรับ
kirbyfan64sos

ฉันลืม~1 == -2ไป แต่สามารถเขียนเป็น(b=0=='0')+0 หรือ+(b=0=='0') b=+(0=='0')ที่ควรตัด 1 ไบต์
Ismael Miguel

@IsmaelMiguel ฉันได้ทำไปแล้วในเวอร์ชันล่าสุด ...
kirbyfan64sos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.