Identifikasi kompiler

11

Tantangan
Anda diberi fungsi compile(s: String): Integeryang mengembalikan 0jika sbisa dikompilasi dan apa pun selain 0jika gagal (kode yang dihasilkan tidak penting).

Masalahnya adalah Anda tidak tahu untuk bahasa apa fungsi itu dibuat, jadi terserah kepada Anda untuk mencari tahu dengan memberikan potongan kecil kode fungsi dan mengamati apa yang dikembalikan. Bagian yang baik adalah bahwa tim ilmuwan telah mencoba sebelumnya dan mempersempit daftarnya menjadi C, C ++, C #, Java dan JavaScript (ini adalah satu-satunya bahasa luas yang memiliki sintaksis yang sama yang dapat saya pikirkan).

Aturan

  • Aturan golf-kode umum berlaku.
  • Tidak ada format output yang ketat; selama itu bisa dibaca dan dimengerti tidak apa-apa.
  • Jika 5 bahasa ini tidak cukup untuk Anda maka Anda dapat menambahkan favorit Anda sendiri dan Anda akan dihargai dengan bintang tambahan (★) (yang tidak melakukan apa-apa).

Catatan 1 : kompiler up to date dengan standar terbaru dari bahasa apa pun yang dirancang untuknya.
Catatan 2 : Saya tahu JavaScript tidak dapat dikompilasi , tetapi berjalan melalui beberapa proses parsing; jika itu kode JavaScript yang valid maka ia lolos

adrianton3
sumber
2
Apa yang harus kami sediakan? Set string yang dapat digunakan untuk membedakan compiler, meminimalkan panjang total string?
Geoff Reedy
@ GeoffReedy Saya hanya mencari kode untuk menentukan bahasa, tetapi penjelasan yang Anda berikan lebih dari diterima
adrianton3

Jawaban:

7

Total panjang cuplikan 8; program uji 83 (C)

Bedakan JavaScript dan C dari C ++, Java, dan C #

a;

Bedakan JavaScript dari C

0

Bedakan C ++ dari C # dan Java

#

Bedakan C # dan Jawa

[:a]

Kode C untuk menentukan bahasa

#define C(x)compile(#x)?
main(){puts(C(a;)C(#)C([:a])"J":"C#":"C+":C(0)"C":"JS");}

Cuplikan diuji dengan

C: gcc 4.7.2 dengan -std = c99
C ++: g ++ 4.7.2 dengan -std = c ++ 11
Java: javac 1.7.0_09
JavaScript: JavaScript-C 1.8.5
C #: Mono C # compiler versi 2.10.8.0

Geoff Reedy
sumber
#define C(x)compile(#x)?menghemat tempat dan banyak kutipan.
ugoren
@ugoren terima kasih, saya benar-benar berpikir saya mencoba hal pengetatan tetapi tidak berhasil karena suatu alasan; Saya pasti punya masalah lain juga, karena sekarang berfungsi dengan baik
Geoff Reedy
Tapi entah bagaimana Anda membuatnya bingung - C(#x)tidak akan berhasil.
ugoren