Xác định trình biên dịch


11

Thử thách
Bạn được cung cấp một hàm compile(s: String): Integertrả về 0nếu scó thể được biên dịch và bất cứ điều gì khác ngoài 0việc nó không thành công (mã kết quả không quan trọng).

Vấn đề là bạn không biết chức năng này được tạo ra để làm ngôn ngữ gì, do đó, tùy thuộc vào bạn để tìm ra điều đó bằng cách cung cấp cho các đoạn mã nhỏ mã và quan sát những gì nó trả về. Điểm hay là một nhóm các nhà khoa học đã thử trước bạn và đã thu hẹp danh sách thành C, C ++, C #, Java và JavaScript (đây là những ngôn ngữ phổ biến duy nhất có cú pháp tương tự tôi có thể nghĩ ra).

Quy tắc

  • Quy tắc chung golf-golf áp dụng.
  • Không có định dạng đầu ra nghiêm ngặt; miễn là nó dễ đọc và dễ hiểu thì không sao.
  • Nếu 5 ngôn ngữ này không đủ cho bạn thì bạn có thể thêm các mục yêu thích của riêng mình và bạn sẽ được thưởng thêm các ngôi sao (★) (không làm gì cả).

Lưu ý 1 : trình biên dịch được cập nhật với tiêu chuẩn mới nhất của bất kỳ ngôn ngữ nào mà nó được thiết kế cho.
Lưu ý 2 : Tôi biết JavaScript không biên dịch , nhưng nó đi qua một số quá trình phân tích cú pháp; nếu đó là mã JavaScript hợp lệ thì nó sẽ vượt qua


2
Chúng tôi sẽ cung cấp những gì? Tập hợp các chuỗi có thể được sử dụng để phân biệt các trình biên dịch, giảm thiểu tổng chiều dài của các chuỗi?
Geoff Reedy

@GeoffReedy Tôi chỉ tìm mã để xác định ngôn ngữ, nhưng những lời giải thích bạn cung cấp được chào đón nhiều hơn
adrianton3

Câu trả lời:


7

Tổng số đoạn dài 8; chương trình thử nghiệm 83 (C)

Phân biệt JavaScript và C với C ++, Java và C #

a;

Phân biệt JavaScript với C

0

Phân biệt C ++ với C # và Java

#

Phân biệt C # và Java

[:a]

Mã C để xác định ngôn ngữ

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

Đoạn trích được thử nghiệm với

C: gcc 4.7.2 với -std = c99
C ++: g ++ 4.7.2 với -std = c ++ 11
Java: javac 1.7.0_09
JavaScript: JavaScript-C 1.8.5
C #: Trình biên dịch Mono C # phiên bản 2.10.8.0


#define C(x)compile(#x)?tiết kiệm một không gian và rất nhiều trích dẫn.
ugoren

@ugoren cảm ơn, tôi thực sự nghĩ rằng tôi đã thử điều chuỗi hóa nhưng nó không hoạt động vì một số lý do; Tôi cũng đã có một số vấn đề khác, vì nó hoạt động tốt bây giờ
Geoff Reedy

Nhưng bằng cách nào đó bạn đã làm cho nó bị lẫn lộn - C(#x)sẽ không hoạt động.
ugoren
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.