Identifica il compilatore


11

La sfida
Ti viene data una funzione compile(s: String): Integerche restituisce 0se spotrebbe essere compilata e qualsiasi altra cosa 0se non fallisce (il codice risultante non è importante).

Il fatto è che non sai per quale lingua è fatta la funzione, quindi spetta a te capirlo dando alla funzione piccoli frammenti di codice e osservando ciò che restituisce. La parte buona è che un team di scienziati ha provato prima di te e ha ristretto l'elenco a C, C ++, C #, Java e JavaScript (questi sono gli unici linguaggi molto diffusi che hanno una sintassi simile che mi viene in mente).

Regole

  • Si applicano le regole generali di code-golf.
  • Non esiste un formato di output rigoroso; purché sia ​​leggibile e comprensibile va bene.
  • Se queste 5 lingue non ti bastano, puoi aggiungere i tuoi preferiti e sarai ricompensato con stelle extra (★) (che non fanno nulla).

Nota 1 : il compilatore è aggiornato con gli standard più recenti di qualunque lingua sia progettata.
Nota 2 : So che JavaScript non viene compilato , ma richiede un processo di analisi; se è un codice JavaScript valido, passa


2
Cosa dobbiamo fornire? L'insieme di stringhe che è possibile utilizzare per distinguere i compilatori, riducendo al minimo la lunghezza totale delle stringhe?
Geoff Reedy,

@GeoffReedy Stavo cercando solo il codice per determinare la lingua, ma le spiegazioni fornite sono più che benvenute
adrianton3,

Risposte:


7

Lunghezza totale dello snippet 8; programma di test 83 (C)

Distingua JavaScript e C da C ++, Java e C #

a;

Distingua JavaScript da C

0

Distingue C ++ da C # e Java

#

Distingua C # e Java

[:a]

Codice C per determinare la lingua

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

Frammenti testati con

C: gcc 4.7.2 con -std = c99
C ++: g ++ 4.7.2 con -std = c ++ 11
Java: javac 1.7.0_09
JavaScript: JavaScript-C 1.8.5
C #: versione compilatore Mono C # 2.10.8.0


#define C(x)compile(#x)?salva uno spazio e molte citazioni.
ugoren,

@ugoren grazie, in realtà pensavo di aver provato la cosa della stringificazione ma non ha funzionato per qualche motivo; Devo aver avuto anche qualche altro problema, perché ora funziona bene
Geoff Reedy l'

Ma in qualche modo ti sei confuso - C(#x)non funzionerà.
ugoren,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.