Wyzwanie
Otrzymujesz funkcję, compile(s: String): Integer
która zwraca, 0
jeśli s
można ją skompilować i wszystko inne, niż 0
jeśli się nie powiedzie (wynikowy kod nie jest ważny).
Chodzi o to, że nie wiesz, dla jakiego języka jest tworzona funkcja, więc to od Ciebie zależy, czy podasz funkcji małe fragmenty kodu i obserwujesz, co ona zwraca. Zaletą jest to, że zespół naukowców próbował przed tobą i zawęził listę do C, C ++, C #, Java i JavaScript (są to jedyne szeroko rozpowszechnione języki o podobnej składni, o których mogłem pomyśleć).
Zasady
- Obowiązują ogólne zasady gry w golfa.
- Nie ma ścisłego formatu wyjściowego; pod warunkiem, że jest czytelny i zrozumiały, jest w porządku.
- Jeśli te 5 języków nie wystarcza, możesz dodać własne ulubione, a otrzymasz dodatkowe gwiazdki (★) (które nic nie robią).
Uwaga 1 : kompilator jest na bieżąco z najnowszym standardem w jakimkolwiek języku, dla którego został zaprojektowany.
Uwaga 2 : Wiem, że JavaScript się nie kompiluje , ale przechodzi pewien proces analizy; jeśli jest to poprawny kod JavaScript, to przechodzi
Odpowiedzi:
Całkowita długość fragmentu 8; program testowy 83 (C)
Odróżnij JavaScript i C od C ++, Java i C #
Odróżnij JavaScript od C.
Odróżnij C ++ od C # i Java
Rozróżnij C # i Java
Kod C określający język
Fragmenty testowane przy użyciu
C: gcc 4.7.2 z -std = c99
C ++: g ++ 4.7.2 z -std = c ++ 11
Java: javac 1.7.0_09
JavaScript: JavaScript-C 1.8.5
C #: Wersja kompilatora Mono C # 2.10.8.0
źródło
#define C(x)compile(#x)?
oszczędza miejsce i wiele cytatów.C(#x)
nie zadziała.