Saya bukan bahasa yang Anda cari!

182

Bukankah itu menjengkelkan ketika Anda menemukan sepotong kode dan Anda tidak tahu bahasa apa itu ditulis? Tantangan ini mencoba memecahkan masalah ini.

Tantangan

Anda harus menulis sebuah program yang ketika dijalankan dalam dua bahasa yang berbeda, akan menampilkan string:

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

  • Dalam output, nama bahasa harus memiliki huruf besar resmi. misalnya: CJam, C ++

  • Tidak ada program yang harus mengambil input dari pengguna.

  • Saat dijalankan dalam kedua bahasa, output harus stdout atau setara.

  • Seharusnya tidak ada output untuk stderr di kedua program.

  • Anda dapat menggunakan komentar dalam bahasa apa pun.

  • Dua versi berbeda dari bahasa yang sama dihitung sebagai bahasa yang berbeda.

    • Jika ini dilakukan, program harus menampilkan nomor versi utama, dan jika berjalan pada dua versi minor yang berbeda, harus melaporkan versi minornya juga.

    • Anda tidak boleh menggunakan fungsi versi prebuilt (ini termasuk variabel yang telah dievaluasi saat runtime).

Contoh output:

Perl dan Ruby:

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

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

Python dan C:

  • Python: 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 dan 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 dan 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!

Ini adalah kode golf sehingga kode terpendek dalam byte menang.

Biru
sumber
2
"Dua versi berbeda dari bahasa yang sama dihitung sebagai bahasa yang berbeda." Jadi menipu seperti dengan C pre dan melewati 99 komentar itu valid? mudah ^^
Zaibis
1
Ditambahkan, rasanya paradoksal tetapi cocok dengan aturan Anda.
Zaibis
1
Tidak ada yang melakukan polyglot Whitespace / Python?
Bukan karena Charles
lupakan. Melihat implementasi 23
Bukan bahwa Charles
Apakah mengandalkan program untuk dijalankan dengan jumlah juru bahasa tertentu sebagai input? artinya, aktif argv[0]?
kucing

Jawaban:

86

Foo / CJam, 70 byte

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

Di Foo, seperti yang diketahui banyak orang, ia hanya mencetak semuanya dalam tanda kutip ganda, dan mengabaikan sebagian besar karakter lain atau melakukan sesuatu yang tidak memengaruhi output dalam kebanyakan kasus. Singkatnya, \@tidak melakukan apa-apa dan semua string dicetak apa adanya.

Di CJam, \menukar dua item teratas, dan @memindahkan item ke-3 ke atas, yang mengatur string ke dalam urutan yang benar. Dan setelah program berakhir, semua yang tersisa di tumpukan dicetak secara otomatis.

jimmy23013
sumber
7
Dan hanya untuk bersenang-senang, ada solusi 75 byte yang sama untuk Fission / CJam:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
Martin Ender
3
Bagus. Saya punya "This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/untuk Clip / CJam.
Dennis
5
Saya datang ke utas ini untuk mengirim solusi Foo, seharusnya sudah menyadari semua orang tahu sekarang betapa mudahnya menulis polyglot Foo.
histokrat
Apakah ada tautan ke spesifikasi bahasa pemrograman Foo?
justhalf
1
@ErikE Menambahkan beberapa penjelasan.
jimmy23013
140

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

Terima kasih di @Hurkyls, @Qwertiys, @ jimmy23013 dan @MD XF untuk petunjuk Anda.

versi golf:

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

versi tanpa ungolfed:

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

Sedikit deskripsi:

Versi C sebelumnya C99 hanya memiliki komentar multiline seperti ini:

/*foo*/

dengan C99, komentar single line diperkenalkan. seperti ini:

//foo

jadi jika Anda mengkompilasi garis seperti ini:

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

kode untuk kompilasi terkait kompilasi c99 adalah:

c = -4.5 -4.5;

sedangkan kode yang relevan untuk kompiler c89 adalah:

(sebagai yang pertama /bukan bagian dari komentar dan karenanya memperlakukan sebagai operator)

c = -4.5 / -4.5;
Zaibis
sumber
10
+1 untuk jawaban yang luar biasa. Sedikit penjelasan untuk mereka yang tidak terbiasa dengan C akan lebih baik.
ace_HongKongIndependence
4
@ace Saya percaya ini bergantung pada komentar gaya C99. Di baris keempat, perhatikan //**/. Di C89, itulah operator divisi diikuti oleh komentar kosong. Di C99, //mulai komentar satu baris, sehingga sisa baris kosong. Oleh karena itu, di C89, menjadi (90-(-4.5/-4.5)), yaitu 89, sedangkan di C99, menjadi (90-(-4.5-4.5)), yaitu 99.
kirbyfan64sos
14
Untuk menyimpan beberapa byte, gunakan 188-csebagai ganti c==99?89:99.
1
Saya tidak berpikir Anda membutuhkan ruang dan kurung luar dengan tugas.
PurkkaKoodari
1
105 byte
MD XF
88

JavaScript / Ruby, 170 byte

Mungkin hanya 2.0, tampaknya tidak berfungsi di setidaknya 2.1.5 ... Sunting: Pembaruan sesuai saran dari @ Jordan semoga bekerja di beberapa versi sekarang!

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

Menyalahgunakan ~operator dalam Ruby yang akan memperlakukan =~sebagai pertandingan regex mengembalikan posisi pertandingan pertama dalam string ( 0), tetapi JavaScript akan memperlakukannya sebagaimana = ~/1/adanya -1(karena /1/dikonversi ke NaNuntuk operasi numerik, yang memiliki 0nilai).

Dom Hastings
sumber
Jawaban ini tidak berfungsi untuk saya di Ruby 2.1.5. Saya mendapatkan:NoMethodError: undefined method `log' for :log:Symbol
EMBLEM
@EMBLEM Pengujian saya dilakukan pada Ruby 2.0 yang ada di dalam OS X, saya belum menguji apa-apa selain itu, tapi saya pasti akan menambahkan komentar yang mengindikasikan bahwa itu mungkin rusak di versi lain!
Dom Hastings
Di versi Ruby yang lebih baru, definisi metode mengembalikan nama metode sebagai simbol, jadi Anda evalkembali :log. Saya pikir Anda bisa memperbaikinya dengan menempatkan ;csetelah end. The =~/ = ~trik besar, meskipun!
Jordan
Anda juga bisa menghemat. Beberapa byte dengan menggunakan $><<sbukan puts sdan menggunakan tanda kutip ganda sehingga Anda dapat memasukkan backslash wasn\'t.
Jordan
@ Jordan, terima kasih! Tidak yakin bagaimana saya tidak menemukan penghapusan \'dengan tanda kutip ganda, dan $><<berarti saya bisa menerapkan perbaikan yang Anda sebutkan dan menyimpan jumlah byte yang sama!
Dom Hastings
82

Python 2 / Python 3, 92

Menggunakan pemeriksaan versi Python "standar" (bilangan bulat vs float).

print("This program wasn't written in Python %d, it was built for Python %d!"%(3/2*2,4-3/2))
feersum
sumber
3
Ini dibicarakan di kotak pasir dan konsensus adalah untuk mengizinkan hal semacam ini
Biru
14
@ flawr Apakah Python dan Cobra diizinkan? ;)
Beta Decay
7
@ flawr Python sebenarnya dinamai komedi ~~ kelompok ~~ dewa, Monty Python.
Mutantoe
@Mutantoe Sepertinya Anda bahwa "Monty" bukan nama binatang, permainan kata-kata tidak akan berhasil.
Pierre Arlaud
57

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

Memancing adalah bahasa yang didasarkan pada seorang nelayan yang berjalan berkeliling menangkap ikan. Untuk membuat program dalam bahasa ini yang pertama-tama harus menentukan dok tempat ia berjalan. Dermaga hanya menyediakan aliran kontrol ke suatu program. Dermaga dalam program ini adalah:

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

Setiap kali Cperintah itu ditemukan, nelayan membuang garis untuk menangkap instruksi. The +dan -petunjuk menurunkan dan meningkatkan panjang garis nya masing-masing. vmengubah arah lemparannya ke bawah. Ikan yang ia tangkap dalam program ini adalah:

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

> <> adalah bahasa yang didasarkan pada seekor ikan yang bergerak melalui air. The vperintah mulai ikan bergerak ke bawah, di mana ia kemudian tercermin ke kanan dengan \perintah. Segala sesuatu di antara tanda kutip didorong ke tumpukan. Setelah tali didorong ke tumpukan, ikan membungkus ke sisi lain di mana ia dipantulkan ke bawah oleh \. Itu kemudian mencetak isi tumpukan dengan:

>r!`ol?!;32.
TheNumberOne
sumber
Anda dapat mengurangi kode Anda dengan 13 byte dengan meletakkan loop cetak Anda untuk> <> di spasi putih di baris ketiga (yang saya pikir tidak akan mengganggu bagian memancing, meskipun saya tidak tahu bahasa itu). Saya tidak yakin bagaimana komentar ini akan menangani seluruh kode, jadi inilah tautan hastebin: hastebin.com/quqinozizi (Saya mungkin telah mengacaukan jarak pada baris ketiga tapi saya pikir semuanya sudah selaras dengan benar).
cole
@Cole Tidak berhasil. Sebenarnya saran Anda benar-benar menghapus 16 karakter.
TheNumberOne
14
Poliglot memancing dan memancing ... mungkin yang pertama dari jenisnya!
Mark K Cowan
ini sangat lucu apa!
D.Tat
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?

Perhatikan bahwa program ini membutuhkan linefeed tambahan. Tidak ada baris yang mengandung spasi spasi, jadi salin / tempel harus berfungsi dengan baik.

Verifikasi

Untuk menguji kode Malbolge dalam juru bahasa online ini , rekatkan kode itu di area kode Malbolge dan klik Load/Reset, lalu Execute.

Untuk menguji 23 kode dalam interpreter online , paste di Sumber wilayah, tekan Enteruntuk memasukkan linefeed Trailing, jenis 23di Konsol daerah (untuk beralih dari default 23.dezsy notasi untuk auto-deteksi) dan klik Run Interpreter!.

Dennis
sumber
20
Bung ... sepertinya bom meledak di kodemu!
D.Tat
8
o_0 bagaimana Anda menulis kode Malbolge
Pavel
Kalah besar! codegolf.stackexchange.com/questions/55960/…
Krzysztof Szewczyk
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");}/*]]--*/

Mengambil keuntungan dari fitur di mana Lua memperlakukan tanda pagar di baris pertama sebagai komentar untuk memungkinkan unix shebangs. Kalau tidak, balas komentar bahasa lain dalam komentarnya sendiri.

Untuk mencukur byte, saya mengandalkan perilaku implisit yang hanya memancarkan peringatan di GCC dan Dentang: deklarasi int implisit untuk definisi printf utama dan implisit.

benpop
sumber
3
Sangat cerdik dilakukan!
Sapi dukun
2
Jika menghapus "include <stdio.h>" terlalu ekstrem, saya akan mengembalikan jawabannya.
benpop
2
Mengapa tidak menggunakan //komentar di bagian C? Menghemat 2 byte.
BrainStone
54

JavaScript / Haskell, 158 byte 147 byte

Gagasan umum: menyelinap sintaks komentar masing-masing ke yang lain.

Dalam satu baris:

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

Seperti apa rasanya 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 ++ "!"

Seperti apa ini dalam 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++"!"
CR Drost
sumber
3
alertadalah pemain golf.
wizzwizz4
51

Brainfuck / Foo, 769 byte

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

Jawaban yang sangat rumit dan kompleks ... atau tidak.

Fatalisasi
sumber
21
Sial, bukan kamu lagi Foo: D
Beta Decay
5
Saya suka bagaimana Anda berpikir.
Pierre Arlaud
13
Saat menjalankan ini di Brainfuck, Brainfuck akan menunggu input karena ,di teks di akhir. Saya percaya itu bertentangan dengan aturan penugasan.
Simon Forsberg
1
@SimonForsberg sudah lama, tetapi dalam bahasa interpreter seperti mencobanya online, dan kebanyakan orang lain saya pikir, ,hanya menetapkan sel ke 0, untuk EOF
Destructible Lemon
41

C / Python, 238 karakter

Ini tidak mencetak 100% persis apa yang diminta, tetapi cukup dekat.
Reboot kartu hari valentine saya .

#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();
ugoren
sumber
5
Apa yang dicetak jika tidak tepat?
Beta Decay
4
Benda bersarang itu brilian ...
immibis
4
Ini tidak valid C. Dentang mengeluh tentang defdan :setelahnya def main(), dan Anda tidak benar-benar membuka badan fungsi untuk main. Apakah Anda benar-benar mencoba menyusun jawaban Anda di C?
C0deH4cker
5
Saluran #define def main(){0?tidak ada
kay
3
#define returnmembuat saya sedikit menangis ...
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);
}

Baris baru ditambahkan untuk pemformatan. Cobalah di C atau C ++ .

grc
sumber
32
Bagaimana jika saya menggunakan platform di mana int adalah 2 byte? Di mana saya bisa mendapatkan kompiler C +?
immibis
@immibis haha: P tetapi dengan catatan serius trik struct kosong mungkin bekerja:struct{}s;z=2*sizeof s
grc
31

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

3 byte disimpan berkat @Cole .

Tepatnya, saya menggunakan Befunge-98.

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

Menggunakan fakta bahwa:

  • \ adalah mirror di> <> dan swap di Befunge
  • 'string'adalah string dalam> <> dan 'cmerupakan char di Befunge
PurkkaKoodari
sumber
Kecuali Anda membutuhkannya untuk kode Befunge (yang saya pikir tidak Anda lakukan), Anda dapat mencukur 3 byte dengan mengganti garis bawah dengan?!;>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!");
Razvan
sumber
17
Akhirnya, saya agak mengerti.
MikeTheLiar
1
Anda harus dapat menyingkirkan tanda kurung baris kedua, dengan dua byte lebih sedikit:SELECT"This program wasn't written in MySQL, it was built for PHP!";
msh210
2
Tapi itu tidak akan berfungsi lagi di PHP - itu akan menyebabkan kesalahan parse. SELECT "..." bukan ekspresi PHP yang valid.
Razvan
22

Python 3 / > <> , 177 173 172 167 Bytes

Terima kasih kepada @mathmandan karena telah memangkas 5 byte!

Nah ini adalah pengalaman, dan yang mencoba juga. Setiap saran golf dipersilahkan, karena ini cukup panjang. Saya mencoba yang terbaik untuk menggunakan kembali teks, tetapi itu cukup sulit.

Secara teknis, itu akan menjadi Python 3 bahwa program ini harus menampilkan (dan saya bisa mengubah itu jika saya tidak memenuhi spesifikasi - tetapi dalam contoh output Python / C Pythonterdaftar).

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

Cobalah menggunakan interpreter online> <> dan interpreter Python 3 ( interpreter >> <> mengharuskan Anda untuk memasukkan kode secara manual)

Kembali

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

di> <> dan

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

dalam Python.

Penjelasan (Python)

Untuk sisi Python, cukup sederhana. Berikut kode yang kami pedulikan (pada dasarnya kode tanpa komentar, yang dilambangkan dengan #in Python). Perhatikan bahwa dalam Python \adalah karakter pelarian ketika digunakan dalam string, jadi \"evaluasinya "dalam string.

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

Yang paling kami pedulikan di sini adalah operasi yang dilakukan pada variabel aa:

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

Pernyataan cetak dengan demikian dievaluasi menjadi

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

Penjelasan (> <>)

Sekarang kita sampai pada bagian yang lebih sulit. Sekali lagi, ini kode dengan bit yang tidak perlu dihapus.

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

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

Baris 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

Tumpukan sekarang (jika dicetak): \This program wasn't written in

Baris 2:

Perhatikan bahwa garis 2 dimulai pada /karena posisi penunjuk dari garis 1, dan bergerak ke kanan ke kiri.

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

Tumpukan sekarang: ><> ni nettirw t'nsaw margorp sihT

Baris 3:

Seperti baris sebelumnya, baris ini dimulai pada \, di mana baris 2 mengirimkan pointer. Perhatikan bahwa karena penunjuk membungkus garis ketika mencapai yang pertama asaya akan menulis penjelasan saya di mana penunjuk pergi (dan dengan demikian apa yang dieksekusi)

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

Tumpukan sekarang ( xadalah karakter yang dibentuk oleh penambahan "r" dan spasi. - itu bukan karakter yang sebenarnya, hanya pengganti dari saya):

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

Baris 4:

Pointer terus berlanjut ke bawah sehingga baris ini tidak memerlukan penjelasan lebih lanjut.

Baris 5:

Mulai dari /dan ke kiri.

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

Tumpukan sekarang (output terbalik):

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

Dan itu harusnya untuk penjelasan. Beritahu saya jika ada ketidakkonsistenan antara penjelasan / kode atau jika saya melakukan kesalahan; Saya menurunkan kode saya lagi sementara saya berada di tengah-tengah menulis penjelasan sehingga saya mungkin telah mencampur bit kode lama dan baru.

cole
sumber
Akan salah jika saya mengatakan bahwa Anda harus menambahkan 3 karena itu bukan python 2. Tidak apa-apa.
Biru
Jika ini hanya Python, saya yakin Anda bisa menggantinya aa[:-2][::-1]dengan aa[-3::-1]. Dalam hal ini, tentu saja, itu dapat mengganggu pemformatan> <>, tetapi mungkin ada baiknya mempertimbangkan jika Anda belum melakukannya. Khususnya saya cukup yakin Anda membutuhkan spasi di bawah vpada baris sebelumnya, tetapi sepertinya print(aa[-3::-1]+"Pytho"akan masuk ke dalam 24 karakter di bawah a=", it was built for "+, dan kemudian Anda bisa menempatkan spasi diikuti oleh +"n"+a). Saya tidak yakin apakah ini akan merusak sesuatu yang lain, tetapi jika berhasil itu akan menghemat beberapa byte.
mathmandan
@mathmandan Ide bagus, saya akan memperbarui kode saya dan memuji Anda.
cole
Pekerjaan yang baik! FYI, saya pikir ini akan bekerja dengan baik di Python 2, dan di Python 2 Anda dapat menyimpan byte dengan menjatuhkan kurung dalam laporan cetak: print aa[-3::-1]+"Pytho" +"n"+a. Namun satu pertanyaan lain: dalam versi> <>, apa yang terjadi pada 1yang semula didorong ke stack?
mathmandan
@mathmandan Saya pikir penerjemah yang saya gunakan tidak mencetak karakter jika tidak valid atau karakter yang dicetak tidak muncul sama sekali. Jujur saya tidak 100% yakin mengapa mencetak karakter itu tidak masalah; Saya menemukannya secara tidak sengaja.
cole
19

File BAT. File BAT /. CMD File, 194 185 Bytes

@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

Sunting: Disimpan 9 byte, dan koreksi yang hilang !berkat DLosc

Ya, ada perbedaan antara file BAT dan CMD. Referensi. Pada dasarnya, CMD menetapkan ERRORLEVELpada SETperintah, sementara BAT tidak, artinya di sini ERRORLEVELset oleh cacat mdperintah akan dibersihkan oleh SET v=1satu versi tetapi tidak yang lain. Script ini didasarkan pada contoh yang diberikan oleh "Ritchie" di utas newsgroup itu.

Perhatikan bahwa skrip yang diperpendek di atas ENABLEEXTENSIONSdianggap diatur ON(secara default pada setiap platform). Skrip yang diperluas di bawah secara eksplisit mengaturnya, untuk menjamin fungsionalitas yang benar. Tanpa itu, SETperintah untuk CMD tidak mengizinkan semua ekstensi, dan (pada beberapa sistem, mungkin) mungkin tidak mengatur dengan ERRORLEVELtepat.

Diperluas dan dikomentari

@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
AdmBorkBork
sumber
... ada perbedaan antara CMD dan BAT?
Stan Strum
16

CJam / GolfScript, 81 78 byte

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

Versi 81 byte asli:

"This program wasn't written in "["CJam"", it was built for ""GolfScript"]-1a%"!"
jimmy23013
sumber
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!";

Tidak tahu apakah ini curang atau tidak, karena sejauh yang saya tahu satu-satunya cara untuk menjalankan PHP tanpa <?tag pembuka adalah sesuatu seperti php -r $(cat codefile.php). Tetapi dengan asumsi itu legal ... //adalah komentar PHP, tetapi di Perl itu adalah regex (yang, dalam pernyataannya sendiri, tidak melakukan apa-apa). Sisanya harus cukup jelas.

Sunting: Sekarang menggunakan bareword di bagian Perl-only. Saya ingin menggunakan yang di tempat pertama untuk kedua bahasa, tetapi PHP menampilkan peringatan ketika Anda melakukan itu, bertentangan dengan "Seharusnya tidak ada output ke stderr."

DLosc
sumber
1
<?'>#';adalah sintaks yang valid dalam kedua bahasa.
Primo
14

Ruby / Python, 105 karakter

a=["Ruby","Python"];a.sort();print("This program wasn't written in "+a[0]+", it was built for "+a[1]+"!")
preshing
sumber
Ini sangat bagus! Saya terutama suka bahwa tidak ada komentar yang digunakan.
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}!`

Karena Array.prototype.reduce baru dalam 1,8

EDIT: Golf 7 byte dengan langsung menginisialisasi adaripada menggunakanreverse()

EDIT: JavaScriptdapat ditulis sebagaiJS , menghemat 8 byte

EDIT: Terima kasih Hedi karena telah menunjukkan bahwa saya dapat menyimpan 3 byte lebih banyak jika saya tidak menggunakan variabel blagi

EDIT: Golf 6 byte oleh komputasi 7+adan 8-a, di mana a=1jika mengurangi didefinisikan (JS 1.8) dan a=0jika tidak didefinisikan (JS 1.7)

EDIT: Hedi mengeluarkan 6 byte lebih menunjukkan penggunaan string template

EDIT: ETHproduk golf 2 byte menyarankan a=!![].reduce;bukana=[].reduce?1:0;

EDIT: no1xsyzy bermain golf satu byte lagi menyarankan untuk membalikkan cek boolean

Mario Trucco
sumber
Dengan "JS", bukan "JavaScript", menggunakan dua kali "JS 1." di string Anda lebih pendek daripada menggunakan variabel b.
Hedi
Anda dapat menggunakan string templat untuk membuatnya lebih singkat: `Program ini tidak ditulis dalam JS 1. $ {7 + a}, ini dibuat untuk JS 1. $ {8 + a}!`
Hedi
2
Saya pikir Anda dapat menyimpan dua byte dengan mengubah a=[].reduce?1:0;ke a=!![].reduce;.
ETHproduksi
@ ETHproductions Terima kasih, tapi saya tidak berpikir itu akan berhasil Saya perlu amemegang nilai 1atau 0, bukan trueataufalse
Mario Trucco
@ ETHproductions maaf, Anda benar, saya mencoba dan berfungsi. Terima kasih!
Mario Trucco
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).

Menggunakan fakta bahwa tanda kutip ganda ""adalah kode string (yaitu daftar kode karakter) dalam versi SWI-Prolog yang lebih tua dari 7, dan merupakan tipe String yang tepat di versi 7. is_list("")dengan demikian akan salah di versi 7 dan benar di versi sebelumnya.

Fatalisasi
sumber
12

BF / SPL, 5342 bytes

Saya cukup yakin ini adalah polyglot Bahasa Pemrograman Shakespeare pertama di situs ini.

Mungkin tidak akan memenangkan hadiah apa pun. Bekerja dengan menyelinap kode BF ke judul act / scene / program. Kode SPL menggunakan tanda seru alih-alih titik kecuali untuk beberapa kasus. Program tidak seharusnya mengambil input, jadi koma dalam deklarasi karakter "dikomentari" dengan memusatkan sel dan menempatkan tanda kurung di sekitar koma. Prosedur yang sama berlaku ketika menyembunyikan tanda kurung siku di sekitar pernyataan 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]

Uji BF di https://repl.it/E8Hh/23 .

Kode SPL diuji di kompiler yang ditemukan di sini: https://github.com/drsam94/Spl/ .

clamchowder314
sumber
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}!"

Di Ruby 1.8, ?9adalah nilai ASCII dari "9", yang merupakan 8 modulo 49. Di Ruby 1.9, itu adalah string "9", dan %49merupakan operasi pemformatan yang tidak melakukan apa-apa karena "9" tidak memiliki string format apa pun di saya t.

histokrat
sumber
11

Python 2.7.9 / Python 2.7.10, 127 byte

Kami memiliki beberapa pos yang menggunakan versi minor, tetapi tidak ada yang naik ke tingkat berikutnya ...

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)

Cobalah di Ideone (Python 2.7.10) dan repl.it (secara teknis Python 2.7.2, tetapi harus memberikan hasil yang sama dengan 2.7.9).

Python 2.7.10, menurut changelog :

Menambahkan sebuah __all__ke typesmodul.

Ini didorong len(dir(types))dari 42 menjadi 43, memberikan perbedaan numerik yang dapat kita manfaatkan untuk menghasilkan output yang diinginkan.

DLosc
sumber
10

Python / QBasic, 160 142 byte

Diuji dengan Python 3 dan QBasic 1.1 . Tidak akan bekerja di Python 2 tanpa menambahkan from __future__ import print_functionke baris 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 + "!")
  • Dalam Python, 1#adalah ekspresi 1(no-op) diikuti oleh komentar. Di QBasic, ini adalah nomor baris (dengan tipe suffix yang menandainya sebagai a DOUBLE). The DEFSTRpernyataan mengatakan QBasic bahwa semua variabel yang namanya mulai dengan Aatau B(case-sensitive) adalah variabel string. Dengan begitu, kita bisa memanggil variabel kita adan bbukannya a$dan b$(yang tidak akan bekerja dengan Python).
  • Di QBasic, 'dimulai komentar. Dalam Python, ''adalah string kosong (tanpa-op). Kemudian kami menukar nama bahasa dan menetapkan alias untuk printfungsi (karena kata kunci QBasic diformat secara otomatis menjadi huruf besar).
  • Tanda kurung pada baris terakhir tidak diperlukan dalam QBasic, tapi jangan salahkan juga.

Jika saya diizinkan untuk mematikan autoformatter (yang merupakan opsi di QB64 , meskipun tidak di QBasic asli), saya bisa turun ke 114 byte menggunakan 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+"!"
DLosc
sumber
-3 byte: Beralih ke QB64 yang sebenarnya.
CalculatorFeline
Pemformatan otomatis.
CalculatorFeline
QB64 / Python 2 adalah 131 byte! Atau Python 3 untuk 133 byte.
CalculatorFeline
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]

Tidak ada penyalahgunaan ekspresi reguler dalam hal ini, hanya membuat sebagian besar fakta bahwa 0 benar di Ruby ke evaldefinisi untuk sort(yang sebenarnya reverses) dan printfing. Ruby tidak suka menggunakan daftar untuk argumen, jadi saya harus melakukan masing-masing secara individual.

Dom Hastings
sumber
Mengapa aharus menjadi variabel instan, bukan variabel lokal?
Nic Hartley 4-15
@ QPaysTaxes @sigil pada variabel di Perl menunjukkan bahwa itu adalah daftar, di Perl menyimpan, katakan $asaja, tidak menghasilkan output.
Dom Hastings
Ah, begitu. Terima kasih untuk penjelasannya.
Nic Hartley 4-15
9

/// dan Retina , 95 + 3 = 98 byte

/
//

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

+3 byte untuk -sbendera di Retina.

Penjelasan untuk ///

Instruksi pertama adalah

/
//

menghapus semua baris baru dari sisa kode, menghasilkan

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

Semuanya terserah !hanya literal dan dicetak untuk STDOUT. Instruksi selanjutnya adalah

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

Tetapi string pencarian ?.tidak dapat ditemukan, jadi tidak ada yang terjadi. Kemudian kode yang tersisa adalah //!instruksi yang tidak lengkap sehingga program berakhir, setelah mencetak string yang benar.

Penjelasan untuk Retina

/
//

Ini memberitahu Retina untuk menggantikan /dengan //. Tapi inputnya kosong, jadi ini tidak cocok dengan apa pun.

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

Ini menggantikan input dengan string di baris kedua.

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

Ini cocok dengan string \/\/\/, it was built for Retina!dan menggantinya dengan Retina, it was built for ///!untuk memberikan hasil yang benar.

Martin Ender
sumber
Anda tahu, saya pikir itu akan sepele untuk melakukan satu antara Retina dan rs ...;)
kirbyfan64sos
@ kirbyfan64sos Mungkin, tapi seberapa pendek itu? ;)
Martin Ender
Nah, sejauh ini saya sudah mendapatkan sekitar 85 byte + 3 -s, meskipun mengatakan apa yang saya lakukan akan merusak kesenangan! : D
kirbyfan64sos
1
@ kirbyfan64sos Silakan dan posting, saya tidak berpikir saya akan punya waktu untuk melihat rs dalam waktu dekat.
Martin Ender
9

sed / Hexagony 251 Bytes

/$/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: Cobalah Online!
Hexagony: Cobalah Online!


Selain itu, ia mencetak string yang benar jika cocok dengan string kosong di akhir (selalu). Baris kedua adalah komentar. Ini memang membutuhkan string pada STDIN, tetapi bisa kosong ( diizinkan berdasarkan konsensus ini ).

Contoh:

echo '' | sed -f whatLanguage.sed

Dalam Hexagony, /pengalihan pertama ke kiri bawah, itu mengikuti sisi kiri ke tempat bagian sed dimulai, kemudian hanya membungkus kiri ke kanan, ke bawah garis, kanan ke kiri, ke bawah garis, dan sebagainya. Hex diperluas terlihat seperti ini:

         / $ / 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 ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .
Riley
sumber
Saya tidak akan pernah mengerti Hexagony ...
DJgamer98
@ DJgamer98 Saya juga tidak terlalu mengerti. Ini pertama kalinya saya menggunakannya.
Riley
Anda dapat mempersingkat Hexagony sedikit dengan memanfaatkan fakta yang ;mengambil mod sel 256 saat ini untuk menentukan nilai byte (mis. Anda dapat mencetak spasi dengan P0;terlepas dari nilai sel saat ini). Skrip CJam ini menghasilkan semua pasangan: cjam.tryitonline.net/...
Martin Ender
9

Python / Retina, 133 120 119 117 115 byte

Sekarang saya tahu lebih banyak tentang Retina dan regex, saya telah memainkannya sedikit lebih banyak. Ini juga benar-benar berfungsi sekarang.

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

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

Python hanya mencetak pernyataan. Retina menggantikan apa pun dengan pernyataan cetak Python, lalu menghapus printdan kutipan apa pun. Kemudian, saya swap Pythondan Retinadan menghapus #.

Coba dengan Python | Coba di Retina

mbomb007
sumber
@ jimmy23013 Batas tidak ada pada saat tantangan ini diposting. Itu fitur yang relatif baru dari 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!")

Dalam CoffeeScript, a==bdikompilasi ke bawah a===b, yang membuat kondisi menengah salah. Saya menggunakan sedikit sihir untuk mengubah nilai boolean ke integer.

Disimpan 1 byte berkat @DomHastings!

Versi 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!")
kirbyfan64sos
sumber
Bagus! Saya pikir Anda dapat menyimpan byte dengan +(b=0=='0')bukannya +0!
Dom Hastings
Alih-alih b^1, saya pikir Anda bisa menggunakan~b
Ismael Miguel
@IsmaelMiguel Nggak. Dikatakan itu dibangun untuk undefinedScript.
kirbyfan64sos
Saya lupa itu ~1 == -2. Tetapi (b=0=='0')+0bisa ditulis sebagai +(b=0=='0'). Atau b=+(0=='0'). Itu harus memotong 1 byte.
Ismael Miguel
@IsmaelMiguel Saya sudah melakukan itu dalam versi terbaru ...
kirbyfan64sos