pengantar
Suatu hari, Anda menunjukkan kepada anak Anda cara menggambar di komputer. Anda mengetik mspaint.exe
di run bar. Untuk ngeri Anda, ia mengatakan "Tidak ada item yang cocok dengan pencarian Anda". Anda harus membuat versi cat yang sederhana agar anak Anda dapat menggambar!
Tantangan
Anda harus membuat program menggambar sederhana. Untuk melakukan ini, buka jendela layar putih (lebih besar dari 99x99 piksel). Kapan saja mouse ditekan, ubah piksel tempat mouse menjadi hitam.
Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
Pen
melakukan hal ini: oJawaban:
8086 kode mesin,
32 31 2826 byteMengasumsikan kehadiran kartu grafis VGA, dan driver mouse yang kompatibel dengan Microsoft.
-2 byte terima kasih kepada @berendi!
Bagaimana itu bekerja:
Itu semua yang ada untuk itu. Tidak ada sihir yang terlibat, hanya beberapa fungsi panggilan.
sumber
INT 33h
kembali 0 dalamBX
, dan ini akan dikurangi ke FFFFh seperti yang diharapkan, tetapi garis masih ditarik. Mungkin ini karena mode 11h hanya memiliki satu halaman video, dan nomor halaman yang tidak valid secara otomatis diperbaiki? Saya menguji VM VirtualBox, jadi mungkin itu sesuatu yang dilakukan implementasi BIOS-nya.int 0x10
,jmp
kembali ke yang keduaint 0x10
sebagai gantinya. Offset injmp
tetap sama, sesuaikan alamat dimov dx
Gores, 10 Gores byte
Scratch praktis dirancang untuk hal-hal seperti ini.
Cobalah online!
sumber
HTML + JavaScript (ES6),
66 6462 byteHTML
JavaScript
Disimpan 2 byte berkat Gustavo Rodrigues dan 2 byte dari Shaggy.
sumber
<canvas id=c>
?c.
dari awal JS Anda. @Anoplexian, itulah tubuh standar yangmargin
membuang beberapa piksel.C + Win32,
209200195 byteTerima kasih, Cody dan Quentin! Saya berharap untuk menyingkirkan
#include <windows.h>
tetapi ini menyebabkan semua jenis kesalahan. Setidaknya itu berfungsi dengan benar dengan beberapa monitor ...Kode sebelumnya:
sumber
h
kefor
inisialisasi untuk menghemat dua byte :)LOWORD
danHIWORD
yang tidak cara yang benar untuk mengekstrak koordinat kursor dari dikemasLPARAM
. Anda harus menggunakanGET_X_LPARAM
danGET_Y_LPARAM
, jika tidak, Anda akan mendapatkan hasil yang salah dengan beberapa monitor.int main
yang akan menambahkan 4 byte lagi.(short)LOWORD()
dan(short)HIWORD()
akan menyelesaikan masalah?main
fungsi (karenaint
aturan implisit ). Satu-satunya masalah adalah, menghilangkanreturn 0;
penyebab perilaku tidak terdefinisi dalam C89 dan MSVC. Di C99 dan C ++, Anda memerlukan tipe return untukmain
, tetapireturn 0;
implisit dan karenanya tidak perlu. Yah, bahasanya tidak dibuat untuk golf kode. :-)Memproses,
9879 byte19 byte disimpan berkat @dzaima
Penjelasan (kedaluwarsa)
sumber
size(100,100);
tidak harus disebutkan, terima kasih! (juga saya tidak tahu mengapa saya tidak melihatif(mousePressed)
sedikit)JavaScript ES6, 126 byte
Diuji dalam chrome.
Cobalah online!
sumber
Haskell,
189184170169 byteIni menggunakan
Gloss
perpustakaan (v1.11). Ini membuka jendela layar penuh dan melukis piksel hitam (sebenarnya lingkaran dengan jari-jari 1) dengan menekan tombol kiri mouse. TekanESC
untuk keluar.Bagaimana itu bekerja:
Sunting: @ceased untuk mengaktifkan counterclock yang memberi tahu saya tentang versi gloss terbaru yang menghemat 5 byte saat menggunakan jendela layar penuh. Terima kasih!
sumber
FullScreen
nullary in gloss> = 1.11, mengurangi skor dengan 5. (Namun saya mendapatkan kesalahanunknown GLUT entry glutInit
, tapi mungkin pengaturan kekenyangan saya tidak berfungsi; tidak pernah menggunakannya di mesin ini.)SmileBASIC 2,
5251 byteYang ini berjalan di ayah SmileBASIC, Petit Computer (dan
satudua byte lebih pendek.)Penjelasan:
sumber
GPSET TCHX,TCHY:GOTO@A
karena warna default adalah 0 (transparan).Javascript + jQuery 138 byte
Lihat secara online!
Menambahkan klik dan seret dukungan akan mudah, Anda akan menetapkan variabel, namun, sesuai instruksi dan untuk mempersingkat kode, itu tidak didukung, "Setiap kali mouse ditekan, ubah piksel mouse menjadi hitam" . Saya mengartikan instruksi tersebut sebagai suatu
click
peristiwa.sumber
SpecBAS -
6159 byteHitam sudah menjadi warna pena default, tetapi latar belakang biasanya berwarna abu-abu tidak menyenangkan, jadi
CLS 15
setel ke putih terang.sumber
GOTO
menjadiGO TO
)SmileBASIC,
705853 BytesDijelaskan:
sumber
Clojure,
9171 byte-20 byte terima kasih kepada @cfrick untuk menunjukkan bahwa saya dapat menggunakan
use
untuk mengecilkan impor saya.Menggunakan Quil perpustakaan . Menarik titik setiap kali mouse diseret.
Pada dasarnya jawaban Pemrosesan, karena Quil adalah pembungkus Pemrosesan untuk Clojure.
sumber
(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))
use
karena itu "tidak tepat". Terima kasih.Tcl / Tk, 45
465157sumber
Java 7, 353 byte
Tidak Disatukan:
sumber
Python2 dan Python3, 82 byte (atau 77?)
Menggunakan modul Turtle, ini tidak terlalu buruk :)
Tidak Disatukan:
Jika boleh memiliki garis di antara titik-titik, Anda sebenarnya dapat menyimpan 5 byte:
sumber
Excel VBA, 62 Bytes
Fungsi jendela langsung VBE anonim yang memungkinkan pengguna untuk menggambar di lembar mana pun hanya dengan memilihnya
Output Sampel
sumber
HTML + Javascript,
152148 bytesumber
Turing , 77 byte
Tidak Disatukan:
sumber
HTML + CSS + JavaScript (ES6), 8 + 31 + 64 = 103 byte
Bersenang-senang dengan CSS
box-shadow
!HTML + CSS + JavaScript (ES6), 8 + 22 + 69 = 99 byte
Ini salah satu upaya untuk mengimbangi default
margin
dari<body>
elemen, tetapi mungkin berbeda di seluruh browser dan stylesheet agen pengguna. Diuji berhasil di Chrome.HTML + CSS + JavaScript (ES6), 8 + 18 + 69 = 95 byte
Piksel dalam gambar ini mungkin tampak lebih besar karena ditarik pada koordinat setengah piksel.
sumber
TI-Basic, 1 byte
Saya yakin bahwa sebagian besar dari Anda dengan TI calcs memikirkan
Pen
perintah tersebut, tetapi ternyata itu bukan tokenized sehingga masuk akal untuk menghitungnya sebagai 3 byte. Anda dapat membaca tentang versi interaktifPt-Change(
di http://tibasicdev.wikidot.com/pt-changesumber
Lua (love2d Framework), 180 byte
versi golf
ungolfed
cukup mudah cara kerjanya. Pertama, beberapa inisialisasi untuk mempersingkat segalanya. Setelah itu akan memeriksa mouse diklik dan menyimpan poin ke array. Setelah itu menarik poin. Juga mengatur warna menjadi putih & hitam karena default adalah sebaliknya :)
Dan inilah gambarnya:
sumber
l=love v,g,m,p=255,l.graphics,l.mouse,{}function l.draw()g.setBackgroundColor(v,v,v)if m.isDown(1)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end
yang menghasilkan 169 byte!Memproses, 65 byte
sumber
glslsandbox 232 byte
Posting lama tetapi menemukan ini menarik.
Karena pemrosesan sudah dilakukan, saya memutuskan untuk melakukan sesuatu yang berbeda.
Ini menggambarkan apakah mouse ditekan atau tidak, jadi bukan yang diminta pydude tetapi hampir.
Cobalah di glslsandbox
sumber
Memproses, 93 byte, 91 byte jika spasi tidak dihitung
sumber
UCBlogo dengan wxWidgets, 65 byte
Penjelasan (kode yang diberikan ke variabel
buttonact
dieksekusi pada setiap klik tombol):Setidaknya, saya pikir ini berhasil. Seharusnya sesuai dengan dokumentasi , tetapi tampaknya
buttonact
variabel hanya berfungsi di wxWidgets build dan saya berjuang untuk membangun UCBLogo dengan wxWidgets di Linux modern (waddyamean Anda tidak dapat melemparkan pointer keint
dan kembali?).UCBlogo tanpa wxWidgets, 73 byte
Untuk melihat efek yang diinginkan, Anda dapat menjalankan versi yang lebih panjang ini dengan loop tak terbatas.
Tapi ini menabrak
ucblogo
mesin saya ... Sepertinya kondisi balapan.UCBlogo, benar-benar bekerja pada mesin saya, 80 byte
sumber