Diberikan dua daftar yang tidak mengandung elemen duplikat a
dan b
, temukan crossover antara dua daftar dan hasilkan ASCII-Art Venn Diagram. Diagram Venn akan menggunakan versi singkat dari lingkaran tradisional untuk kesederhanaan.
Contoh
Diberikan:
a = [1, 11, 'Fox', 'Bear', 333, 'Bee']
b = ['1', 333, 'Bee', 'SchwiftyFive', 4]
Output (Pesanan 100% sewenang-wenang, asalkan Diagram Venn benar):
+-----+----+-------------+
|11 |333 |SchwiftyFive |
|Fox |Bee |4 |
|Bear |1 | |
+-----+----+-------------+
Program dapat mempertimbangkan '1' == 1
atau '1' != 1
, hingga implementasi Anda. Anda juga dapat memilih untuk hanya menangani semuanya sebagai string, dan hanya menerima input string.
Diberikan:
a=[]
b=[1,2,3]
Keluaran (Perhatikan bagaimana dua bagian yang kosong masih memiliki ruang bantalan kanan):
+-+-+--+
| | |1 |
| | |2 |
| | |3 |
+-+-+--+
Diberikan:
a=[1]
b=[1]
Keluaran:
+-+--+-+
| |1 | |
+-+--+-+
Aturan
- Elemen-elemen Diagram Venn rata kiri dan empuk ke entri panjang max ditambah 1.
- Urutan elemen dalam sub-bagian dari Diagram-Ven adalah sewenang-wenang.
- Sudut Diagram Venn (tempat
|
bertemu-
) harus diwakili oleh a+
. - Anda yakin bahwa
a.join(b).length() > 0
, jika keduanya kosong, Anda dapat melakukan apa pun.- Anda bahkan dapat mencetak foto Abe Lincoln, tidak peduli.
- Ini adalah kode-golf , ascii-art, dan teori-set .
Bonus
Arang membuat kotak-kotak seperti ini secara alami, tetapi seluruh teori himpunan bagian ... Tidak tahu seberapa baik ia melakukannya. +100 hadiah untuk pengiriman arang terpendek sebelum saya dapat menambahkan hadiah untuk pertanyaan (2 hari sejak diminta).
sumber
'1' == 1
sedikitJawaban:
Python 2 ,
221210212 byteCobalah online!
sumber
PHP> = 7.1, 287 Bytes
Versi Online
Diperluas
sumber
Charcoal ,
1068987 byte:Cobalah online! Perhatikan bahwa tautan adalah untuk menuliskan kode untuk tujuan penjelasan, dengan
-sl
opsi yang menunjukkan kode Arang asli yang setara. Mengambil input sebagai string yang dipisahkan oleh baris baru dengan baris kosong setelah setiap set.Sunting: Disimpan 11 byte berkat hanya @ ASCII. Versi sebelumnya benar-benar memiliki bug ketika kata terakhir di set pertama tidak di set kedua dan juga kolom pertama adalah yang tertinggi, yang dimanifestasikan sebagai ketidakmampuan untuk mengoptimalkan sementara waktu. Disimpan 2 byte dengan mengoptimalkan dua perintah Pindahkan (deverbosifier sekarang melakukan ini secara otomatis tetapi kode yang dihasilkan selalu valid sehingga jawabannya masih bersaing).
Sunting: Saya pikir tidak
Multiprint
terbiasa bekerja dengan keluaran multiline tetapi saat ini bekerja dan memanfaatkannya akan menghemat 6 byte, ditambah 4 byte lebih lanjut karena Charcoal saat ini menginisialisasiu
variabel ke daftar kosong: Coba online!sumber
Multiprint
(P
)Map
ada (maaf, akan mendokumentasikan secepatnya)Map
, itu membantu saya mengoptimalkan jawabannya sedikit lebih. Akhirnya, saya pikir kadang-kadang Charcoal memungkinkan Anda menggunakan←
tanpaM
yang akan menyimpan byte di sini, atau apakah itu bug?M
disengaja (tapi selalu ingat arah dengan variabel setelah adalah cetak terarah)Move
deverbosifikasi yang lebih baik (itu juga sekarang menghilangkan lebih banyak pemisah yang tidak dibutuhkan sehingga Anda dapat menambahkan koma kembali jika Anda mau)