พิมพ์สัญลักษณ์เชิงลบของรหัสของคุณ


18

(นี่คือรูปแบบที่หลากหลายในการพิมพ์ Negative of Code ของคุณซึ่งฉันชอบมันมาก! ขอบคุณMartin Büttner♦ - ข้อความนี้เกือบทั้งหมดเป็นของเขา)

ลองพิจารณาว่าสัญลักษณ์เป็นอักขระ ASCII ที่พิมพ์ได้ดังต่อไปนี้ (โปรดทราบว่ามีพื้นที่ว่างอยู่):

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

และตัวอักษรเป็นดังนี้:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

พิจารณาสแควร์ของอักขระ ASCII ที่พิมพ์ได้สำหรับความยาวด้าน N ดังต่อไปนี้:

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

นอกจากนี้เรายังต้องการให้แต่ละแถวและแต่ละคอลัมน์ต้องมีสัญลักษณ์อย่างน้อยหนึ่งตัวและหนึ่งตัวอักษรและตัวเลข (ตัวอย่างข้างต้นเป็นไปตามนี้)

เรากำหนดสัญลักษณ์เชิงลบของสี่เหลี่ยมดังกล่าวให้เป็นสี่เหลี่ยมจัตุรัสที่มีขนาดเท่ากันซึ่งสัญลักษณ์แต่ละอันจะถูกแทนที่ด้วยตัวอักษรและตัวเลขและในทางกลับกัน ตัวอย่างเช่นต่อไปนี้จะเป็นสัญลักษณ์เชิงลบที่ถูกต้องของตัวอย่างข้างต้น:

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

ตัวเลือกเฉพาะของตัวละครนั้นไม่เกี่ยวข้องตราบเท่าที่อยู่ในหมวดหมู่ข้างต้น

ความท้าทาย

งานของคุณคือการเขียนโปรแกรมด้วยซอร์สโค้ดสแควร์ที่มีความยาวด้าน N> 1 ซึ่งพิมพ์การลบเชิงสัญลักษณ์ของซอร์สโค้ดไปยัง STDOUT ต้องพิมพ์ช่องว่างต่อท้าย คุณสามารถหรือไม่พิมพ์บรรทัดใหม่ขึ้นบรรทัดเดียว

กฎควินินปกติยังใช้อยู่ดังนั้นคุณต้องไม่อ่านซอร์สโค้ดของคุณเองไม่ว่าโดยตรงหรือโดยอ้อม ในทำนองเดียวกันคุณต้องไม่สมมติสภาพแวดล้อม REPL ซึ่งพิมพ์ค่าของแต่ละนิพจน์ที่ป้อนโดยอัตโนมัติ

ผู้ชนะคือโปรแกรมที่มีความยาวด้านต่ำสุด N ในกรณีที่เสมอกันการส่งสัญลักษณ์ที่น้อยที่สุดในซอร์สโค้ดจะชนะ หากยังมีเสมอคำตอบที่เร็วที่สุดชนะ


นี่เป็นความท้าทายประเภท "quine" หรือไม่เนื่องจากเอาต์พุตไม่จำเป็นต้องเป็นซอร์สโค้ดประเภทใด ๆ
เลียม

จุดดีฉันไม่คิดว่ามันจะเป็นจริง
ลุค

@LiamNoronha ฉันคิดว่ามันเป็นควินทั่วไปที่เอาท์พุทเป็นฟังก์ชั่นของซอร์สโค้ดและใช้กฎมาตรฐาน quine
Martin Ender

1
กำหนด "อ่านซอร์สโค้ดของคุณเอง"; หากมีคำสั่งที่จะพูดคัดลอกอักขระไปยังเอาต์พุตสิ่งนี้จะเป็นตัวอย่างของ "การอ่าน" ที่พูดหรือไม่?
Conor O'Brien

คำตอบ:


11

GolfScript, 3 × 3 (4 สัญลักษณ์)

4,m
`3/
n*o

ลองมันออนไลน์บนเว็บ GolfScript

เอาท์พุต

[0 
1 2
 3]

มันทำงานอย่างไร

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 สัญลักษณ์)

[5,
S*3
/N*

ลองใช้ออนไลน์ในล่าม CJam

มันทำงานอย่างไร

[   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.

เอาท์พุต

0 1
 2 
3 4

10

Pyth, 3x3, 4 สัญลักษณ์

S]1
.5;
S]1

เอาท์พุท:

[1]
0.5
[1]

คำอธิบาย:

  • เรียงลำดับรายการองค์ประกอบหนึ่งรายการ ]1
  • อักษรที่เป็นตัวเลข.5ที่ได้รับการพิมพ์0.5, ;ยุติคำสั่ง (ไม่ทำอะไรเลยในกรณีนี้)

ถึงแม้ว่าฉันจะยาวและหนักหน่วงเกี่ยวกับวิธีที่ฉันจะได้รับ<alphanum><symbol><alphanum>ใน Pythe หรือ CJam มันไม่เคยเกิดขึ้นกับฉันที่จะใช้ลอย ... เยี่ยมมาก!
เดนนิส

5

C ++, 18 x 18

"เลือกเครื่องมือที่แย่ที่สุดสำหรับงานเสมอ"

#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;}}

เอาท์พุท:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.