Cetak Negatif Simbolik Kode Anda

18

(Ini adalah variasi pada Cetak Negatif Kode Anda , yang sangat saya nikmati! Terima kasih kepada Martin Büttner ♦ - hampir semua teks ini adalah miliknya.)

Mari kita anggap simbol - simbol tersebut sebagai karakter ASCII yang dapat dicetak berikut (perhatikan bahwa ada spasi yang disertakan):

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

Dan alfanumerik menjadi ini:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Pertimbangkan persegi karakter ASCII yang dapat dicetak untuk panjang sisi N, seperti berikut:

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

Kami juga mengharuskan setiap baris dan setiap kolom mengandung setidaknya satu simbol dan satu alfanumerik. (Contoh di atas memuaskan ini.)

Kami mendefinisikan negatif simbolis dari persegi tersebut menjadi kuadrat dengan ukuran yang sama di mana setiap simbol diganti dengan alfanumerik dan sebaliknya. Misalnya, berikut ini akan menjadi negatif simbolis yang valid dari contoh di atas:

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

Pilihan karakter tertentu tidak relevan selama mereka berada dalam kategori di atas.

Tantangan

Tugas Anda adalah menulis program dengan kode sumber kuadrat dengan panjang sisi N> 1, yang mencetak negatif simbolis dari kode sumbernya ke STDOUT. Ruang-ruang tambahan harus dicetak. Anda mungkin atau mungkin tidak mencetak satu baris baru.

Aturan quine yang biasa juga berlaku, jadi Anda tidak boleh membaca kode sumber Anda sendiri, secara langsung atau tidak langsung. Demikian juga, Anda tidak boleh menganggap lingkungan REPL yang secara otomatis mencetak nilai dari setiap ekspresi yang dimasukkan.

Pemenangnya adalah program dengan panjang sisi terendah N. Jika terjadi seri, pengajuan dengan simbol paling sedikit dalam kode sumber akan menang. Jika masih ada seri, jawaban paling awal menang.

Luke
sumber
Apakah ini benar-benar tantangan tipe "quine" karena output tidak perlu berupa kode sumber jenis apa pun?
Liam
Poin yang bagus, saya kira itu tidak benar.
Lukas
@LiamNoronha Saya menganggapnya sebagai quine umum karena outputnya adalah fungsi dari kode sumber, dan aturan quine standar berlaku.
Martin Ender
1
Tentukan "membaca kode sumber Anda sendiri"; jika ada perintah yang, katakanlah, menyalin karakter ke output, apakah ini akan menjadi contoh dari kata "membaca"?
Conor O'Brien

Jawaban:

11

GolfScript, 3 × 3 (4 simbol)

4,m
`3/
n*o

Cobalah online di Web GolfScript .

Keluaran

[0 
1 2
 3]

Bagaimana itu bekerja

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.
Dennis
sumber
11

CJam, 3 × 3 (5 simbol)

[5,
S*3
/N*

Cobalah online di juru bahasa CJam .

Bagaimana itu bekerja

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

Keluaran

0 1
 2 
3 4
Dennis
sumber
10

Pyth, 3x3, 4 Simbol

S]1
.5;
S]1

Keluaran:

[1]
0.5
[1]

Penjelasan:

  • S mengurutkan daftar satu elemen ]1
  • Huruf numerik .5dicetak sebagai 0.5, ;mengakhiri pernyataan (tidak melakukan apa pun dalam kasus ini)
Fabian Schmengler
sumber
Saya berpikir panjang dan keras tentang bagaimana saya bisa mendapatkan <alphanum><symbol><alphanum>Pyth atau CJam. Tidak pernah terpikir oleh saya untuk menggunakan pelampung ... Kerja bagus!
Dennis
5

C ++, 18 x 18

"Selalu pilih alat terburuk untuk pekerjaan itu."

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

Keluaran:

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
Luke
sumber