Xây dựng một nửa chu kỳ hồng y


18

Một nửa quine tuần hoàn là một quine tuần hoàn với hai trạng thái, một trạng thái vuông góc với nhau.

Quy tắc

Bạn có thể quyết định xoay vòng nào bạn muốn thực hiện, theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.

Sau khi xoay, bất kỳ khoảng trống nào trong mã của bạn sẽ được thay thế bằng khoảng trắng để giữ vị trí.

Chương trình của bạn phải đáp ứng định nghĩa của cộng đồng về một câu hỏi .

Đây là vì vậy chương trình ngắn nhất trong mỗi ngôn ngữ sẽ thắng. Chương trình đầu tiên của bạn được sử dụng cho số byte của bạn.

Sơ hở tiêu chuẩn bị cấm.

Ví dụ

Nếu chương trình của bạn là:

$_='print';eval

Sau đó, lần lặp tiếp theo phải là:

$
_
=
'
p
r
i
n
t
'
;
e
v
a
l

hoặc là

l
a
v
e
;
'
t
n
i
r
p
'
=
_
$

phải xuất chương trình gốc:

$_='print';eval

Nếu chương trình của bạn là:

;$_=';
;$_=';
print

Sau đó, lần lặp tiếp theo phải là:

;;
''t
==n
__i
$$r
;;p

hoặc là:

p;;
r$$
i__
n==
t''
 ;;

phải xuất chương trình gốc:

;$_=';
;$_=';
print



1
@dylnan Không, người khác không yêu cầu một câu hỏi chung.
Martin Ender

1
Nhìn thấy các câu trả lời cho đến nay tôi nghĩ rằng thách thức thực sự sẽ là một hoặc một câu hỏi ngược chiều kim đồng hồ có nhiều hơn một dòng (để xoay vòng khác với chuyển vị hoặc chỉ đơn giản là chèn dòng mới).
Weijun Zhou

1
Bạn có thể muốn yêu cầu hai chương trình phải khác nhau. Mặt khác, các quine xảy ra có đối xứng quay sẽ là câu trả lời hợp lệ.
Martin Ender

Câu trả lời:


14

CJam , 19 17 15 byte

{s"_~"+N*""-}_~

Hãy thử trực tuyến! Hãy thử xoay vòng.

Giải trình

{s"_~"+  e# Standard quine framework. Puts a string representation of the entire
         e# program on the stack.
  N*     e# Riffle linefeeds into the string, which is effectively a clockwise
         e# rotation by 90°.
  ""-    e# Does nothing.
}_~

Trong mã được xoay, chúng tôi có nguồn cấp dữ liệu ở mọi nơi:

{
s
"
_
~
"
+
N
*
"
"
-
}
_
~

Như Lynn nhận thấy trong thử thách đặt câu hỏi trước đó của Dom, việc chèn các đường thẳng thực sự vẫn tạo thành một câu hỏi hợp lệ, bởi vì các đường dẫn bên trong khối sẽ vẫn được giữ nguyên nguyên văn, và cũng sẽ có các đường dẫn trong "_~"chuỗi để làm cho hai ký tự đó ở cuối hiển thị trên chúng dòng riêng. Vì vậy {s"_~"+...}_~(với nguồn cấp dữ liệu) vẫn là một khung quine hợp lệ (mặc dù sẽ có thêm một nguồn cấp dữ liệu ở cuối chuỗi). N*bây giờ chèn thêm nhiều nguồn cấp dữ liệu vào chuỗi đó, nhưng chúng tôi không thực sự quan tâm: bởi vì hiện tại ""-có một nguồn cấp dữ liệu bên trong chuỗi đó nên nó thực sự loại bỏ tất cả các nguồn cấp khỏi biểu diễn chương trình. Vì vậy, chúng tôi kết thúc với dạng ngang của mã một lần nữa, hoàn tác xoay vòng.




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.