Crea una casella di controllo


51

Scrivi un programma che crea una casella di controllo a due stati con cui le persone possono interagire usando il mouse.

In particolare, il tuo programma dovrebbe raggiungere tutto quanto segue:

  1. Avere un'area dello schermo di 8 × 8 pixel (o più grande se lo si desidera) che è l'area selezionabile della casella di controllo. D'ora in poi questa regione è semplicemente chiamata la casella di controllo.

  2. Quando il cursore del mouse viene spostato all'interno della casella di controllo e viene premuto il pulsante predefinito * del mouse, la casella di controllo deve selezionare gli stati.
    Selezionato diventa deselezionato. Deselezionata viene selezionata.

  3. La casella di controllo non deve spostarsi quando è attivata / disattivata.

  4. Nello stato selezionato, la casella di controllo può essere di qualsiasi colore.

  5. Nello stato non selezionato, la casella di controllo può essere di qualsiasi colore purché almeno 16 pixel siano visivamente distinti dallo stato selezionato .

  6. In una singola istanza del programma, tutti gli stati controllati dovrebbero essere visivamente identici tra loro e tutti gli stati non controllati dovrebbero essere visivamente identici tra loro.

  7. Non terminare il programma fino a quando non viene esplicitamente terminato (ad esempio tramite il pulsante Exit o Alt + F4), quindi un utente può fare clic sulla casella di controllo quanto desidera.

* Si può presumere che il pulsante del mouse predefinito sia sempre lasciato clic, ma è anche possibile utilizzare quello predefinito come definito dal software del mouse o dal sistema operativo, che potrebbe non essere effettivamente lasciato clic a seconda dell'utente.

Appunti

  • Non importa ciò che è al di fuori della tua area di controllo. Potrebbe essere solo il desktop. Potrebbe essere una parte di una console che cambia ad ogni interruttore.

  • Non importa in quale stato inizia la tua casella di controllo.

  • L'area della casella di controllo può avere qualsiasi dimensione pari o superiore a 8 × 8 pixel. Non è necessario che sia quadrato.

  • È possibile che vengano fatte delle riduzioni minori per le impostazioni che sono fuori dal proprio controllo come la dimensione del carattere della console, lo zoom del browser, la risoluzione del monitor, ecc. Finché il programma funziona con un'impostazione di prova ragionevole dovrebbe essere valido.

  • Se il programma apre una finestra, è possibile supporre che sia stato trascinato in una posizione appropriata sullo schermo, se necessario (ad esempio nell'angolo in alto a sinistra).

  • È possibile utilizzare linguaggi di markup come HTML o altri linguaggi che di solito non consideriamo come linguaggi di programmazione completi.

  • La casella di controllo deve essere selezionabile tramite il pulsante predefinito del mouse. Va bene se attiva anche altre forme di input (ad es. Pulsante destro del mouse), ad eccezione del movimento del mouse . cioè lo stato non dovrebbe cambiare se il mouse viene semplicemente spostato all'interno della casella di controllo.

  • Gli screenshot della tua casella di controllo in azione sono fortemente incoraggiati!

punteggio

Vince il codice più breve in byte.

Esempio

Un esempio HTML canonico in 23 byte.

<input type="checkbox">

Per me in Google Chrome, questo fa una casella di controllo 12 × 12 pixel e circa 30 pixel cambiano chiaramente tra stati controllati e non controllati.

Tengo conto che lo zoom del browser è al 100%.


2
La casella di controllo può coprire l'intero schermo?
Kritixi Lithos,

@KritixiLithos Sì, sarebbe valido. Tuttavia, se lo desideri, puoi considerare una particolare regione 8x8 come la casella di controllo ufficiale, anche se una regione più grande funziona.
Calvin's Hobbies,

@Helka Homba: un'app può visualizzare altri controlli, a parte la casella stessa?
Zeppelin,

È OK per la casella di controllo attivare / disattivare altri tipi di input? (Ad esempio, una soluzione è corretta se la casella di controllo attiva o disattiva qualsiasi tipo di input dell'utente, indipendentemente dal fatto che si tratti di un clic del mouse, di un movimento del mouse o di un tasto premuto? Si attiva o disattiva un clic del mouse, ma si attiva anche altri stimoli.)

1
@zeppelin "Non importa ciò che è al di fuori della tua area di controllo. Potrebbe essere solo il desktop. Potrebbe essere una porzione di console che cambia ad ogni interruttore." Quindi, fintanto che la casella di controllo è presente, non importa cos'altro c'è.
Calvin's Hobbies,

Risposte:



31

HTML, 20 byte

Non so quanto questo sia valido come risposta. L'HTML richiede che il tag sia chiuso per convalidare legalmente, ma i browser moderni li chiuderanno automaticamente, quindi è eseguibile.

<input type=checkbox


3
Stavo guardando questo come un'opzione prima (senza virgolette) ma ho perso completamente la chiusura >. +1 e IMHO valido.
ElPedro,

1
Su questo sito, le lingue sono definite dalla loro implementazione, quindi questo mi sembra perfetto.
John Gowers,

1
Grazie @JohnGowers, mi sono chiesto quale sia la definizione di quanti abusi sono accettabili.
Jan

27

Bash , 67 55 50 35 32 31 byte

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

Il codice contiene un byte CR (prima riga nuova) e un byte CSI (parentesi angolare piccola con codifica Windows-1252). Richiede xterm (o equivalente) e la codifica ISO-8859-1 (o simile).

Il codice definisce una funzione denominata :, che visualizza alternativamente un 1 o 0 bianco in un rettangolo nero. Esistono esattamente 24 pixel diversi con le impostazioni predefinite di xterm. ( prova )

Per una versione precedente che alterna il colore dell'intero terminale, controlla la revisione 10 di questa risposta.

Grazie a @ ais523 per aver suggerito xterm, che consente di risparmiare 4 byte!

Come funziona

:(...)crea una funzione denominata :che viene eseguita ....

Il comando di lettura esegue la magia effettiva.

  • -p specifica un prompt di input, che viene stampato su STDOUT.

    • $[i^=1]è un'espansione aritmetica che XORs la variabile i con 1 . i possono inizialmente essere disinserito; quando ciò si verifica, verrà trattato come 0 .

    • Il ritorno a capo posiziona il cursore indietro all'inizio della riga.

    • ›?9hcattura il mouse nei terminali supportati. Ogni clic invierà sei caratteri al terminale, ovvero ←[Mbxydove rappresenta il byte ESC ( 0x1b ). ←[indica una sequenza di escape, Mil mouse, bil pulsante ( 0x20 + il numero del pulsante), xla coordinata x del clic ( 0x20 + coordinata) e yla coordinata y .

    • -sn6rende silenziosa la lettura (l'input del mouse non verrà ripetuto su STDERR) e si interrompe dopo aver letto esattamente 6 byte. Salva l'input nella variabile REPLY , ma non siamo interessati all'output che produce.

Alla fine, una volta terminata la lettura (dopo esattamente un clic del mouse), si :chiama ricorsivamente, inserendo un ciclo infinito.

Creazione e invocazione

$ 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

Produzione

screencast


Stavo lavorando a una soluzione simile a questa me stesso (anche se in una lingua diversa, costringendomi a rinunciare perché non riuscivo a trovare un modo per ricevere input senza una nuova riga). Un probabile miglioramento: modifica 1000hin 9h(la differenza è che 1000hgestisce sia la pressione che il rilascio del 9hmouse e gestisce solo il rilascio del mouse). Ciò potrebbe o non potrebbe essere necessario modificare altrove nel codice.

@ ais523 L'ho provato, ma almeno il mio emulatore di terminale (Konsole) non sembra supportarlo. Ne conosci uno che lo fa?
Dennis,

gnome-terminalsembra funzionare, è quello che stavo usando per i test (modifica: ma non credo che supporti un CSI da 1 byte). xtermdovrebbe anche funzionare e potrebbe essere più facile da installare se hai un sistema KDE. (L'ho appena testato da solo; funziona con, \x1b[ma non \x9bper qualche motivo, forse correlato alle mie impostazioni stty piuttosto che al terminale stesso.)

@ ais523 Ho xterm. Controllerò quando torno sul mio PC.
Dennis,

8
Mi piace come si trasforma :)da :(entro la fine
Andras Deak

22

Elaborazione, 78 66 65 63 61 byte

2 byte salvati grazie a @TuukkaX usando -a%2invece dia%2*-1

2 byte salvati grazie a @TuukkaX usando a=-a

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

La casella di controllo si alterna tra essere bianco e nero.

Spiegazione

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

Ora ci sono molte altre alternative come usare un'istruzione if per elaborare questo, ma poi diventa strano e cambia costantemente lo sfondo mentre si preme il mouse. Prima ho provato mouseButton, ma poi avrei bisogno di più condizioni e più codice che finirà per essere molto più dettagliato.

Ora per mousePressed()essere chiamato per sempre (altrimenti si fermerebbe solo dopo l'avvio del programma), abbiamo bisogno di una draw()funzione.

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
}

inserisci qui la descrizione dell'immagine


Una casella più piccola sarebbe di 90 byte (la casella si trova nell'angolo in alto a sinistra, quindi possiamo rimuovere alcune condizioni del mouse):

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

2
Uso intelligente di come l'elaborazione accetta numeri interi singoli come colori in scala di grigi!
FlipTack

@FlipTack Sembra che il bianco possa anche essere espresso comefill(-1)
Kritixi Lithos il

1
Ho un'idea. Inizializza asu 1 anziché su 0. Cambia a++in a=-a, il che rende -a%2giusto a. Questo alternerà atra 1 e -1. Tuttavia, non so di che colore sia il colore 1.
Yytsi,

@TuukkaX Sì, funziona. color(1)produce #010101che è molto vicino al nero
Kritixi Lithos

22

HTML + JavaScript, 32 30 25 caratteri

<p onclick=innerHTML^=1>0


3
thisè implicito e può essere rimosso. Inoltre, innerHTMLè più corto.
Dennis,

@Dennis, strano con questo ... Grazie.
Qwertiy,

+1 per non usare l' <input>elemento
RedClover

20

Unix Shell (+ x11-apps), 3 byte

Clausola di esclusione della responsabilità

La risposta qui sotto è noiosa, borderline e "si sente barare" (almeno per me).

Tuttavia, non sembra violare alcuna delle regole della sfida "come scritto" o "scappatoie predefinite", quindi la sto pubblicando.

(Se puoi indicare una regola specifica che non funziona, commenta!)

golfed

xgc

Il programma xgc mostra varie caratteristiche delle primitive grafiche X.

La schermata xgc è in realtà piena di varie caselle di controllo:

inserisci qui la descrizione dell'immagine

e "pulsanti appiccicosi" (che si qualificano come caselle di controllo, in base alle regole di questa sfida):

inserisci qui la descrizione dell'immagine


20

Contrassegno aromatizzato GitHub - 6 byte

- [ ] 

(C'è uno spazio finale)

In breve: controllare / non controllare


Sicuramente questo corrisponde alla seconda metà della prima frase, "Scrivi un programma che crea una casella di controllo a due stati con cui le persone possono interagire usando il mouse ".
arte

1
Sì, se lo incolli in un gist e crei il gist (per "compilation") sarai in grado di interagire con esso.
Axel,

Interessante. Grazie @ Ax31. Non ho mai usato l'essenza.
arte

1
Non mi sarei aspettato "Github Flavored Markdown".
Jonas Schäfer,



14

Python REPL, 45 byte

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

Non partecipo a CG né leggo spesso questi post. Tuttavia mi sorprende davvero che ti sia permesso di usare moduli esterni. Non è barare? Non so quanti byte sia il codice sorgente Tk, ma davvero questi byte non dovrebbero essere aggiunti al conteggio dei byte?
FMaz,

1
@Krazor tkinterè una libreria standard per Python (ma anche se non lo fosse, dovrei solo dichiarare Python REPL + tkinter). Ciò significa che posso usare le sue funzionalità semplicemente importandolo. La penalità che suggerisci è simile alla richiesta agli utenti di includere nel conteggio dei byte il numero di byte nella fonte della lingua in cui stai scrivendo. Qui permettiamo a qualsiasi lingua o modulo di competere fintanto che è stato scritto e pubblicato pubblicamente prima la sfida è stata pubblicata.
Blue

Va bene, grazie per il chiarimento.
FMaz,

14

GeoGebra , 10 byte

Checkbox[]

Inserito nella barra di input.

Ecco una gif dell'esecuzione:

Esecuzione del programma


7
Whoah, GeoGebra. Lo ricordo. È passato un po 'di tempo.
Nic Hartley,

So che questo è fuori tema, ma vai al Waterloo Collegiate Institute? Solo per curiosità, in base al tuo nome. Non sono uno stalker, non ti preoccupare :)
HyperNeutrino,


11

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

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

-2 grazie a @KritixiLithos

Ridotto a 79 dopo un po 'di golf fantastico da @Jan. Sebbene la nuova versione soddisfi i requisiti, ho conservato la vecchia versione per motivi di orgoglio professionale.

Anche se è perfettamente valido utilizzare i built-in, ho pensato che fosse più divertente crearne uno mio da zero. Testato con Chrome e Firefox. border:solidè disponibile per la compatibilità con IE ma non so se sia effettivamente necessario nelle nuove versioni di IE - Non ho IE disponibile per il test.

L' pxaltezza è disponibile per il vantaggio di "Esegui frammento di codice", quindi non è inclusa nel conteggio dei byte "reali". Funziona bene nel browser senza di essa.

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

Versione precedente:

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


1
Puoi fare id=dper rimuovere d=this?
Kritixi Lithos,

1
@KritixiLithos - In effetti posso. Grazie e ben individuato :)
ElPedro il

1
Non è necessario impostare la larghezza, le regole dicono che può avere qualsiasi dimensione. Se memorizzi lo stato su una proprietà su this, salverai l'impostazione dell'ID. Se memorizzi thisin una proprietà risparmierai alcuni byte. Non alignè necessario. Dal momento che non ci sono spazi nelle stringhe degli attributi, non hai bisogno delle virgolette. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 byte
gennaio

@Jan - Grazie! La larghezza è il mio orgoglio professionale. Se non lo imposto sembra brutto e poiché questa risposta non vincerà mai ed è stata appena pubblicata come alternativa, probabilmente la lascerò lì. A parte questo alcuni ottimi suggerimenti. Grazie molto. Si aggiornerà domani.
ElPedro,

Grazie @Easterly. Aggiornato il codice ma ho dimenticato gli altri bit. Si sta facendo tardi.
ElPedro,

9

Minecraft 1.0.0, 1 byte

Una leva in Minecraft soddisfa tutti i criteri per una casella di controllo. Questa risposta è valida solo per le versioni precedenti del gioco in cui la pressione di una leva la attiva o disattiva.

inserisci qui la descrizione dell'immagine

Segnati usando il conteggio di byte suggerito da @Connor O'Brien.


Una differenza di 3 tra due risposte difficilmente crea o rompe un consenso, ma considerando che la risposta di Conor è piuttosto controversa (attualmente a + 24 / -10 ) e che la risposta accettata è stata ampiamente accolta ( + 17 / -0 ), penso quest'ultimo dovrebbe essere usato per segnare le risposte di Minecraft.
Dennis,

Tuttavia non ci sono blocchi di struttura in Minecraft 1.0.0
ev3commander l'

1
È uno na Conor, tra l'altro :)
Conor O'Brien,

Oppure potresti ricollegare i pulsanti sinistro e destro del mouse in qualsiasi versione più recente per renderlo valido; D
seadoggie01

@ ConorO'Brien Non è quello 1 block? Perché 1 byte? Non credo che mc memorizzi ogni blocco come un byte ...
RedClover,

8

TI-Basic, 15 byte

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

Abbastanza semplice. La casella di controllo copre circa il 40% dello schermo e si alterna tra bianco e nero. Se selezionato, lo schermo apparirà in questo modo:

schermo


8

Qualsiasi versione della riga di comando di Windows, 3 byte

(cmd.exe, batch, powershell, start-> run, qualunque cosa)

osk

Apre la tastiera su schermo che ha diverse "caselle di controllo" come i tasti Maiusc, Ctrl, Alt, Capslock Simile alla risposta xgc e ispirato alla schermata della risposta di SmileBASIC.


7

Ottava, 36 20 byte

uicontrol('sty','c')

Grazie a @LuisMendo risparmiato 16 byte!


1
uicontrol('sty','c')funziona anche
Luis Mendo il

@LuisMendo Grazie! Conteggi di 1/2 byte salvati!
rahnema1,

7

KV Lang , 8 byte

CheckBox

inserisci qui la descrizione dell'immagine


supponendo un ambiente Python davvero semplice da eseguire anche per kv lang:

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

Questo funziona fondamentalmente perché CheckBoxè incluso un widget Kivy in a kivy.Factorycome ogni widget dalla libreria standard.

Quella semplice stringa crea un'istanza di CheckBoxe, poiché mi runTouchAppaspetto di eseguire un widget, posso usare Builder.load_string.

Lo sfondo di load_stringgestisce praticamente ogni stringa kv e se esiste una singola istanza di un widget definito (ad es. CheckBox), Viene elevato a una posizione del widget principale , ad esempio:

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

e sono una casella vuota e una casella selezionata nel carattere di SB.
Attiva / disattiva la casella di controllo toccando lo schermo (l'elemento più vicino al clic con il mouse)

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Risposte barare:

0 byte:

(la tastiera su schermo ha pulsanti che si comportano come caselle di controllo, come il blocco maiuscole e i tasti di inserimento)

14 byte:

EXEC"SYS/SBGED

Apre l'editor grafico integrato, che ha più pulsanti simili a caselle di controllo


Questo è semplicemente geniale, anche se non capisco davvero cosa stia facendo la 4a linea. Potresti spiegare?
lumaca_

T<Oè vero quando smetti di toccare lo schermo e !=viene usato come XOR logico. X=X XOR (O && !T)
Mee,

7

C #, 124 120 byte

salvato 4 byte grazie a grabthefish.

casella di controllo selezionata e non selezionata nota: a causa delle modifiche, l'immagine non rappresenta esattamente ciò che rende il codice, il "checkBox1" non viene visualizzato con il codice corrente.

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(); } }


Se non hai trovato nulla su questo su meta, chiedi di questo su meta.
Matthew Roh,

Puoi liberarti degli spazi in var a = new Form();.
clismique,

@ Qwerp-Derp Li ho rimossi per il conteggio, ho appena incollato la cosa sbagliata, grazie.
sabato

potresti usare a.ShowDialog();per salvare qualche byte
prendi il pesce il

grazie @grabthefish, anche se c # perde ancora a java :(
satibel


6

HTML con 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||''>

Questa è una variante della risposta di @ ElPedro: creare una casella di controllo . Ridotto a 28 byte con l'aiuto di @Albert Renshaw Potrebbe essere ulteriormente ridotto, ma ciò lo renderebbe identico a Crea una casella di controllo

L'intera area dell'applicazione è selezionabile. Verrà visualizzato 0nello offstato e 1nello onstato. Provalo su https://jsbin.com/nuhetiyocu/1/edit


1
Ecco una variazione ordinata a 39 byte. <body onclick=t=this;t.innerHTML^=t?1:0Tuttavia, la regola dei 16 pixel tra il cambio di stato è in discussione.
Albert Renshaw,

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

1
Oh no, con il tuo aiuto sono già sceso al 33 :)
gennaio

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

1
Ora che c'è sempre un valore all'interno del contenitore, potrebbe essere cambiato da bodyun elemento diverso. Ma ho appena notato che renderebbe identica a un'altra risposta codegolf.stackexchange.com/questions/109155/create-a-checkbox/... così sto solo lasciando così com'è
Jan

6

Powershell v5 +, 94 byte

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

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Questo è piuttosto terribile, ma non riesco a ottenere le istruzioni più brevi con Add-Typeo using namespace- e la variabile è obbligatoria, poiché devo riutilizzare l'oggetto per mostrare il modulo e Controls.Add()non restituisce nulla di utilizzabile.

ShowDialog sul mio sistema è richiesto che la casella sia interattiva dopo aver eseguito questo comando, altrimenti il ​​modulo viene bloccato.

inoltre System.Windows.Forms.Formpuò essere abbreviato solo Windows.Forms.Formprima che (almeno il mio) il sistema interrompa il completamento automatico in una nuova sessione.


Bello! Potrebbe voler aggiungere che questo richiede la versione 5+.
Briantist

@briantist aggiornato, grazie.
domenica

6

Excel VBA, 38 32 31 29 byte

Funzione Window immediata che inserisce una casella di controllo di altezza = 9 e larghezza = 9, nella cella A1del primo foglio del progetto VBA di Excel attivo

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

-6 Grazie a pajonk per la sostituzione [A1],[A1],9,9con0,0,9,9

-1 per la sostituzione Sheets(1)con[Sheet1]

-2 per aver realizzato quanto sopra è stato stupido e usare Sheet1invece


Sembra che 1,1,9,9anche gli argomenti funzionino.
pajonk,

1
Non è necessario Sheet(1)., puoi eseguirlo abbastanza rapidamente in Excel ma CheckBoxesè inerente al foglio attivo
Mr.Burns

@ Mr.Burns Ho verificato questo, ma senza fare riferimento direttamente a nessun oggetto del foglio di lavoro, il CheckBoxes.Addmetodo genera un errore che indica "Oggetto richiesto"
Taylor Scott

@TaylorScott Hai ragione, ho inserito il codice in un modulo di foglio anziché in un modulo normale. Il mio errore xD
Mr.Burns

4

VBA (Word), 74 57 byte

-17 grazie a Taylor Scott

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

Il nome file del documento dovrebbe essere a.


1
Puoi sostituire il wdFieldFormCheckBoxcon 71(il valore intero della wdFieldFormCheckBoxcostante) per un risparmio di 17 byte
Taylor Scott

Penso che puoi rimuovere le nuove righe per -2 byte.
devRicher,

4

Pug, 20 byte

input(type=checkbox)

Oltre a ciò che conto è 23. Se rimuovete le virgolette funziona ancora su Firefox e Chrome (non posso testare su IE) e verrei a 21, nel qual caso lo considererei un miglioramento sull'esempio e quindi valido.
ElPedro,

@heonlygusti - anzi, ma senza le virgolette avrei votato :-) a proposito, il downvote non ero io.
ElPedro,

Avrei votato se non fosse stato per quelle citazioni, che non sono necessarie.
NightSkyCode

@theonlygusti per niente. Provaci.
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 eliminando la necessità di m/fun-mode.

-50 byte rimuovendo le opzioni :setupe :size, poiché sono predefinibili e non necessarie in non fun-mode. Rimossa anche l'importazione non necessaria per il middleware.

-18 byte grazie solo a @ ASCII. Modificato in colori "più piccoli" e rimosso uno spazio non necessario prima dell'operatore dereference ( @).

Crea uno schizzo Quil (una libreria Clojure che fornisce un livello sull'elaborazione), pertanto è necessario eseguire la libreria Quil.

(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))

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Non puoi sostituire 255 con 99? Inoltre proverei a rimuovere gli spazi prima / dopo i simboli e vedere se funziona ancora
solo ASCII il

@ ASCII-solo sì, ho potuto. Ha fatto un brutto colore sfavillante anche se iirc, e per qualche ragione l'ho dato la priorità in quel momento. E no, questo è lo spazio che posso purtroppo rimuovere.
Carcigenicate,

@ Solo ASCII Il problema è che i simboli possono contenere quasi tutti i caratteri, quindi in realtà gli unici "vicini sicuri" su cui è possibile rimuovere gli spazi sono qualsiasi tipo di parentesi o virgolette. Fortunatamente questo è un po 'per il primo è piuttosto diffuso.
Carcigenicate,

Hmm forse [0 0 99]allora? (una specie di blu scuro)
ASCII il

@ ASCII-only In realtà, penso di poter eliminare gli 0 ora che ci penso. Penso che Quil inserisca automaticamente il fronte con 0 se il vettore è troppo corto. Se ricordo l'ultimo, lo aggiusterò. Grazie per avermi fatto pensare.
Carcigenicato

4

Operazione linguaggio di scripting Flashpoint , 273 byte

Per mostrare la casella di controllo:

createDialog"b"

Ma prima deve essere definito:

Salvare quanto segue in un file denominato description.extnella cartella della missione:

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;}}}

La casella di controllo in azione:


3

AutoIt , 78 byte

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

Apre una finestra ingrandita che può essere chiusa come qualsiasi altra finestra di Windows. La massimizzazione e ... l'eccellenza è un effetto collaterale del golf.

inserisci qui la descrizione dell'immagine


Come eseguirò questo su Linux?
dkudriavtsev,

@wat wine AutoIt3.exe script.au3, dove il script.au3file contiene questo codice.
mınxomaτ,

3

Python, 62 byte

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.