Có nhiều thách thức nói "giải thích X", trong đó X là một ngôn ngữ đơn giản. Theo tôi, đó là cách quá nhàm chán. Để cung cấp cho tất cả những người chần chừ trên internet một điều thú vị để làm, bạn có thể thử thực hiện thử thách này:
Thử thách
Chọn một ngôn ngữ $LANG
. $LANG
có thể là bất kỳ ngôn ngữ lập trình hoàn chỉnh nào hoặc một tập hợp con hoàn chỉnh của ngôn ngữ lập trình. Xin lưu ý rằng nếu bạn bỏ qua một tính năng của ngôn ngữ $LANG
để giải thích, bạn cũng không được sử dụng nó cho chương trình của riêng mình, vì bài nộp của bạn cũng phải được viết $LANG
.
Viết một trình biên dịch / thông dịch cho $LANG
bằng văn bản $LANG
. Bạn có thể sử dụng tất cả các phương tiện (bao gồm eval
và bạn bè) ngôn ngữ của bạn có sẵn để viết trình biên dịch này. Để thực hiện nhiệm vụ khó khăn hơn, có một hạn chế: Chương trình của bạn phải có khả năng diễn giải / biên dịch tất cả các chương trình hợp lệ $LANG
ngoại trừ chính trình thông dịch / trình biên dịch của bạn. Nếu chương trình được giải thích / biên dịch là trình thông dịch hoặc trình biên dịch của bạn (bất kể tên tệp), chương trình của bạn sẽ làm một cái gì đó hoàn toàn không liên quan đến chức năng của trình thông dịch hoặc trình biên dịch (chẳng hạn như barfing hoặc in Hello, world!
).
Để làm cho nhiệm vụ này thậm chí phức tạp hơn, chương trình của bạn không được đọc nguồn của chính nó khi biên dịch hoặc giải thích.
Thông số kỹ thuật
- Nhiệm vụ này là mã golf. Việc gửi với các ký tự ít nhất là đúng sẽ thắng. Trong trường hợp hòa, giải pháp được gửi đầu tiên sẽ thắng.
- Chương trình / tập lệnh của bạn nên đọc chương trình sẽ được diễn giải từ một tập tin. Bạn có thể mã hóa đường dẫn và tên của nó. Khi tệp được đọc, bạn có thể biên dịch tệp sang tệp khác (Điều đó phải được thực thi trên hệ thống của bạn) hoặc chạy trực tiếp. Nếu
$LANG
thiếu khả năng đọc tệp, bạn có thể chọn một cách khác để đọc mã phù hợp$LANG
. Bạn không thể chọn$LANG
làm tập hợp con của ngôn ngữ khác nhưng đã loại bỏ các capoverites đọc tệp. - Quy tắc golf thông thường áp dụng. Đó là: ngôn ngữ thú cưng cá nhân của bạn mà bạn tạo ra chỉ để giải quyết thách thức này bị cấm, nếu giải pháp trở nên tầm thường khi sử dụng nó (Chẳng hạn như xác định một chương trình char duy nhất thực hiện chính xác giải pháp). Lạm dụng các quy tắc được khuyến khích.