Tulis blok kode persegi yang lebar N karakter dan tinggi N karakter, untuk beberapa bilangan bulat positif N.
Misalnya, N Anda mungkin 5 dan blok terlihat seperti ini:
ThisI
sMy5B
y5Cod
eBloc
kOkay
Blok ini perlu berperilaku sebagai berikut:
Ketika baris teratas diekstraksi dan dijalankan sebagai program, teks yang tepat
row
perlu dicetak ke stdout.Misalnya
ThisI
mau cetakrow
.Ketika kolom kiri diekstraksi dan dijalankan sebagai program, teks yang tepat
col
perlu dicetak ke stdout.Misalnya
Tsyek
mau cetakcol
.Ketika diagonal utama dari kiri atas ke sudut kanan bawah diekstraksi dan dijalankan sebagai program, teks yang tepat
dia
perlu dicetak ke stdout.Misalnya
TMCoy
mau cetakdia
.Ketika seluruh blok dijalankan sebagai program, termasuk baris baru (dengan baris tambahan opsional), teks yang tepat
blk
harus dicetak ke stdout.Sebagai contoh,
ThisI sMy5B y5Cod eBloc kOkay
akan dicetak
blk
.
Detail
- Keempat program dijalankan dalam bahasa pemrograman yang sama.
- N 2 karakter dalam blok asli mungkin bukan terminator garis .
- Jika bahasa Anda tidak memiliki stdout, Anda dapat menggunakan metode keluaran umum lainnya. Itu harus metode yang sama di keempat program.
Kiriman yang blok aslinya berisi karakter berbeda paling sedikit (tidak termasuk baris baru) menang. Tiebreaker pergi ke pengiriman dengan N. yang lebih kecil
sumber
Jawaban:
> <> (Ikan) , 3 karakter unik (N = 2000)
Kode ini menggunakan
1
dan-
untuk meletakkan angka acak pada stack danp
untuk (self) memodifikasi kode berdasarkan 3 angka teratas pada stack. Misal, menempatkan!
posisi pada0 0
akan terlihat seperti003b*p
normal> <> dan denganp1-
itu menjadi111-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1--11-11-p
.Setelah modifikasi, penunjuk instruksi (IP) membungkus kode dan menjalankan bagian yang dimodifikasi. Dalam kasus "blok" IP dialihkan untuk modifikasi lebih lanjut (kemudian dialihkan kembali) berbeda dari kasus "baris". Dalam kasus "baris" dua pengalihan yang sama terjadi tetapi tidak ada kode di antara mereka sehingga mereka tidak berpengaruh.
Kode akhir yang dihasilkan untuk 4 kasus (menghilangkan bagian yang tidak berubah
p1-
):Ukuran kode adalah 4 MB dan kode dapat diakses di sini . (Tidak ada kesulitan menjalankannya.)
Program generator python3 dapat diakses di sini .
sumber
CJam,
1312 karakter unik, N = 5Sejujurnya
UPDATE : Ruang yang dikonversi ke
a
(no-op dalam kasus ini) seperti yang ditunjukkan oleh Runner112Cobalah online di sini
sumber
a
untuk membawa jumlah karakter unik ke 12, kan?Bash, 19 karakter unik, N = 19
trap echo\ row exit
. Ini menyebabkanecho row
dieksekusi ketika skrip keluar (hanya baris pertama)ttt=t echo col
t=tt echo dia
echo blk
lalu keluar.sumber
exit
untuk mengurangi karakter unik sebesar 4. Anda juga dapat memindahkanexit
perintah ke baris berikutnya dan mengganti semua titik koma dengan spasi.> <> , 14 karakter unik, N = 10
Cukup mudah dalam bahasa 2D. Satu-satunya bagian yang sulit adalah bahwa kita perlu
\
membedakan antararow
danblk
.sumber
p1-
akan memberikan solusi tiga karakter, tetapi akan sangat mengganggu untuk menghasilkan (dan mungkin tidak akan menang).Brainfuck, 2 karakter unik, N = 378
Dengan sedikit kemungkinan pembengkokan aturan.
Program ini sedikit besar, jadi inilah tautannya di Pastebin .
Program
row
,col
dandia
programnya sangat mudah. Mereka hanya menambah sel byte sampai kode ASCII yang tepat tercapai dan kemudian dikeluarkan. Jika surat sudah lewat, ia naik sampai sel meluap sehingga bisa mulai lagi pada 0.Itu
blk
program ini di mana aturan lentur sedikit terjadi. Untuk mencetak "teks persisblk
" seperti yang ditanyakan dalam tantangan, backspaces digunakan (kode ASCII 8), yang mengharuskan konsol / terminal tampilan untuk mendukungnya. Setiap kali nilai yang salah darirow
/col
/dia
program dicetak, saya memastikan mereka dihapus dengan mengeluarkan beberapa kode kontrol backspace. Untuk mempermudah, saya telah memastikan bahwa semua nilai yang salah dihasilkan pada satu titik adalah bagian dari rentang ASCII yang dapat dicetak.sumber
C (gcc) , 26 karakter unik, N = 29
Cobalah online!
sumber
Ruby, 24 karakter unik, N = 17
Cobalah online!
sumber