Muriel là một ngôn ngữ mà cách duy nhất để lặp là tạo ra một câu đố và thực hiện nó. Công việc của bạn là tạo ngôn ngữ của riêng bạn với thuộc tính này và triển khai ngôn ngữ đó bằng ngôn ngữ đã có từ trước.
Chúng tôi sẽ định nghĩa một ngôn ngữ giống như Muriel như sau:
- Nó có một lệnh tích hợp để thực thi mã bằng ngôn ngữ của chính nó, tương tự như
@
lệnh của Muriel hoặc pythonexec
. - Đó là Turing hoàn thành.
- Nếu bạn loại bỏ lệnh thực thi tích hợp, nó không còn hoàn thành Turing.
Muriel giống như Muriel với @
lệnh thực thi tích hợp sẵn. Smurf cũng giống Muriel (lệnh thực thi tích hợp của nó là x
). Python không giống Muriel, vì nó vẫn hoàn thành Turing nếu bạn gỡ bỏ exec
.
Công việc của bạn là tạo ra một ngôn ngữ lập trình giống như Muriel, và sau đó cung cấp việc triển khai nó bằng ngôn ngữ bạn chọn. Điểm của bạn là thời gian thực hiện mà bạn đang cố gắng giảm thiểu.
Ghi chú:
- Việc thực thi tích hợp của bạn không cần phải hoạt động chính xác như Muriel. Tùy thuộc vào cách bạn xử lý việc chấm dứt chương trình con, lỗi, phạm vi, v.v ...
- Ngôn ngữ bạn viết thực hiện không thể tự nó có Muriel-như thế nào. (Điều này là do đó
@
không phải là một mục hợp lệ.) Nó cũng phải tồn tại trước bài viết này.
eval
lệnh? (Ví dụ: Python exec
và eval
) Yêu cầu loại bỏ tất cả chúng để mất TCness?