Lý lịch
Như hầu hết các nhà quản lý PPCG sẽ biết, quine là một chương trình xuất mã nguồn riêng của nó khi chạy; và khoảng cách Levenshtein giữa hai chuỗi là số lần chèn, xóa và chỉnh sửa tối thiểu cần thiết để thay đổi một chuỗi thành chuỗi khác. Trong thử thách này, chúng tôi kết hợp hai khái niệm thành một "levenquine": một chương trình xuất mã nguồn riêng của nó, nhưng với một phiên bản của một ký tự được chèn, xóa hoặc thay thế bằng một ký tự khác. (Nói cách khác, khoảng cách Levenshtein giữa chương trình và đầu ra của nó là 1.)
Nhiệm vụ
Viết một levenquine sao cho đầu ra của nó là một levenquine, đầu ra của chương trình đó cũng là một levenquine, v.v. Ngoài ra, tại một số điểm, trình tự liên tục chạy chương trình, chạy đầu ra của nó, chạy đầu ra của đầu ra, v.v ... cuối cùng phải quay lại chương trình gốc.
Có một hạn chế bổ sung khiến mọi thứ khó khăn hơn nhiều: phải có hai chương trình riêng biệt ở đâu đó trong chu kỳ này không có ký tự chung (nói cách khác, không có ký tự nào tồn tại trong một chương trình và cũng tồn tại trong chương trình kia). Do đó, chương trình của bạn sẽ phải dần dần biến thành một bộ ký tự khác và quay lại.
Nếu bạn đang sử dụng ngôn ngữ lập trình không thể tránh khỏi chương trình soạn thảo không yêu cầu trong bất kỳ chương trình nào tạo ra đầu ra (ví dụ: chỉ có một cách để viết print
câu lệnh và không có hình thức đầu ra hữu ích nào khác), bạn có thể coi mục đích đó là không tồn tại cho mục đích xác định nhân vật nào hai chương trình có điểm chung. Tuy nhiên, bạn vẫn phải tính rằng mẫu soạn sẵn cho mục đích xác định thuộc tính Levenquine của mã.
Làm rõ
- Mỗi "chương trình" trong chu trình có thể là một chương trình đầy đủ hoặc một chức năng. Tất cả chúng không phải giống nhau, ví dụ một số có thể là chương trình đầy đủ và một số có thể là chức năng.
- Không phải tất cả các chương trình trong chu trình cần sử dụng cùng một hình thức đầu ra. Ví dụ, một số có thể xuất qua đầu ra tiêu chuẩn và một số có thể xuất qua lỗi tiêu chuẩn.
- Các chương trình của bạn sẽ được chạy mà không có đầu vào (hoặc bằng các ngôn ngữ yêu cầu đầu vào để làm bất cứ điều gì, đầu vào đơn giản nhất có thể).
- Quy tắc quine thích hợp áp dụng; Mặc dù Levenquine không phải là một câu hỏi thực sự, bạn có thể không làm bất cứ điều gì bất hợp pháp khi viết một bài kiểm tra thích hợp. Cụ thể, chương trình null không bao giờ là đầu ra hợp lệ từ Levenquine thích hợp (và do đó không thể là một phần của chu kỳ của bạn).
- Hạn chế Levenquine được đo bằng các ký tự, thay vì byte (ví dụ:
ê
một ký tự ngay cả khi nguồn được mã hóa theo UTF-8). Hạn chế không có ký tự chung cũng được đo bằng các ký tự. Điều kiện chiến thắng, tuy nhiên, tính bằng byte.
Điều kiện chiến thắng
Vui lòng gửi ít nhất ba chương trình sau từ chu trình: chương trình ngắn nhất (tính bằng byte); và hai chương trình từ chu trình không có ký tự chung. Có thể hai trong số này giống nhau và cũng có thể cả ba đều khác biệt. Điểm số được dựa trên độ dài tính bằng byte của chương trình ngắn nhất, với thời gian ngắn hơn là tốt hơn, do đó làm cho đây là một loại thi đấu golf mã .