Penyertaan-Pengecualian memungkinkan Anda menghitung ukuran beberapa serikat pekerja dan persimpangan antara set yang mengetahui beberapa nilai lainnya. Saya tidak akan menjelaskannya dengan tepat, tetapi tantangan Anda adalah memvisualisasikan inklusi-pengecualian pada Diagram Venn.
Karena saya baik, Anda akan menggunakan persegi panjang, bukan lingkaran.
Anda akan diberikan daftar persegi panjang yang dilambangkan dengan koordinat sudut kiri atas dan kanan bawah dalam format yang masuk akal (daftar 4-tupel, daftar pasangan berpasangan, daftar pasangan, dll). Anda dapat mengasumsikan bahwa semua koordinat adalah non-negatif dan berada dalam rentang angka (wajar) bahasa Anda (sebutkan apa itu jika kurang dari 128). Anda dapat memilih untuk menjadi inklusif kiri atau eksklusif kiri dan inklusif kanan atau eksklusif. Terlepas dari format yang Anda pilih, Anda dapat mengasumsikan semua persegi panjang setidaknya 1x1.
Kemudian, Anda harus menggambar setiap persegi panjang di layar (kanvas ASCII) menggunakan karakter non-spasi tunggal k
, yang menjadi milik Anda untuk memilih.
Namun, setiap kali dua persegi panjang tumpang tindih, area yang tumpang tindih harus digambar dengan karakter non-spasi putih lain l != k
, juga milik Anda untuk dipilih.
Setiap kali tiga persegi panjang tumpang tindih, daerah yang tumpang tindih harus digambar k
, dan untuk jumlah ganjil persegi panjang yang meliputi k
,, dan angka genap l
,.
Latar belakang harus spasi tunggal ( 0x20
).
Kasus Uji ( k = "#", l = "."
)
0 0 9 9
1 1 10 10
2 2 11 11
#########
#........#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#........#
#########
1 1 3 3
2 2 4 4
##
#.#
##
1 1 9 9
2 2 8 8
3 3 7 7
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Catatan
- Ruang utama dan baris baru (yang terjadi jika koordinat minimum tidak
0, 0
) harus ada - Setiap spasi tambahan dan baris baru diizinkan sampai batas tertentu (misalnya, jangan jejak seperti 100000000 baris baru, itu hanya mengganggu)
- sumbu x- dan y- dapat menghadap ke dua arah tetapi Anda harus konsisten dan menentukan yang mana (defaultnya adalah x- benar dan turun)
- koordinat dapat diindeks 0-, 1-, atau 2-.
Ini adalah kode-golf , jadi tujuannya adalah memiliki kode terpendek. Selamat bermain golf!
Jawaban:
6502 rutin kode mesin (C64), 57 byte
Ini adalah kode posisi-independen, letakkan di suatu tempat di RAM dan gunakan alamat awal yang benar memanggilnya
sys
.Demo online (alamat mulai
$C000
/49152
).Pemakaian:
sys<startaddress>,<x1>,<y1>,<x2>,<y2>[,<x1>,<y1>,<x2>,<y2>[,...]]
Contoh:
sys49152,0,0,9,9,1,1,10,10,2,2,11,11
Pada rentang angka wajar: Rentang alami pada mesin 8-bit ini adalah [0-255], dan program akan menerima ini sebagai parameter. Tetapi layar C64 hanya memiliki 40 kolom dan 25 baris, sehingga membatasi rentang yang masuk akal untuk [0-40] untuk nilai x dan [0-25] untuk nilai y. Menggunakan nilai-nilai lain akan memiliki perilaku yang tidak dapat diprediksi.
berkomentar daftar pembongkaran:
sumber
Python 2 ,
218192189185158154147 byteCobalah online!
sumber
Arang , 40 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode.
Akan lebih pendek 6 byte setelah @ ASCII-only memperbaiki bug di Charcoal. Mengambil input sebagai daftar koordinat yang dipisahkan ruang yang diakhiri baris baru. Penjelasan:Ulangi setiap baris input hingga baris kosong tercapai.
Bagi garis menjadi daftar koordinat.
Lingkari semua koordinat X.
Lompat ke bagian atas kolom.
Petakan masing-masing ...
... semua sel di kolom ...
... nilai baru adalah
0
jika mengandung1
, jika tidak1
. Sunting: Segera setelah menulis ini, Charcoal mengubah perilaku¬
sehinggaI¬Σλ
berfungsi di sini untuk menghemat 1 byte.sumber
\n
bukan saya kira ...Python 2 , 181 byte
Cobalah online!
sumber
C (gcc) , 205 byte
Cobalah online!
sumber
R ,
196189 byteCobalah online!
Kode membaca input sebagai stdin, disusun sebagai tuple x1 y1 x2 y2, di mana x adalah kolom dan y adalah baris. Saya menggunakan 1 dan 2 untuk level yang tumpang tindih, di mana 1 mewakili level genap.
Disimpan 7 byte berkat pengguna2390246.
sumber
nrow
(atauncol
jika tidak diubah) alih-alihdim(x)[1]
3. Anda tidak perlu mendefinisikani=y>0
karena Anda hanya menggunakannya sekali.y=y%%2
dany[y<0]=" "
.Raku , 54 byte
Cobalah online!
Mengambil input sebagai daftar datar koordinat sebagai koordinat inklusif, yaitu
x1,y1,x2,y2,x1,y1,x2,y2...
dan output sebagai daftar daftar karakter dengank
makhluk1
danl
makhluk0
.Penjelasan:
sumber
Jelly , 43 byte
Cobalah online!
Penjelasan
sumber