Identifizieren Sie den Compiler

11

Die Herausforderung
Sie erhalten eine Funktion, compile(s: String): Integerdie zurückgibt, 0wenn ssie kompiliert werden kann und alles andere als 0wenn sie fehlschlägt (der resultierende Code ist nicht wichtig).

Die Sache ist, dass Sie nicht wissen, für welche Sprache die Funktion gemacht ist. Es liegt also an Ihnen, dies herauszufinden, indem Sie der Funktion kleine Codeausschnitte geben und beobachten, was sie zurückgibt. Das Gute daran ist, dass ein Team von Wissenschaftlern es vor Ihnen versucht und die Liste auf C, C ++, C #, Java und JavaScript eingegrenzt hat (dies sind die einzigen weit verbreiteten Sprachen mit einer ähnlichen Syntax, die ich mir vorstellen kann).

Regeln

  • Es gelten die allgemeinen Code-Golf-Regeln.
  • Es gibt kein striktes Ausgabeformat. Solange es lesbar und verständlich ist, ist es in Ordnung.
  • Wenn Ihnen diese 5 Sprachen nicht ausreichen, können Sie Ihre eigenen Favoriten hinzufügen und Sie werden mit zusätzlichen Sternen (★) belohnt (die nichts bewirken).

Hinweis 1 : Der Compiler ist auf dem neuesten Stand der Sprache, für die er entwickelt wurde.
Hinweis 2 : Ich weiß, dass JavaScript nicht kompiliert wird , aber es durchläuft einen Analyseprozess. Wenn es sich um einen gültigen JavaScript-Code handelt, wird er übergeben

adrianton3
quelle
2
Was sollen wir bieten? Die Zeichenfolge, mit der die Compiler voneinander unterschieden werden können, um die Gesamtlänge der Zeichenfolgen zu minimieren?
Geoff Reedy
@GeoffReedy Ich habe nur nach dem Code gesucht, um die Sprache zu bestimmen, aber die Erklärungen, die Sie gegeben haben, sind mehr als willkommen
adrianton3

Antworten:

7

Gesamtlänge des Snippets 8; Testprogramm 83 (C)

Unterscheiden Sie JavaScript und C von C ++, Java und C #

a;

Unterscheiden Sie JavaScript von C.

0

Unterscheiden Sie C ++ von C # und Java

#

Unterscheiden Sie C # und Java

[:a]

C-Code zur Bestimmung der Sprache

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

Snippets getestet mit

C: gcc 4.7.2 mit -std = c99
C ++: g ++ 4.7.2 mit -std = c ++ 11
Java: javac 1.7.0_09
JavaScript: JavaScript-C 1.8.5
C #: Mono C # -Compiler Version 2.10.8.0

Geoff Reedy
quelle
#define C(x)compile(#x)?spart Platz und viele Zitate.
Ugoren
@ugoren danke, ich dachte eigentlich, ich hätte das Stringifizierungs-Ding ausprobiert, aber es hat aus irgendeinem Grund nicht funktioniert; Ich muss auch ein anderes Problem gehabt haben, denn es funktioniert jetzt gut
Geoff Reedy
Aber du hast es irgendwie durcheinander gebracht - C(#x)wird nicht funktionieren.
Ugoren