Quine an toàn xoay


17

Viết một quine thích hợp mà mỗi vòng quay của nó là một quine thích hợp.

Ví dụ: nếu mã nguồn của bạn là abcdef, thì:

  • abcdef sẽ xuất abcdef
  • bcdefa sẽ xuất bcdefa
  • cdefab sẽ xuất cdefab
  • defabc sẽ xuất defabc
  • efabcd sẽ xuất efabcd
  • fabcde sẽ xuất fabcde

Một vòng quay "được thực hiện bằng cách chia một chuỗi thành hai mảnh và đảo ngược thứ tự của chúng" .

Chấm điểm

Đây là . Câu trả lời ngắn nhất trong byte thắng. Tiêu chuẩn áp dụng.


Vì vậy, tôi có thể có chương trình aaabbbvà tôi có thể nói rằng vòng quay tiếp theo là bbbaaa? Hay vòng quay tiếp theo sẽ phải baaabb?
Beta Decay

1
Vòng quay tiếp theo là baaabb.
Nữ tu bị rò rỉ

1
Lưu ý bên cạnh, quine phân hạch tiêu chuẩn là một nguyên tắc khác nhau của an toàn xoay vòng: cho dù bạn xoay nó như thế nào, nó sẽ luôn in mã nguồn gốc.
Martin Ender

1
Nếu một quine trong một ngôn ngữ là một byte, đó có phải là gian lận không?
MD XF

1
này một Quine thích hợp?
tsh

Câu trả lời:


10

Mã máy Motorola MC14500B , 1 byte

Điểm 1 byte được lấy từ hai hướng dẫn 4 bit:

0000 0010

Giải trình

Motorola MC145008 là bộ xử lý đơn chip, một bit, CMOS được tối ưu hóa cho các tác vụ định hướng quyết định. Bộ xử lý được đặt trong gói 16 pin và có 16 hướng dẫn bốn bit. Các hướng dẫn thực hiện các thao tác logic trên dữ liệu xuất hiện trên dòng dữ liệu hai chiều một chiều và dữ liệu trong Đăng ký kết quả tích lũy một bit trong ICU. Tất cả các hoạt động được thực hiện ở cấp độ bit.

Các chân của bộ xử lý được đánh số:

Gim lại công việc được giao

Các hướng dẫn được trình bày cho chip trên 4 chân hướng dẫn, ( I0, I1, I2, I3), và đang bám vào Hướng dẫn Đăng ký, (IR), trên các cạnh tiêu cực đang diễn ra của X1.

Theo thuật ngữ của giáo dân, các chân từ 4 đến 7, được sử dụng để trình bày Thanh ghi lệnh với một lệnh, nhưng các bit được diễn giải theo thứ tự ngược lại. Ví dụ: lệnh 0001sẽ có chân số 7 ở trạng thái cao và chân 6 đến 4 ở trạng thái thấp.

Các hướng dẫn, được giải mã trong Control Logic (CTL), gửi các lệnh logic thích hợp đến LU. Hơn nữa giải mã cũng được thực hiện trong CTL để gửi một số lá cờ đầu ra ( JMP, RTN, FLGO, FLGF) để ghim 9 đến 12. Chúng được sử dụng như tín hiệu điều khiển bên ngoài và duy trì hoạt động trong một thời gian đồng hồ đầy đủ sau khi cạnh tiêu cực đang diễn ra của X1.

Hoặc, đặt đơn giản, chân 9 đến 12 là những lá cờ đầu ra FLGF, FLGO, RTN, và JMP, tương ứng. Lưu ý rằng dữ liệu thường được ghép vào WRITEchân (chân số 2). Các chân cờ đầu ra tương tự như mã thoát của ngôn ngữ khác.

Mỗi hướng dẫn của ICU thực thi trong một khoảng thời gian duy nhất.

Xoay

Điểm khởi đầu

0000    NOPO
0010    LDC

Đồng hồ giờ:

  1. Các NOPOputs hướng dẫn pin # 10 ( FLGO) trong trạng thái cao. Trước thời gian đồng hồ tiếp theo, các chân cờ đầu ra được đưa trở lại trạng thái thấp.
  2. Lệnh LDCtải phần bù của giá trị của Bus dữ liệu vào Thanh ghi kết quả, mà không ảnh hưởng đến các chân cờ đầu ra.

Vì vậy, trong hai chu kỳ đồng hồ của chương trình, các chân cờ đầu ra đã được biểu diễn 0100 0000, đọc ngược lại (như các chân đầu vào) 0000 0010, hoặc là các hướng dẫn ban đầu.

Vòng quay đầu tiên

0010    LDC
0000    NOPO

Đồng hồ giờ:

  1. Phần bù của Bus dữ liệu được tải vào Thanh ghi kết quả, không có tác dụng của các chân cờ đầu ra.
  2. Chân số 10 chuyển sang trạng thái cao.

Trong hai khoảng thời gian này, các chân cờ đầu ra đã được biểu diễn 0000 0100, khi được đảo ngược, là các hướng dẫn 0010 0000.

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.