Anda baru saja mengundang jurusan seni liberal ke rumah Anda dan Anda memberi tahu dia
"Kamu tahu, aku seorang programmer yang hebat dan aku bisa melakukan x dan y dan z ..."
Ia cepat bosan dan bertanya:
"Jika Anda benar-benar seorang programmer yang hebat, dapatkah Anda membuat program untuk membiarkan saya menggambar, saya hanya perlu menggambar garis di layar dengan menggunakan mouse, dan memilih warna yang berbeda dengan cara apa pun".
Kode Anda dapat mengimpor perpustakaan standar. Kode Anda mungkin mengharuskan warna untuk dipilih melalui keyboard.
Ini adalah kode-golf ; kode menang paling pendek.
Poin peluru
Garis-garis digambar dengan menggerakkan mouse di sekitar sambil menekan tombol kiri.
Algoritma Line Bresenham tidak diperlukan, algoritma bawaan apa pun akan melakukan trik
Jika pengguna dapat mengubah ketebalan garis dengan cara apa pun Anda mendapatkan bonus * 0,8 tetapi tidak wajib.
Saya kira itu akan lebih baik untuk mengimplementasikan gambar-garis sendiri, tetapi jika Anda mau, Anda dapat mengimpor perpustakaan untuk itu hanya mengatakannya dalam deskripsi kode.
Minimal adalah 5 warna berbeda (merah, hijau, biru, putih, hitam). Jika Anda mengubahnya secara acak, Anda akan mendapat penalti * 1.2. Anda dapat mengubahnya dengan cara apa pun yang Anda inginkan (tombol dan penekanan tombol OK).
Menggambar mereka menekan mouse di antara titik atau freehand akan menjadi yang terbaik (yaitu seperti yang Anda lakukan di cat) dan memberi Anda bonus * 0,7, tetapi metode lain tidak apa-apa: (misalnya) klik dua titik dan gambar garis di antara titik-titik itu ?
Kanvas gambar harus berukuran 600x400
Mengubah warna harus mengubah warna hanya dari garis-garis yang akan digambar di masa depan.
Menerapkan perintah "Bersihkan Semua" tidak wajib tetapi jika Anda menerapkannya Anda mendapat bonus * 0,9 .
sumber
Jawaban:
HTML + jQuery + CSS - 507 x (0,7 x 0,8 x 0,9) = 255,528
Tidak sesingkat yang saya kira, tapi saya suka hasilnya.
Fitur:
Demo Langsung: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 byte
CSS - 35 byte
jQuery - 388/446 byte
Browser yang kompatibel dengan W3C (mis. Chrome) - 388 byte
Versi Cross-Browser (perbaikan untuk Firefox, Safari, IE) - 446 byte
Perbaikan:
event.offset[X|Y]
tidak terdefinisi.event.which
danevent.buttons
tidak didefinisikan secara berartimousemove
.e.buttons
sudah cukup.sumber
id=
dan mungkin orang lain juga (tidak melakukan html dalam beberapa saat)Memproses - 93 · 0.9 = 83.7
Dengan hampir tidak ada overhead untuk menggambar, tetapi sintaks yang sangat verbal, dalam Memproses skor terbaik mungkin dicapai tanpa fitur bagus dan hanya satu bonus:
Nilai: 93 · 0,9 = 83,7 (Baris baru hanya untuk keterbacaan dan tidak dihitung dalam skor.)
Namun, jauh lebih menyenangkan dengan semua bonus yang ada:
Nilai: 221 · 0,8 · 0,7 · 0,9 = 111,4
Ini digunakan seperti ini:
Klik dan seret mouse untuk menggambar garis lurus.
Saat diklik, seret mouse dari sisi kiri jendela dan lepaskan tombol mouse untuk menghapus layar.
Menekan tombol apa saja akan menggilir nilai merah, hijau dan biru dari warna gambar dan melalui ketebalan goresan yang berbeda. Karena periode bersepeda berbeda, praktis semua kombinasi dapat dicapai (dengan sedikit mencoba).
Edit:
Karena menggambar dengan tangan sendiri memberikan bonus 0,7 juga, berikut ini adalah solusi lain:
Nilai: 188 · 0,8 · 0,7 · 0,9 = 94,8
Ini digunakan seperti ini:
Klik dan seret untuk menggambar garis bebas-tangan.
Tahan tombol tab untuk mengubah warna dan ketebalan goresan. Ini juga bisa dilakukan saat menggambar (lihat gambar).
Tekan sembarang tombol selain tab lalu tab untuk menghapus layar.
sumber
if(key>0)
lebih pendek dariif(keyPressed)
Python 2.7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Sunting: Saya menemukan pygame dapat menggambar garis dengan lebar variabel, jadi inilah pembaruannya.
Eksperimen dalam menggunakan modul PyGame.
Program cat sederhana yang menarik garis dari acara MOUSEDOWN (nilai 5) ke acara MOUSEUP (nilai 6). Ini menggunakan fungsi pygame.gfxdraw.line (). Menekan tombol TAB akan menggilir 8 warna. Menekan tombol BACKSPACE akan membersihkan layar menjadi warna putih kertas yang dibuat dengan cermat. Tombol ENTER akan menggilir ukuran kuas melalui lebar 0-7 piksel.
Saya baru di kode-golf jadi saya mungkin telah melewatkan beberapa metode untuk mengurangi ukuran kode.
Contoh gambar 1:
Contoh gambar 2:
sumber
ms-paint.py
.C # 519 x 0,7 x 0,8 x 0,9 = 261,6 Menggunakan metode DrawLine.
Golf:
Dapat dibaca:
Dengan memegang r , g atau b pada keyboard Anda, ia mengubah warna baris berikutnya dengan menambahkan array sbyte pada indeks yang sesuai. Ini akan mulai dari 0 lagi ketika meluap. Jadi ini memberi kita banyak warna. Sama berlaku untuk ketebalan garis yang meningkat dengan memegang t . Menekan c menghapus formulir.
sumber
Mathematica - 333 x 0,7 x 0,8 x 0,9 = 168
sumber
Tcl / Tk, 252
x 0,8 x 0,7 x 0,9
= 127,008
253 x 0,8 x 0,7 x 0,9 = 127.512254 x 0,8 x 0,7 x 0,9 = 128.016255 x 0,8 x 0,7 x 0,9 = 128,52Tcl / Tk, 267
x 0,8 x 0,7 x 0,9
= 134.568
Untuk menggunakannya:
Tes sederhana:
sumber
DarkBASIC Pro - 318 x 0,7 x 0,9 = 200,34
Hal yang paling menarik di sini adalah menggunakan logika bitwise pada scancode keyboard saat ini untuk mengubah warna. Saya menggunakan dua bit berbeda dari scancode untuk setiap saluran - jadi hampir semua warna 6-bit dimungkinkan.
Berikut ini adalah EXE yang dikompilasi: Unduh
sumber
BBC BASIC - 141 tidak ada bonus
Bahasa pemrograman pertama saya dan umumnya tidak pernah digunakan lagi oleh saya :)
sumber
Python 2.7 - 384 * .8 * .7 = 215.04
Dengan semua bonus: 462 * .9 * .8 * .7 = 232.848
sumber