Golf generator Venn Diagram
Untuk merayakan ulang tahun John Venn yang ke-180 dengan benar , hari ini tugas Anda akan membuat program yang menghasilkan Diagram Venn !
Memasukkan:
N
Bilangan bulat positif yang akan menentukan kisaran angka yang muncul dalam diagram (Dari nol hingga N
) dan tiga set bilangan bulat positif.
Keluaran:
Diagram Venn 3 set memperlihatkan semua bilangan bulat dari 0 hingga N
dan hubungan himpunan dengan menampilkannya di wilayah diagram yang tepat, mirip dengan yang ini .
Catatan
- Gunakan
stdin
(atau apa pun yang setara dengan bahasa Anda) untuk mendapatkan nilai. - Anda dapat menentukan format input untuk set dan untuk
N
(Dipisahkan oleh koma, garis miring atau apa pun yang paling cocok untuk Anda). - Angka yang tidak muncul di salah satu set tetapi berada dalam kisaran yang ditentukan harus muncul pada diagram, hanya saja tidak di dalam wilayah mana pun.
- Set tidak perlu disebutkan namanya.
- Outputnya bisa berupa gambar atau ascii-art.
- Diagram dapat memiliki bentuk apa pun selama batas-batasnya dapat dibedakan secara jelas (jika Anda memilih seni ASCII, menggunakan + (atau serupa) untuk melintasi batas sangat penting, misalnya).
- Wilayah mungkin tetapi tidak harus diarsir.
- Fungsi bawaan atau pustaka pihak ketiga yang menghasilkan Diagram Venn dilarang.
- Celah standar berlaku .
Ini adalah kode-golf , jadi kode terpendek, dalam byte, menang.
code-golf
graphical-output
set-theory
William Barbosa
sumber
sumber
Jawaban:
Mathematica
343264Tidak disatukan
Dengan asumsi
10
input untukm
dan{{1,2,3,4,5,9},{1,2,3,6,8},{7,2,9}}
input untukd
,Bermain golf 264
Saya terkejut bahwa semua perhitungan dapat dilakukan dalam
Graphics
fungsi itu sendiri. Dengan pengecualian input, ini adalah one-liner.sumber
RandomSample
untuk memilih lokasi?Circles
, sehingga disk abu-abu hilang. Sebagian besar penghematan berasal dari kenyataan bahwa semua anggota suatu wilayah diplot di pusat wilayah itu.Ruby,
654590566542505 byteIni sangat menyenangkan. Saya menggunakan ASCII. Saya belum dapat menguji setiap kombinasi yang mungkin, jadi jika Anda menemukan test case yang glitchy, beri tahu saya.
Itu mengharapkan input pada STDIN dalam format berikut
Dan kemudian akan membalas Anda dengan keindahan ini
Saya rasa saya tidak bisa repot-repot menambahkan versi yang tidak ungolfed. Silakan lihat versi asli di histori edit untuk versi yang agak lebih mudah dibaca.
Ini tentu saja bisa di-golf lebih jauh dengan membuat batas-batas yang ditetapkan kurang ketat atau bahkan menjaganya tetap seperti yang dilakukan oleh beberapa grafis, tetapi saya lebih suka bahwa itu terlihat bagus dan dilakukan "dengan benar" meskipun sedang bermain golf.
sumber
BBC BASIC, 243 karakter ASCII (ukuran file tolak 211 byte)
Unduh emulator di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Golf
BBC Basic sangat sewenang-wenang tentang baris baru / spasi mana yang dapat Anda hilangkan. Selain menghilangkan baris baru yang tidak perlu, ada trik lain di sini yang tidak ada dalam versi yang tidak diklik: Saya menetapkan viewport (lihat penjelasan di bawah dalam komentar yang tidak diklik) pada akhir dari loop perencanaan, bukan di awal. Ini berarti bahwa elemen di luar himpunan diplot kiri atas, dan kursor terjebak dalam viewport di kanan atas pada akhir program. Alasan untuk ini adalah untuk menghilangkan
VDU26
.Tidak disatukan
Setiap set angka diakhiri oleh pengguna memasukkan angka N +1 (pilihan yang sedikit tidak biasa, ini adalah untuk menghindari kesalahan yang disebabkan oleh mencoba menulis di luar rentang array.) Kemudian ia berubah dari mode teks ke mode grafis dan plot diagram Venn.
Data input disimpan dalam array, satu sel untuk setiap nilai yang akan ditampilkan. Data disimpan sebagai nilai 3-bit: 1 untuk Set0 + 2 untuk Set1 + 4 untuk Set2 memberikan angka dalam kisaran 0 hingga 7. BBC basic tidak memiliki operator shift, jadi operator daya yang digunakan sebagai gantinya:
2^i
alih-alih1<<i
dalam C misalnya.Setelah memplot lingkaran, loop luar melewati masing-masing dari delapan wilayah, bergerak ke koordinat yang diperlukan (sesuai tabel data.) Lingkaran dalam mencetak semua angka di wilayah itu (yang dengan nilai 3-bit yang sesuai di array.)
Montase input dan output yang khas (versi ungolfed)
Dalam versi golf, posisi angka di luar set ditukar dengan command prompt
>
.sumber
Javascript 1235
http://jsfiddle.net/44a4L/7/
Diuji di google chrome v36.
Input diambil dalam variabel atas, set1, set2 dan set3.
Pembaruan: Sekarang secara otomatis skala tergantung pada ukuran input.
Output sampel:
sumber
Python - 603
Input adalah N diikuti oleh tiga set, dipisahkan oleh koma (misalnya
8, {1,2,4}, {2,3,4,5}, {4,6,8}
). Ini menghasilkan satu set dalam seni ACSII seperti berikut:sumber
HTML + JavaScript (E6) 752
761Format input: maks set1 set2 set3 (setiap set adalah daftar angka yang dipisahkan koma)
Contoh: 10 1,2,3,4,5,9 1,2,3,6,8 7,2,9
Contoh 2: 30 2,4,6,8,10,12,14,16,18,30 3,6,9,12,15,18,21,30 5,10,15,20,25,30,30
Semua bagian ukuran otomatis berkat rendering html.
Versi Javascript E5 Berfungsi di Chrome dan MSIE 10 (mungkin 9)
Tidak (jadi) golf
sumber
Python 3 - 353
Apakah ada orang lain yang bermain dengan Logo saat kecil?
Mencicipi:
python3 turtletest.py 15 1,2,3,4,5,9,10,12 1,3,4,6,7,9 1,2,7,8,9
sumber
perl
388b346b488bIni memiliki output yang mirip dengan entri lain:
Uji coba dan hasilkan:
sumber
T-SQL 2095
Asumsi @N adalah int yang berisi N. Asumsi @A, @B, dan @C adalah tabel yang berisi tiga set angka. Tidak mencoba golf terlalu banyak.
Versi yang kurang golf:
sumber