Buat Kotak Centang


51

Tulis sebuah program yang menciptakan kotak centang dua-negara yang orang dapat berinteraksi dengan menggunakan mouse.

Secara khusus, program Anda harus mencapai semua hal berikut:

  1. Memiliki wilayah layar 8 × 8 piksel (atau lebih besar jika diinginkan) yang merupakan area yang dapat diklik pada kotak centang. Untuk selanjutnya daerah ini hanya disebut kotak centang.

  2. Ketika kursor mouse dipindahkan di dalam kotak centang dan tombol * mouse default ditekan, kotak centang harus berganti status.
    Diperiksa menjadi tidak dicentang. Tidak dicentang diperiksa.

  3. Kotak centang tidak boleh bergerak saat diaktifkan.

  4. Dalam keadaan dicentang, kotak centang mungkin warna apa saja.

  5. Dalam keadaan tidak dicentang, kotak centang dapat berupa warna apa pun selama setidaknya 16 piksel berbeda secara visual dari kondisi yang dicentang .

  6. Dalam satu contoh program, semua status yang diperiksa harus identik secara visual satu sama lain dan semua status yang tidak diperiksa harus identik secara visual satu sama lain.

  7. Jangan akhiri program sampai program itu dihentikan secara eksplisit (mis. Via tombol keluar atau Alt + F4), sehingga pengguna dapat mengklik kotak centang sebanyak yang mereka inginkan.

* Anda dapat mengasumsikan tombol mouse default selalu klik kiri, tetapi juga boleh menggunakan default seperti yang didefinisikan oleh perangkat lunak mouse atau OS, yang mungkin tidak benar-benar klik kiri tergantung pada pengguna.

Catatan

  • Tidak masalah apa yang ada di luar wilayah kotak centang Anda. Itu bisa saja desktop. Ini bisa menjadi bagian dari konsol yang berubah di setiap toggle.

  • Tidak masalah dalam kondisi apa kotak centang Anda mulai.

  • Wilayah kotak centang mungkin memiliki dimensi pada atau di atas 8 × 8 piksel. Tidak harus persegi.

  • Anda dapat membuat kelonggaran kecil untuk pengaturan yang di luar kendali Anda seperti ukuran font konsol, zoom browser, resolusi monitor, dll. Selama program Anda bekerja dalam pengaturan pengujian yang masuk akal, itu harus valid.

  • Jika program Anda membuka jendela, Anda dapat menganggapnya telah diseret ke lokasi yang sesuai di layar jika perlu (mis. Sudut kiri atas).

  • Anda dapat menggunakan bahasa markup seperti HTML atau bahasa lain yang biasanya tidak kami pertimbangkan sebagai bahasa pemrograman lengkap.

  • Kotak centang Anda harus dapat diubah menggunakan tombol mouse default. Tidak apa-apa jika juga beralih ke bentuk input lainnya (mis. Tombol kanan mouse), dengan pengecualian gerakan mouse . yaitu negara tidak boleh berubah jika mouse hanya dipindahkan di dalam kotak centang.

  • Tangkapan layar dari kotak centang Anda dalam aksi sangat dianjurkan!

Mencetak gol

Kode terpendek dalam byte menang.

Contoh

Contoh HTML kanonik dalam 23 byte.

<input type="checkbox">

Bagi saya di Google Chrome, ini membuat kotak centang 12 × 12 piksel dan sekitar 30 piksel jelas berubah antara status dicentang dan tidak dicentang.

Saya membuat kelonggaran bahwa peramban memperbesar 100%.


2
Bisakah kotak centang menutupi seluruh layar?
Kritixi Lithos

@KritixiLithos Ya, itu akan valid. Perhatikan bahwa Anda dapat, jika diinginkan, menghitung wilayah 8x8 tertentu sebagai kotak centang resmi, bahkan jika wilayah yang lebih besar berfungsi.
Calvin Hobbies

@Helka Homba - dapatkah aplikasi menampilkan kontrol lain, di samping kotak centang itu sendiri?
zeppelin

Apakah OK untuk kotak centang untuk beralih pada jenis input lain? (Misalnya, apakah solusi benar jika kotak centang mengaktifkan segala jenis input pengguna, terlepas dari apakah itu klik mouse, gerakan mouse, atau penekanan tombol? Itu akan beralih pada klik mouse, tetapi itu akan beralih pada rangsangan lain juga.)

1
@zeppelin "Tidak masalah apa yang ada di luar wilayah kotak centang Anda. Bisa saja desktop. Itu bisa menjadi bagian dari konsol yang berubah pada setiap toggle." Jadi, selama kotak centangnya ada, tidak masalah apa lagi.
Calvin Hobbies

Jawaban:


33

Mathematica, 10 byte

Checkbox[]

Diasumsikan lingkungan notebook Mathematica .

Kedua negara bagian terlihat seperti ini:

masukkan deskripsi gambar di sini


73
Tentu. Mathematica menipu lagi.
Matius Roh

1
Sangat lucu bagaimana komentar memiliki lebih banyak suara daripada jawaban
RudolfJelin

4
@ RudolfL.Jelínek itu lucu bagaimana jawabannya memiliki semua upvotes sama sekali ...
Martin Ender

31

HTML, 20 byte

Tidak tahu seberapa valid ini sebagai jawaban. HTML mengharuskan tag ditutup untuk memvalidasi secara hukum, tetapi browser modern akan secara otomatis menutupnya sehingga dapat dieksekusi.

<input type=checkbox


3
Saya melihat ini sebagai opsi sebelumnya (tanpa tanda kutip) tetapi benar-benar melewatkan penutupan >. +1 dan IMHO yang valid.
ElPedro

1
Di situs ini, bahasa ditentukan oleh implementasinya, jadi ini sepertinya baik bagi saya.
John Gowers

1
Terima kasih @JohnGowers, saya sudah bertanya-tanya tentang definisi seberapa banyak penyalahgunaan dapat diterima.
Jan

27

Bash , 67 55 50 35 32 31 byte

:()(read -p$[i^=1]
›?9h -sn6
:)

Kode berisi byte CR (baris baru pertama) dan byte CSI (braket sudut kanan kecil dengan pengkodean Windows-1252). Ini membutuhkan xterm (atau yang setara) dan penyandian ISO-8859-1 (atau serupa).

Kode mendefinisikan fungsi bernama :, yang secara bergantian menampilkan putih 1 atau 0 dalam kotak hitam. Ada persis 24 piksel berbeda dengan pengaturan default xterm. ( bukti )

Untuk versi yang lebih lama yang mengubah warna seluruh terminal, periksa revisi 10 dari jawaban ini.

Terima kasih kepada @ ais523 untuk menyarankan xterm, yang menghemat 4 byte!

Bagaimana itu bekerja

:(...)membuat fungsi bernama :yang dijalankan ....

The membaca perintah melakukan sihir yang sebenarnya.

  • -p menentukan prompt input, yang dicetak ke STDOUT.

    • $[i^=1]adalah ekspansi aritmatika yang XOR variabel i dengan 1 . saya mungkin awalnya tidak disetel; ketika ini terjadi, itu akan diperlakukan sebagai 0 .

    • Carriage return mengembalikan kursor di awal baris.

    • ›?9hmenangkap mouse di terminal yang didukung. Setiap klik akan mengirim enam karakter ke terminal, yaitu ←[Mbxy, di mana merepresentasikan byte ESC ( 0x1b ). ←[menunjukkan urutan escape, Mmouse, btombol ( 0x20 + jumlah tombol), xyang x koordinat klik ( 0x20 + koordinat), dan yyang y koordinat.

    • -sn6merek membaca diam (masukan mouse tidak akan bergema ke stderr) dan berhenti setelah membaca persis 6 byte. Ini menyimpan input dalam variabel REPLY , tetapi kami tidak tertarik dengan output yang dihasilkannya.

Akhirnya, setelah selesai membaca (setelah tepat satu klik mouse), :secara rekursif memanggil dirinya sendiri, memasuki loop tak terbatas.

Penciptaan dan doa

$ echo $':()(read -p$[i^=1]\r\x9b?9h -sn6\n:);:' > checkbox.sh
$ xxd -c 17 -g 1 checkbox.sh
0000000: 3a 28 29 28 72 65 61 64 20 2d 70 24 5b 69 5e 3d 31  :()(read -p$[i^=1
0000011: 5d 0d 9b 3f 39 68 20 2d 73 6e 36 0a 3a 29 3b 3a 0a  ]..?9h -sn6.:);:.
$ LANG=en_US xterm -e bash checkbox.sh

Keluaran

screencast


Saya sendiri sedang mengerjakan solusi yang mirip dengan ini (walaupun dalam bahasa yang berbeda, memaksa saya untuk menyerah karena saya tidak dapat menemukan cara untuk mengambil input tanpa baris baru). Kemungkinan peningkatan: ubah 1000hke 9h(perbedaannya adalah yang 1000hmenangani penekanan dan pelepasan tetikus, dan 9hhanya menangani pelepasan tetikus). Ini mungkin atau mungkin tidak perlu perubahan di tempat lain dalam kode.

@ ais523 Saya mencobanya, tapi setidaknya emulator terminal saya (Konsole) sepertinya tidak mendukungnya. Apakah Anda tahu yang melakukannya?
Dennis

gnome-terminaltampaknya berfungsi, itulah yang saya gunakan untuk pengujian (edit: tapi saya tidak berpikir itu mendukung CSI 1-byte). xtermharus juga berfungsi dan mungkin lebih mudah untuk menginstal jika Anda memiliki sistem KDE. (Saya baru saja menguji sendiri; ini bekerja dengan \x1b[tetapi tidak dengan \x9bkarena alasan tertentu, mungkin terkait dengan pengaturan stty saya daripada ke terminal itu sendiri.)

@ ais523 Saya punya xterm. Saya akan memeriksa ketika saya kembali ke PC saya.
Dennis

8
Saya suka bagaimana menjadi :)dari :(pada akhir
Andras Deak

22

Memproses, 78 66 65 63 61 byte

2 byte disimpan berkat @TuukkaX dengan menggunakan -a%2sebagai gantinyaa%2*-1

2 byte disimpan berkat @TuukkaX dengan menggunakan a=-a

int a=1;void draw(){background(a);}void mousePressed(){a=-a;}

Kotak centang berganti-ganti antara hitam dan putih.

Penjelasan

int a=1;                   //the variable that contains the state of the checkbox
void mousePressed(){a=-a;} //if the mouse is pressed, change the sign of a

Sekarang ada banyak alternatif lain seperti menggunakan pernyataan-if untuk memproses ini, tetapi kemudian menjadi aneh dan terus-menerus mengubah latar belakang saat mouse sedang ditekan. Saya pertama kali mencoba mouseButton, tetapi kemudian saya akan membutuhkan lebih banyak kondisi dan lebih banyak kode yang hanya akan berakhir dengan lebih banyak verbose.

Sekarang untuk mousePressed()dipanggil selamanya (jika tidak, program akan berhenti setelah program baru saja dimulai), kita memerlukan sebuah draw()fungsi.

void draw(){               //loop infinitely
  background(a);           //set the sketch's background to -a%2
  //if a ==  1, the background colour is set to almost black
  //if a == -1, the background colour is set to white
}

masukkan deskripsi gambar di sini


Kotak centang yang lebih kecil akan menjadi 90 byte (kotak centang di sudut kiri atas, sehingga kami dapat menghapus beberapa kondisi mouse):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}

2
Penggunaan pintar bagaimana Pemrosesan menerima bilangan bulat tunggal sebagai warna abu-abu!
FlipTack

@FlipTack Tampaknya putih juga dapat dinyatakan sebagaifill(-1)
Kritixi Lithos

1
Saya punya ide. Inisialisasi ake 1 bukannya 0. Ubah a++ke a=-a, yang berarti -a%2adil a. Ini akan beralih aantara 1 dan -1. Saya tidak tahu apa yang dihasilkan warna 1.
Yytsi

@ TuukkaX Ya berhasil. color(1)menghasilkan #010101yang sangat dekat dengan hitam
Kritixi Lithos

22

HTML + JavaScript, 32 30 25 karakter

<p onclick=innerHTML^=1>0


3
thistersirat dan dapat dihapus. Juga, innerHTMLlebih pendek.
Dennis

@ Dennis, aneh dengan ini ... Terima kasih.
Qwertiy

+1 karena tidak menggunakan <input>elemen
RedClover

20

Unix Shell (+ x11-apps), 3 byte

Penolakan

Jawaban di bawah ini membosankan, batas dan "merasa curang" (setidaknya bagi saya).

Namun, sepertinya tidak melanggar aturan tantangan "seperti yang tertulis", atau "celah default", jadi saya mempostingnya.

(Jika Anda dapat menunjukkan aturan tertentu yang dilanggar, silakan komentari!)

Golf

xgc

Program xgc menunjukkan berbagai fitur primitif grafis X.

Layar xgc sebenarnya diisi dengan berbagai kotak centang:

masukkan deskripsi gambar di sini

dan "tombol lengket" (yang memenuhi syarat sebagai kotak centang, di bawah aturan tantangan ini):

masukkan deskripsi gambar di sini


20

GitHub Flavoured Markdown - 6 byte

- [ ] 

(Ada ruang tambahan)

Dalam inti: check / not check


Yakin ini cocok dengan paruh kedua kalimat 1, "Tulis program yang menciptakan kotak centang dua-negara yang orang dapat berinteraksi dengan menggunakan mouse ."?
manatwork

1
Ya, jika Anda menempelkannya di intisari dan membuat intisari (untuk "kompilasi") Anda akan dapat berinteraksi dengannya.
Axel

Menarik. Terima kasih @ Ax31. Saya tidak pernah menggunakan intisari.
manatwork

1
Saya tidak akan mengharapkan "Github Flavoured Markdown".
Jonas Schäfer



14

Python REPL, 45 byte

from tkinter import*
Checkbutton(Tk()).pack()

Saya tidak berpartisipasi dalam CG dan saya juga sering membaca posting ini. Namun itu benar-benar mengejutkan saya bahwa Anda diperbolehkan menggunakan modul eksternal. Bukankah itu curang? Saya tidak tahu berapa banyak byte kode sumber Tk, tetapi sebenarnya bukankah byte ini harus ditambahkan ke jumlah byte Anda?
FMaz

1
@ Krazor tkinteradalah pustaka standar untuk Python (tetapi bahkan jika tidak, saya hanya perlu mendeklarasikan Python REPL + tkinter). Ini berarti bahwa saya dapat menggunakan fitur-fiturnya hanya dengan mengimpornya. Hukuman yang Anda sarankan mirip dengan meminta pengguna untuk memasukkan dalam byte yang menghitung jumlah byte dalam sumber bahasa yang Anda tulis. Di sini kami mengizinkan setiap bahasa atau modul untuk bersaing selama itu ditulis dan diterbitkan secara publik sebelum tantangan telah diposting.
Biru

Oke, terima kasih atas klarifikasi.
FMaz

14

GeoGebra , 10 byte

Checkbox[]

Dimasukkan ke dalam bilah masukan.

Berikut adalah gif dari eksekusi:

Eksekusi program


7
Whoah, GeoGebra. Saya ingat itu. Sudah lama.
Nic Hartley

Saya tahu ini di luar topik tetapi apakah Anda kuliah di Waterloo Collegiate Institute? Hanya ingin tahu, berdasarkan nama Anda. Saya bukan penguntit jangan khawatir :)
HyperNeutrino


11

HTML dengan JavaScript - 136 124 120 115 113 111 109 79 byte

<p style=height:20;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

-2 dengan terima kasih kepada @KritixiLithos

Mengurangi menjadi 79 setelah bermain golf fantastis dari @Jan. Meskipun versi baru sesuai dengan persyaratan, saya telah menyimpan versi lama untuk alasan kebanggaan profesional.

Meskipun sangat valid untuk menggunakan built-in, saya pikir lebih menyenangkan untuk membuat sendiri dari awal. Diuji dengan Chrome dan Firefox. border:solidapakah ada untuk kompatibilitas IE tapi saya tidak tahu apakah itu benar-benar diperlukan dalam versi IE yang lebih baru - Saya tidak memiliki IE tersedia untuk diuji.

The pxtinggi yang ada untuk kepentingan "Run potongan kode" sehingga tidak termasuk dalam hitungan byte "nyata". Ini berfungsi dengan baik di browser tanpa itu.

<p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

Versi sebelumnya:

<p id=d style="width:20px;height:20px;border:solid 1px"onClick="d.innerHTML=d.innerHTML=='x'?'':'x'"align=center>


1
Bisakah Anda lakukan id=duntuk menghapus d=this?
Kritixi Lithos

1
@KritixiLithos - Memang saya bisa. Terima kasih dan terlihat dengan baik :)
ElPedro

1
Anda tidak perlu mengatur lebar, aturan mengatakan itu bisa berupa dimensi apa saja. Jika Anda menyimpan status pada properti pada thisAnda akan menyimpan pengaturan id. Jika Anda menyimpan thisdi properti Anda akan menghemat beberapa byte. Itu aligntidak perlu. Karena tidak ada spasi di string atribut, Anda tidak perlu tanda kutip. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 bytes
Jan

@ Jan - Terima kasih! Bit lebar adalah kebanggaan profesional saya sendiri. Jika saya tidak mengaturnya, itu terlihat jelek dan karena jawaban ini tidak akan pernah menang dan hanya diposting sebagai alternatif saya mungkin akan meninggalkannya di sana. Selain itu beberapa petunjuk bagus. Terimakasih banyak. Akan diperbarui besok.
ElPedro

Terima kasih @Eastly. Diperbarui kode tetapi lupa bit lainnya. Sudah terlambat.
ElPedro

9

Minecraft 1.0.0, 1 byte

Tuas di Minecraft memenuhi semua kriteria untuk kotak centang. Jawaban ini hanya berlaku untuk versi gim yang lebih lama di mana tinju masih akan mengaktifkannya.

masukkan deskripsi gambar di sini

Mencetak menggunakan hitungan byte yang disarankan @Connor O'Brien.


Perbedaan 3 antara dua jawaban hampir tidak membuat atau menghancurkan konsensus, tetapi mengingat bahwa jawaban Conor cukup kontroversial (saat ini di + 24 / -10 ) dan bahwa jawaban yang diterima sangat diterima dengan baik ( + 17 / -0 ), saya pikir yang terakhir harus digunakan untuk mencetak jawaban Minecraft.
Dennis

Namun tidak ada blok struktur di Minecraft 1.0.0
ev3commander

1
Itu satu ndi Conor, btw :)
Conor O'Brien

Atau Anda dapat memutar ulang tombol kiri dan kanan pada versi yang lebih baru untuk membuatnya valid; D
seadoggie01

@ ConorO'Brien Bukan begitu 1 block? Mengapa 1 byte? Saya tidak berpikir mc menyimpan setiap blok sebagai satu byte ...
RedClover

8

TI-Basic, 15 byte

While 1:Shade(0,9:Input :ClrDraw:Input :End

Cukup mudah. Kotak centang mencakup sekitar 40% layar dan berganti-ganti antara hitam dan putih. Saat dicentang, layar akan terlihat seperti ini:

layar


8

Versi apa pun dari baris perintah Windows, 3 byte

(cmd.exe, batch, PowerShell, start-> run, apa pun)

osk

Membuka keyboard layar yang memiliki beberapa "kotak centang" seperti shift, ctrl, alt, tombol capslock Mirip dengan jawaban xgc, dan terinspirasi oleh screenshot jawaban SmileBASIC.


7

Oktaf, 36 20 byte

uicontrol('sty','c')

Berkat @LuisMendo, tersimpan 16 byte!


1
uicontrol('sty','c')juga berfungsi
Luis Mendo

@LuisMendo Terima kasih! Jumlah 1/2 byte disimpan!
rahnema1

7

KV Lang , 8 byte

CheckBox

masukkan deskripsi gambar di sini


mengasumsikan lingkungan Python benar-benar dasar untuk kv lang untuk menjalankan:

from kivy.app import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string('CheckBox'))

Ini pada dasarnya berfungsi karena CheckBoxwidget Kivy termasuk dalam kivy.Factorysetiap widget dari pustaka standar.

String sederhana itu membuat turunan dari CheckBoxdan karena runTouchAppmengharapkan widget untuk dijalankan dapat saya gunakan Builder.load_string.

Latar belakang load_stringpegangan pada dasarnya setiap string kv dan jika ada satu instance widget yang ditentukan (misalnya CheckBox), maka ia akan diangkat ke posisi widget root , misalnya:

Application
    openGL Window
        root widget(mostly layout)
            main tree
            and some widgets
            ...

7

SmileBASIC, 49 byte

@L
O=T
TOUCH OUT T,,
X=T<O!=X
KEY 1,""[X]GOTO@L

dan merupakan kotak kosong dan kotak centang dalam font SB.
Alihkan kotak centang dengan menyentuh layar (hal yang paling dekat dengan mengklik dengan mouse)

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Jawaban curang:

0 byte:

(keyboard di layar memiliki tombol yang berfungsi seperti kotak centang, seperti caps lock dan tombol insert)

14 byte:

EXEC"SYS/SBGED

Membuka editor grafis bawaan, yang memiliki beberapa tombol mirip kotak centang


Ini hanya brilian, meskipun saya tidak benar-benar mengerti apa yang dilakukan baris ke-4. Bisakah Anda jelaskan?
snail_

T<Obenar ketika Anda berhenti menyentuh layar, dan !=digunakan sebagai XOR logis. X=X XOR (O && !T)
12Me21

7

C #, 124 120 byte

disimpan 4 byte berkat grabthefish.

checkbox dicentang dan tidak dicentang catatan: karena pengeditan, gambar tidak persis mewakili apa yang dibuat oleh kode, "checkBox1" tidak ditampilkan dengan kode saat ini.

using System.Windows.Forms;class P{static void Main(){var a=new Form();a.Controls.Add(new CheckBox());a.ShowDialog();}}

ungolfed: using System.Windows.Forms; class P{ static void Main(){ var a=new Form(); a.Controls.Add(new CheckBox()); Application.Run(a); a.ShowDialog(); } }


Jika Anda tidak menemukan apa pun tentang ini di meta, tanyakan tentang ini di meta.
Matius Roh

Anda dapat menyingkirkan spasi di var a = new Form();.
clismique

@ Qwerp-Derp Saya menghapusnya karena menghitung, saya hanya menempelkan hal yang salah, terima kasih.
satibel

Anda dapat menggunakan a.ShowDialog();untuk menyimpan beberapa byte
ambil

terima kasih @grabthefish, meskipun c # masih kalah di java :(
satibel

6

Ruby with Shoes, 16 karakter

Shoes.app{check}

Output sampel: checkbox dibuat dengan Ruby


6

HTML dengan JavaScript, 46 33 28 byte

<body onclick=innerHTML^=1>0

v2

<body onclick=this.innerHTML^=1>0

v1

<body onclick=t=this;t.innerHTML=t.e=!t.e||''>

Ini adalah varian dari jawaban @ ElPedro: Buat Kotak Centang . Turun ke 28 byte dengan bantuan @Albert Renshaw Ini bisa dikurangi lebih jauh, tetapi itu akan membuatnya identik dengan Buat Kotak Centang

Seluruh area aplikasi dapat diklik. Ini akan ditampilkan 0di offnegara bagian dan 1di onnegara bagian. Cobalah di https://jsbin.com/nuhetiyocu/1/edit


1
Berikut variasi rapi pada 39 byte. <body onclick=t=this;t.innerHTML^=t?1:0Aturan 16 pixel antara perubahan status siap untuk diperdebatkan.
Albert Renshaw

38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw

1
Oh tidak dengan bantuan Anda saya di atas 33 sudah :)
Jan

1
28<body onclick=innerHTML^=1>0
Albert Renshaw

1
Sekarang selalu ada nilai di dalam wadah, itu bisa diubah dari bodyke elemen yang berbeda. Tapi saya hanya melihat bahwa akan membuatnya identik dengan jawaban lain codegolf.stackexchange.com/questions/109155/create-a-checkbox/... jadi aku hanya meninggalkannya seperti
Jan

6

Powershell v5 +, 94 Bytes

($a=[Windows.Forms.Form]::new()).Controls.Add([Windows.Forms.Checkbox]::new());$a.ShowDialog()

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Ini cukup mengerikan, tapi saya tidak bisa mendapatkan pernyataan yang lebih pendek dengan salah satu Add-Typeatau using namespace- dan variabel diperlukan, karena saya perlu menggunakan kembali objek untuk menunjukkan formulir, dan Controls.Add()tidak mengembalikan apa pun yang dapat digunakan.

ShowDialog diperlukan pada sistem saya untuk memiliki kotak menjadi interaktif setelah menjalankan perintah ini, jika tidak, formulir akan dibekukan.

juga System.Windows.Forms.Formhanya dapat dipersingkat Windows.Forms.Formsebelum (setidaknya saya sendiri) sistem berhenti secara otomatis menyelesaikannya dalam sesi baru.


Bagus! Mungkin ingin menambahkan bahwa ini memerlukan versi 5+.
briantist

@ Briantist diperbarui, terima kasih.
colsw

6

Excel VBA, 38 32 31 29 Bytes

Fungsi Window langsung yang menyisipkan kotak centang tinggi = 9 dan lebar = 9, di sel A1pada lembar pertama proyek Excel VBA aktif

Sheet1.CheckBoxes.Add 0,0,9,9

-6 Berkat pajonk untuk mengganti [A1],[A1],9,9dengan0,0,9,9

-1 untuk mengganti Sheets(1)dengan[Sheet1]

-2 untuk menyadari hal di atas adalah bodoh dan menggunakan Sheet1sebaliknya


Tampaknya 1,1,9,9argumen juga berfungsi.
pajonk

1
Anda tidak perlu Sheet(1)., Anda dapat menjalankan ini cukup cepat di Excel tetapi CheckBoxesinherint ke lembar aktif
Mr.Burns

@ Mr.Burns Saya sudah memeriksa ini, tetapi tanpa secara langsung merujuk objek Lembar Kerja apa pun, CheckBoxes.Addmetode melempar kesalahan yang menyatakan "Obyek Diperlukan"
Taylor Scott

@TaylorScott Anda benar, saya meletakkan kode dalam modul lembar daripada modul normal .. Kesalahan saya xD
Mr.Burns

4

VBA (Word), 74 57 byte

-17 Terima kasih kepada Taylor Scott

Sub a()
f = a.FormFields.Add(Selection.Range, 71)
End Sub

Nama file dokumen harus a.


1
Anda dapat mengganti wdFieldFormCheckBoxdengan 71(nilai integer dari wdFieldFormCheckBoxkonstanta) untuk penghematan 17 byte
Taylor Scott

Saya pikir Anda dapat menghapus baris baru untuk -2 byte.
devRicher

4

Pug, 20 byte

input(type=checkbox)

Selain itu yang saya hitung adalah 23. Jika Anda menghapus tanda kutip masih berfungsi di Firefox dan Chrome (tidak dapat menguji pada IE) dan akan datang pada 21 dalam hal ini saya akan menganggapnya sebagai perbaikan pada contoh dan karena itu valid.
ElPedro

@heonlygusti - memang tapi tanpa tanda kutip saya akan terangkat :-) btw, downvote bukan saya.
ElPedro

Saya akan memilih jika bukan karena kutipan itu, yang tidak diperlukan.
NightSkyCode

@ theonlygusti sama sekali tidak. Cobalah.
NightSkyCode

4

Clojure, 201 195 145 127 byte

(ns c(:require[quil.core :as q]))(def a(atom nil))(q/defsketch b :draw #(q/background(if@a 0 99)):mouse-clicked #(swap! a not))

-6 byte dengan menghilangkan kebutuhan m/fun-mode.

-50 byte dengan menghapus opsi :setupdan :size, karena mereka defaultable dan tidak perlu di non- fun-mode. Juga menghapus impor yang tidak perlu untuk middleware.

-18 byte terima kasih hanya untuk @ ASCII. Berubah menjadi "lebih kecil" warna, dan menghapus ruang yang tidak perlu sebelum operator dereference ( @).

Membuat sketsa Quil (pustaka Clojure yang menyediakan lapisan di atas Pemrosesan), oleh karena itu, ini memerlukan pustaka Quil untuk dijalankan.

(ns bits.golf.checkbox
  (:require [quil.core :as q]))

; Mutable global variable to hold the toggle state
(def a (atom nil))

(q/defsketch b
         ; Draw the background color to be either black or red depending on the toggle state.
         :draw #(apply q/background (if @a [0 0 0] [255 0 0]))

         ; Negate the state on mouse click
         :mouse-clicked #(swap! a not))

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


Tidak bisakah Anda mengganti 255 dengan 99? Saya juga akan mencoba menghapus spasi sebelum / sesudah simbol dan melihat apakah masih berfungsi
ASCII-only

@ ASCII-hanya ya, saya bisa. Itu membuat warna-warna kasar yang buruk meskipun iirc, dan untuk beberapa alasan saya memprioritaskan itu pada saat itu. Dan tidak, sayangnya, ini adalah ruang sebanyak yang bisa saya hapus.
Carcigenicate

@ Khusus ASCII Masalahnya adalah simbol dapat berisi hampir semua karakter, jadi satu-satunya "tetangga aman" yang dapat Anda hapus spasi di sekitar adalah segala jenis braket, atau tanda kutip. Untungnya ini adalah cambuk bagi mantan cukup lazim.
Carcigenicate

Hmm mungkin kalau [0 0 99]begitu? (semacam biru tua)
ASCII

@ Hanya ASCII. Sebenarnya, saya pikir saya bisa menjatuhkan 0s sekarang saya memikirkannya. Saya pikir Quil auto pad bagian depan dengan 0s jika vektornya pendek. Jika saya ingat terbaru saya akan memperbaikinya. Terima kasih telah membuat saya berpikir.
Carcigenicate

4

Operasi bahasa scripting Flashpoint , 273 byte

Untuk menampilkan kotak centang:

createDialog"b"

Tetapi pertama-tama harus didefinisikan:

Simpan yang berikut ke file yang bernama description.extdi folder misi:

class b{idd=999;movingEnable=1;class controls{class c{idc=457;x=0.1;y=0.1;w=0.1;h=0.1;text="";action="if(ctrlText 457=={})then{ctrlSetText[457,{V}]}else{ctrlSetText[457,{}]}";type=1;style=2;colorText[]={1,1,1,1};font="tahomaB36";sizeEx=0.1;}}}

Kotak centang dalam aksi:


3

AutoIt , 78 Bytes

GUICreate(0)
GUISetState(GUICtrlCreateCheckbox(0,0,0))
Do
Until GUIGetMsg()=-3

Membuka jendela yang dimaksimalkan yang dapat ditutup seperti jendela jendela lainnya. Maksimalisasi dan ... kedudukan tertinggi adalah efek samping dari golf.

masukkan deskripsi gambar di sini


Bagaimana saya menjalankan ini di Linux?
dkudriavtsev

@wat wine AutoIt3.exe script.au3, tempat script.au3file berisi kode ini.
mınxomaτ

3

Python, 62 byte

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.