In một phủ định tượng trưng của mã của bạn


18

(Đây là một biến thể trong In một phủ định mã của bạn , điều mà tôi rất thích! Cảm ơn Martin Büttner ♦ - gần như tất cả văn bản này là của anh ấy.)

Chúng ta hãy xem các ký hiệu là các ký tự ASCII có thể in sau đây (lưu ý rằng không gian được bao gồm):

 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Và các chữ số là:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Hãy xem xét một hình vuông các ký tự ASCII có thể in được cho chiều dài N, như sau:

ONE, 
{two}
&3,+=
!four
f|ve.

Chúng tôi cũng yêu cầu mỗi hàng và mỗi cột phải chứa ít nhất một ký hiệu và một chữ số. (Ví dụ trên thỏa mãn điều này.)

Chúng tôi định nghĩa phủ định biểu tượng của một hình vuông như vậy là một hình vuông có cùng kích thước trong đó mỗi biểu tượng được thay thế bằng một chữ số và ngược lại. Ví dụ: dưới đây sẽ là một phủ định biểu tượng hợp lệ của ví dụ trên:

[&]OK
a...b
1/100
i@#$%
(R) z

Việc lựa chọn các ký tự cụ thể là không liên quan miễn là chúng nằm trong danh mục trên.

Các thách thức

Nhiệm vụ của bạn là viết một chương trình có mã nguồn vuông có độ dài cạnh N> 1, in một âm bản tượng trưng của mã nguồn của nó sang STDOUT. Không gian lưu trữ phải được in. Bạn có thể hoặc không thể in một dòng mới.

Các quy tắc quine thông thường cũng được áp dụng, vì vậy bạn không được đọc mã nguồn của riêng mình, trực tiếp hoặc gián tiếp. Tương tự, bạn không được giả sử môi trường REPL sẽ tự động in giá trị của từng biểu thức đã nhập.

Người chiến thắng là chương trình có độ dài cạnh thấp nhất N. Trong trường hợp hòa, bài nộp có ít ký hiệu nhất trong mã nguồn sẽ thắng. Nếu vẫn còn hòa, câu trả lời sớm nhất sẽ thắng.


Đây thực sự là một thách thức loại "quine" vì đầu ra không cần phải là mã nguồn của bất kỳ loại nào?
Liam

Điểm tốt, tôi không nghĩ rằng nó thực sự là.
Lu-ca

@LiamNoronha Tôi coi đó là một quine tổng quát trong đó đầu ra là một chức năng của mã nguồn và áp dụng quy tắc chuẩn quine tiêu chuẩn.
Martin Ender

1
Xác định "đọc mã nguồn của riêng bạn"; nếu có một lệnh, giả sử, sao chép các ký tự vào đầu ra, thì đây có phải là một ví dụ của "đọc" không?
Conor O'Brien

Câu trả lời:


11

GolfScript, 3 × 3 (4 ký hiệu)

4,m
`3/
n*o

Dùng thử trực tuyến trên Web GolfScript .

Đầu ra

[0 
1 2
 3]

Làm thế nào nó hoạt động

4,  # Push the array [0 1 2 3].
  m # Undefined token. Does nothing.
`   # Push the string representation of the array. Pushes "[0 1 2 3]".
 3/ # Split into chunks of length 3. Pushes ["[0 " " 1 " "2 3]"].
n*  # Join the chunks, separated by linefeeds. Pushes the output.
  o # Undefined token. Does nothing.

11

CJam, 3 × 3 (5 ký hiệu)

[5,
S*3
/N*

Hãy thử trực tuyến trong trình thông dịch CJam .

Làm thế nào nó hoạt động

[   e# Unmatched [. Does nothing.
 5, e# Push [0 1 2 3 4].
S*  e# Join the integers, separating by spaces. Pushes "0 1 2 3 4".
  3 e#
/   e# Split into chunks of length 3. Pushes ["0 1" " 2 " "3 4"].
 N* e# Join the chunks, separated by linefeeds. Pushes the output.

Đầu ra

0 1
 2 
3 4

10

Pyth, 3x3, 4 Biểu tượng

S]1
.5;
S]1

Đầu ra:

[1]
0.5
[1]

Giải trình:

  • S sắp xếp danh sách một yếu tố ]1
  • Chữ số .5được in dưới dạng 0.5, ;chấm dứt câu lệnh (không làm gì trong trường hợp này)

Tôi mặc dù rất lâu và khó khăn về cách tôi có thể <alphanum><symbol><alphanum>vào Pyth hoặc CJam. Tôi chưa bao giờ sử dụng phao ... Công việc tuyệt vời!
Dennis

5

C ++, 18 x 18

"Luôn luôn chọn công cụ tồi tệ nhất cho công việc."

#include<cstdio>  
int main(){ for  (
int line =  0lu;  
1lu*line <  18l;  
1lu*line++){pri\  
ntf(line == 0lu * 
123*line? "\x41.\\
x2e\x02e...\x2e\\ 
x42\x02e...\x2e.\ 
CDE\x00a":  14l!= 
1lu*line?".\x2e.\\
x46\x02e...\x47""\
HIJ\x02e..""KLM"  
 /*O*/"\n":  /*The
bad code:*/"NOP.\ 
QRS\x054." "UVW\  
XYZ\x02e" "\x2e\\ 
x2e\x00a"); 0lu;}}

Đầu ra:

A.......B......CDE
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
NOP.QRST.UVWXYZ...
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
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.