Levenquine tuần hoàn


45

Lý lịch

Như hầu hết các nhà quản lý PPCG sẽ biết, 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 printcâ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 .


Đối với những người có thể xem các bài đăng đã bị xóa: bài đăng Sandbox đã ở đây .

Tôi nghĩ rằng cũng tốt cho câu trả lời bao gồm độ dài của chu kỳ.
mbomb007

Điều gì sẽ xảy ra nếu, nói, ngôn ngữ có một số chức năng để thực hiện đầu ra, nhưng tất cả chúng đều chia sẻ các ký tự?
Ørjan Johansen

2
@ RjanJohansen: Tôi đoán tôi sẽ không quá phản đối việc chỉ chọn một trong số họ và gắn bó với nó trong trường hợp đó. Tuy nhiên, nó được cho là không cấu hình; Tôi muốn quy tắc là khách quan, bởi vì nếu không mọi người có xu hướng cố gắng chọc vào sơ hở của nó, và nếu bạn cố gắng làm cho quy tắc quá phức tạp, có xu hướng tranh luận về ý nghĩa của nó.

Nó có thể là một chút khôn ngoan? Như trong khoảng cách từ mã nguồn ban đầu là 1 byte?
Bạch tuộc ma thuật Urn

Câu trả lời:


34

Gol> <> , 252 167 byte

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_

Hãy thử trực tuyến!

Và chương trình ( Xác minh ) lẫn nhau :

0<CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

Hãy thử trực tuyến!

Điều này chủ yếu được lấy cảm hứng từ câu trả lời của tôi cho thử thách Quines độc quyền lẫn nhau , với câu trả lời cũng sẽ đến câu trả lời của Bubbler 's Gol> <> .

Đây là một chương trình xác minh bạn có thể chạy. Thật không may, nó hết thời gian, nhưng bạn có thể xem cách một phần mã xây dựng phần khác và sau đó bạn có thể sao chép phiên bản cuối cùng được in và dán nó vào đầu vào để tiếp tục. Cuối cùng, bạn sẽ đạt được chương trình đầu tiên bạn đưa vào.

Giải trình

Cả hai phần của mã bao gồm hai phần, phần thực thi thực tế và dữ liệu chứa phần khác của mã. Cả hai đều hoạt động thực tế giống hệt nhau:

Chúng phụ thuộc vào một cờ (ký tự đầu tiên của mã, 1hoặc 0). Nếu cờ được đặt, họ sẽ bắt đầu xây dựng phần mã khác bằng cách lấy ký tự thứ 252 xuống, thêm / bớt 28từ đó và gắn nó vào mã.

Ví dụ, đây là hai lần lặp đầu tiên của mã sau chương trình đầu tiên ở trên:

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_C

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽ

Cuối cùng, khi nó đến cuối phần hiện tại, nó lật ký tự thứ hai của mã ( <tới >và quay lại) để trỏ đến phần khác.

Đây là cả hai phần cùng nhau, sắp chuyển từ thực hiện phần đầu tiên sang thực hiện phần thứ hai.

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

Hãy thử trực tuyến!

Các cờ đối diện với từng phần, vì vậy phần mới thực thi sẽ bắt đầu xóa phần mã khác cho đến khi đạt được mã riêng. Tại thời điểm này, nó lật cờ và chu kỳ lặp lại.

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.