Lưu ý: Tôi sẵn sàng đưa tiền thưởng cho bất kỳ câu trả lời nào mà tôi thấy thú vị.
Thách thức của bạn là thiết kế một máy tính tập lệnh Turing- Complete (OISC):
OISC là một máy trừu tượng chỉ sử dụng một hướng dẫn - không cần phải sử dụng opcode ngôn ngữ máy. Với sự lựa chọn sáng suốt cho một hướng dẫn duy nhất và được cung cấp nguồn lực vô hạn, OISC có khả năng trở thành một máy tính phổ quát giống như các máy tính truyền thống có nhiều hướng dẫn.
Dưới đây là một số ví dụ về các lệnh đơn tạo ra một OISC hoàn chỉnh.
Quy tắc:
Bạn phải cung cấp một giải thích hoặc bằng chứng về nó
Bạn phải cung cấp một thông dịch viên cho ngôn ngữ của bạn. Trình thông dịch này chỉ nên bị hạn chế bởi bộ nhớ / thời gian (ví dụ: không có hạn chế do người dùng áp dụng). Nếu bạn không cung cấp một thông dịch viên cho ngôn ngữ của bạn (vì bất kỳ lý do nào khác ngoài sự lười biếng), bạn phải chứng minh rằng có thể viết một ngôn ngữ. Một thông dịch viên phải có thể .
Bạn phải chứng minh tính đầy đủ của nó
Bạn phải bao gồm một bằng chứng chính thức rằng ngôn ngữ của bạn là Turing-Complete. Một cách đơn giản để làm điều này là bằng cách chứng minh rằng nó có thể diễn giải hoặc có hành vi tương tự như một ngôn ngữ hoàn chỉnh Turing khác. Ngôn ngữ cơ bản nhất để giải thích sẽ là Brainf ** k .
Ví dụ: một ngôn ngữ bình thường có tất cả các lệnh giống như Brainf ** k (và thiếu cùng giới hạn bộ nhớ do người dùng áp dụng) là Turing-perfect vì mọi thứ có thể được thực hiện trong Brainf ** k đều có thể được thực hiện bằng ngôn ngữ .
Dưới đây là danh sách các ngôn ngữ Turing-hoàn thành rất đơn giản để thực hiện.
Yêu cầu bổ sung của OISC
OISC này chỉ nên có một hướng dẫn - nó không thể có nhiều hướng dẫn với một trong số chúng làm cho nó trở nên hoàn chỉnh.
OISC của bạn có thể sử dụng bất kỳ cú pháp nào bạn muốn. Bạn nên xác định trong câu trả lời của mình hướng dẫn là gì, dữ liệu là gì và không có gì (ví dụ: khoảng trắng). Sáng tạo!
Đối số không chỉ cần là số nguyên. Ví dụ: /// là một ví dụ đẹp về OISC hoàn chỉnh.
Làm thế nào và nếu đầu vào và đầu ra được thực hiện và đưa ra là tùy thuộc vào bạn. Hầu hết các OISC triển khai I / O thông qua các vị trí bộ nhớ cụ thể, nhưng có thể có những cách khác để làm như vậy và bạn được khuyến khích tìm một.
Câu trả lời hợp lệ phải cung cấp một số mã ví dụ trong OISC của bạn, bằng cách đưa nó vào bài đăng hoặc liên kết đến một thử thách đơn giản được giải quyết bằng ngôn ngữ.
Bỏ phiếu
Cử tri, xin nhớ đừng upvote đệ trình nhàm chán. Ví dụ:
- Độ dài tương đương
- Việc triển khai OISC hiện tại (người trả lời, vui lòng tạo riêng của bạn!)
- Một "OISC" trong đó đối số đầu tiên chỉ định một lệnh để gọi ( ví dụ )
Tuy nhiên, bạn nên nâng cấp các bài nộp thú vị, sáng tạo, chẳng hạn như:
- Một OISC dựa trên phương trình toán học
- Một ZISC hoàn chỉnh dựa trên mạng thần kinh
- Một OISC trong đó I / O đầu ra xảy ra theo những cách khác ngoài các vị trí bộ nhớ nhất định
Chiến thắng
Như với cuộc thi phổ biến , câu trả lời có nhiều phiếu nhất sẽ chiến thắng! Chúc may mắn!