Crear una casilla de verificación

51

Escriba un programa que cree una casilla de verificación de dos estados con la que las personas puedan interactuar usando un mouse.

Específicamente, su programa debe lograr todo lo siguiente:

  1. Tenga una región de 8 × 8 píxeles (o más grande si lo desea) de la pantalla que es el área en la que se puede hacer clic en la casilla de verificación. En adelante, esta región se llama simplemente la casilla de verificación.

  2. Cuando el cursor del mouse se mueve dentro de la casilla de verificación y se presiona el botón predeterminado del mouse *, la casilla de verificación debe alternar los estados.
    Marcado se desmarca. Sin marcar se comprueba.

  3. La casilla de verificación no debe moverse cuando se alterna.

  4. En el estado marcado, la casilla de verificación puede ser de cualquier color.

  5. En el estado desmarcado, la casilla de verificación puede tener cualquier color siempre que al menos 16 píxeles sean visualmente distintos del estado marcado .

  6. En una sola instancia de programa, todos los estados marcados deben ser visualmente idénticos entre sí y todos los estados no verificados deben ser visualmente idénticos entre sí.

  7. No finalice el programa hasta que finalice explícitamente (por ejemplo, mediante el botón de salida o Alt + F4), de modo que un usuario pueda hacer clic en la casilla de verificación todo lo que quiera.

* Puede suponer que el botón predeterminado del mouse siempre es hacer clic con el botón izquierdo, pero también está bien usar el predeterminado como lo define el software del mouse o el sistema operativo, que en realidad no se puede hacer clic izquierdo según el usuario.

Notas

  • No importa lo que esté fuera de su región de casilla de verificación. Podría ser solo el escritorio. Podría ser una parte de una consola que cambia en cada alternar.

  • No importa en qué estado comience su casilla de verificación.

  • La región de la casilla de verificación puede tener cualquier dimensión igual o superior a 8 × 8 píxeles. No necesita ser cuadrado.

  • Puede tener en cuenta los ajustes menores que están fuera de su control, como el tamaño de fuente de la consola, el zoom del navegador, la resolución del monitor, etc. Mientras su programa funcione en una configuración de prueba razonable, debería ser válido.

  • Si su programa abre una ventana, puede suponer que se ha arrastrado a una ubicación apropiada en la pantalla si es necesario (por ejemplo, la esquina superior izquierda).

  • Puede usar lenguajes de marcado como HTML u otros lenguajes que generalmente no consideramos como lenguajes de programación completos.

  • Su casilla de verificación debe poder alternarse con el botón predeterminado del mouse. Está bien si también alterna para otras formas de entrada (por ejemplo, el botón derecho del mouse), con la excepción del movimiento del mouse . es decir, el estado no debería cambiar si el mouse simplemente se mueve dentro de la casilla de verificación.

  • ¡Se recomiendan las capturas de pantalla de su casilla de verificación en acción!

Puntuación

El código más corto en bytes gana.

Ejemplo

Un ejemplo HTML canónico en 23 bytes.

<input type="checkbox">

Para mí en Google Chrome, esto hace que una casilla de verificación de 12 × 12 píxeles y unos 30 píxeles cambien claramente entre los estados marcados y no marcados.

Tengo en cuenta que el zoom del navegador está al 100%.

Pasatiempos de Calvin
fuente
2
¿Puede la casilla de verificación cubrir toda la pantalla?
Kritixi Lithos
@KritixiLithos Sí, eso sería válido. Aunque tenga en cuenta que, si lo desea, puede contar una región particular de 8x8 como la casilla de verificación oficial, incluso si una región más grande funciona.
Aficiones de Calvin
@Helka Homba: ¿está permitido que una aplicación muestre otros controles, aparte de la casilla de verificación?
zeppelin
¿Está bien que la casilla de verificación active otros tipos de entrada? (Por ejemplo, ¿es una solución correcta si la casilla de verificación se activa en cualquier tipo de entrada del usuario, independientemente de si es un clic del mouse, un movimiento del mouse o una pulsación de tecla? Se activaría con un clic del mouse, pero se activaría otros estímulos también.)
1
@zeppelin "No importa lo que esté fuera de la región de su casilla de verificación. Podría ser solo el escritorio. Podría ser una parte de una consola que cambia en cada cambio". Entonces, mientras la casilla esté allí, no importa qué más sea.
Aficiones de Calvin

Respuestas:

33

Mathematica, 10 bytes

Checkbox[]

Asume el entorno del cuaderno de Mathematica .

Los dos estados se ven así:

ingrese la descripción de la imagen aquí

Martin Ender
fuente
73
Seguro. Mathematica vuelve a engañar.
Matthew Roh
1
Es curioso cómo el comentario tiene más votos a favor que la respuesta
RudolfJelin
44
@ RudolfL.Jelínek es curioso cómo la respuesta tiene algún voto positivo ...
Martin Ender
31

HTML, 20 bytes

No sé cuán válido será esto como respuesta. HTML requiere que la etiqueta se cierre para validar legalmente, pero los navegadores modernos las cerrarán automáticamente para que sea ejecutable.

<input type=checkbox

ene
fuente
3
Estaba mirando esto como una opción anterior (sin comillas) pero me perdí por completo el cierre >. +1 y en mi humilde opinión.
ElPedro
1
En este sitio, los idiomas se definen por su implementación, por lo que me parece bien.
John Gowers
1
Gracias @JohnGowers, me he estado preguntando sobre la definición de cuánto abuso es aceptable.
Jan
27

Bash , 67 55 50 35 32 31 bytes

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

El código contiene un byte CR (primera línea nueva) y un byte CSI (pequeño corchete en ángulo recto con la codificación Windows-1252). Requiere xterm (o equivalente) y la codificación ISO-8859-1 (o similar).

El código define una función denominada :, que muestra alternativamente un blanco 1 o 0 en un rectángulo negro. Hay exactamente 24 píxeles diferentes con la configuración predeterminada de xterm. ( prueba )

Para una versión anterior que alterna el color de todo el terminal, verifique la revisión 10 de esta respuesta.

¡Gracias a @ ais523 por sugerir xterm, que ahorra 4 bytes!

Cómo funciona

:(...)crea una función llamada :que se ejecuta ....

El comando de lectura hace la magia real.

  • -p especifica una solicitud de entrada, que se imprime en STDOUT.

    • $[i^=1]es una expansión aritmética que XOR la ​​variable i con 1 . i puede ser inicialmente unset; cuando esto ocurra, será tratado como 0 .

    • El retorno de carro coloca el cursor hacia atrás al comienzo de la línea.

    • ›?9hcaptura el mouse en terminales compatibles. Cada clic enviará seis caracteres al terminal, es decir ←[Mbxy, donde representa el byte ESC ( 0x1b ). ←[indica una secuencia de escape, Mel mouse, bel botón ( 0x20 + el número del botón), xla coordenada x del clic ( 0x20 + coordenada) y yla coordenada y .

    • -sn6hace que la lectura sea silenciosa (la entrada del mouse no se repetirá en STDERR) y se detiene después de leer exactamente 6 bytes. Guarda la entrada en la variable REPLY , pero no estamos interesados ​​en la salida que produce.

Finalmente, una vez que finaliza la lectura (después de hacer exactamente un clic con el mouse), se :llama recursivamente, ingresando un bucle infinito.

Creación e invocación.

$ 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

Salida

screencast

Dennis
fuente
Yo mismo estaba trabajando en una solución similar a esta (aunque en un idioma diferente, lo que me obligó a rendirme porque no podía encontrar una manera de recibir información sin una nueva línea). Una mejora probable: cambiar 1000ha 9h(la diferencia es que 1000hmaneja tanto la presión como la liberación del mouse, y 9hsolo maneja la liberación del mouse). Esto podría o no necesitar cambios en otra parte del código.
@ ais523 Lo intenté, pero al menos mi emulador de terminal (Konsole) no parece admitirlo. ¿Conoces uno que lo haga?
Dennis
gnome-terminalparece funcionar, eso es lo que estaba usando para probar (editar: pero no creo que sea compatible con un CSI de 1 byte). xtermTambién debería funcionar y podría ser más fácil de instalar si tiene un sistema KDE. (Acabo de probar esto por mí mismo, sino que trabaja con \x1b[, pero no con \x9b, por alguna razón, posiblemente relacionada con la configuración de mi stty en lugar de a la propia terminal.)
@ ais523 Tengo xterm. Lo comprobaré cuando vuelva a mi PC.
Dennis
8
Me encanta la forma en que se hace :)desde :(el final
Andras Deak
22

Procesamiento, 78 66 65 63 61 bytes

2 bytes guardados gracias a @TuukkaX utilizando en -a%2lugar dea%2*-1

2 bytes guardados gracias a @TuukkaX usando a=-a

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

La casilla de verificación alterna entre ser blanco y negro.

Explicación

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

Ahora hay muchas otras alternativas, como usar una instrucción if para procesar esto, pero luego se vuelve extraño y cambia constantemente el fondo mientras se presiona el mouse. Primero lo intenté mouseButton, pero luego necesitaría más condiciones y más código que terminará siendo mucho más detallado.

Ahora, para mousePressed()ser llamado para siempre (de lo contrario, se detendría una vez que el programa acaba de comenzar), necesitamos una draw()función.

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
}

ingrese la descripción de la imagen aquí


Una casilla de verificación más pequeña sería de 90 bytes (la casilla de verificación está en la esquina superior izquierda, por lo que podemos eliminar algunas condiciones del mouse):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}
Kritixi Lithos
fuente
2
¡Uso inteligente de cómo Processing acepta enteros individuales como colores en escala de grises!
FlipTack
@FlipTack Parece que el blanco también se puede expresar comofill(-1)
Kritixi Lithos
1
Tengo una idea. Inicializar aa 1 en lugar de 0. Cambiar a++a a=-a, lo que hace -a%2justo a. Esto alternará aentre 1 y -1. Sin embargo, no sé qué color produce.
Yytsi
@ TuukkaX Sí, funciona. color(1)produce #010101que está muy cerca del negro
Kritixi Lithos
22

HTML + JavaScript, 32 30 25 caracteres

<p onclick=innerHTML^=1>0

Qwertiy
fuente
3
thises implícito y se puede eliminar. Además, innerHTMLes más corto.
Dennis
@ Dennis, extraño con esto ... Gracias.
Qwertiy
+1 por no usar el <input>elemento
RedClover
20

Unix Shell (+ x11-apps), 3 bytes

Descargo de responsabilidad

La respuesta a continuación es aburrida, limítrofe y "hace trampa" (al menos para mí).

Sin embargo, no parece violar ninguna de las reglas de desafío "tal como están escritas" o "lagunas predeterminadas", así que lo estoy publicando.

(Si puede señalar una regla específica que no cumple, ¡comente!)

Golfed

xgc

El programa xgc muestra varias características de las primitivas de gráficos X.

La pantalla xgc en realidad está llena de varias casillas de verificación:

ingrese la descripción de la imagen aquí

y "botones adhesivos" (que califican como casillas de verificación, bajo las reglas de este desafío):

ingrese la descripción de la imagen aquí

zepelín
fuente
20

Markit con sabor a GitHub - 6 bytes

- [ ] 

(Hay un espacio final)

En una esencia: verificar / no verificar

Axel
fuente
¿Seguro que esto coincide con la segunda mitad de la primera oración, "Escribe un programa que crea una casilla de verificación de dos estados con la que las personas pueden interactuar usando un mouse "?
manatwork
1
Sí, si lo pega en una esencia y crea la esencia (para "compilación") podrá interactuar con ella.
Axel
Interesante. Gracias @ Ax31. Nunca usé lo esencial.
manatwork
1
No hubiera esperado "Markdown con sabor a Github".
Jonas Schäfer
18

AHK , 25 bytes

Gui,Add,Checkbox
Gui,Show

Salida -

El puntero del mouse no se captura en este gif

Gurupad Mamadapur
fuente
16

Scratch, 2 bloques

ingrese la descripción de la imagen aquí

Pon este script en el sprite predeterminado (que viene con 2 disfraces)

SuperJedi224
fuente
1
Demostración en línea: phosphorus.github.io/…
primo
14

Python REPL, 45 bytes

from tkinter import*
Checkbutton(Tk()).pack()
Azul
fuente
No participo en CG ni leo con frecuencia estas publicaciones. Sin embargo, realmente me sorprende que se le permita usar módulos externos. ¿No es eso hacer trampa? No sé cuántos bytes tiene el código fuente de Tk, pero ¿realmente no deberían agregarse estos bytes al recuento de bytes?
FMaz
1
@Krazor tkinteres una biblioteca estándar para Python (pero incluso si no fuera así, solo tendría que declarar Python REPL + tkinter). Esto significa que puedo usar sus funciones simplemente importándolas. La penalización que sugiere es similar a pedirles a los usuarios que incluyan en el recuento de bytes el número de bytes en la fuente del idioma en el que están escribiendo. Aquí permitimos que cualquier idioma o módulo compita siempre que se haya escrito y publicado públicamente antes El desafío fue publicado.
Azul
Bien, gracias por la aclaración.
FMaz
14

GeoGebra , 10 bytes

Checkbox[]

Ingresado en la barra de entrada.

Aquí hay un gif de la ejecución:

Ejecución del programa

TheBikingViking
fuente
77
Whoah, GeoGebra. Yo recuerdo eso. Ha sido un tiempo.
Nic Hartley
Sé que esto está fuera de tema, pero ¿vas al Instituto Colegial de Waterloo? Solo por curiosidad, según tu nombre. No soy un acosador, no te preocupes :)
HyperNeutrino
13

Tcl / Tk, 21 bytes

Golfed

grid [checkbutton .c]

ingrese la descripción de la imagen aquí

zepelín
fuente
11

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

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

-2 con agradecimiento a @KritixiLithos

Reducido a 79 después de un fantástico golf de @Jan. Aunque la nueva versión cumple con los requisitos, he mantenido la versión anterior por razones de orgullo profesional.

Si bien es perfectamente válido usar elementos integrados, pensé que era más divertido crear el mío desde cero. Probado con Chrome y Firefox. border:solidestá ahí para la compatibilidad con IE, pero no sé si realmente es necesario en las versiones más nuevas de IE; no tengo IE disponible para probar.

La pxaltura está ahí para el beneficio de "Ejecutar fragmento de código", por lo que no se incluye en el recuento de bytes "real". Funciona bien en el navegador sin él.

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

Versión previa:

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

ElPedro
fuente
1
¿Se puede hacer id=dpara eliminar d=this?
Kritixi Lithos
1
@KritixiLithos - De hecho puedo. Gracias y bien visto :)
ElPedro
1
No es necesario establecer el ancho, las reglas dicen que puede ser cualquier dimensión. Si almacena el estado en una propiedad this, guardará la configuración de la identificación. Si almacena thisen una propiedad, ahorrará algunos bytes. El alignes innecesario. Como no hay espacios en las cadenas de atributos, no necesita las comillas. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 bytes
Ene
@ Jan - ¡Gracias! El ancho es mi propio orgullo profesional. Si no lo configuro, se ve feo y dado que esta respuesta nunca va a ganar y se publicó como una alternativa, probablemente la dejaré allí. Aparte de eso, algunos buenos consejos. Muchas gracias. Se actualizará mañana.
ElPedro
Gracias @Easterly. Actualicé el código pero olvidé los otros bits. Se está haciendo tarde.
ElPedro
9

Minecraft 1.0.0, 1 byte

Una palanca en Minecraft cumple con todos los criterios para una casilla de verificación. Esta respuesta solo es válida para versiones anteriores del juego donde golpear una palanca todavía la alterna.

ingrese la descripción de la imagen aquí

Anotado usando el conteo de bytes sugerido de @Connor O'Brien.

Zavada
fuente
Una diferencia de 3 entre dos respuestas apenas logra o rompe un consenso, pero teniendo en cuenta que la respuesta de Conor es bastante controvertida (actualmente en + 24 / -10 ) y que la respuesta aceptada es abrumadoramente bien recibida ( + 17 / -0 ), creo este último debe usarse para calificar las respuestas de Minecraft.
Dennis
Sin embargo, no hay bloques de estructura en Minecraft 1.0.0
ev3commander
1
Es uno nen Conor, por cierto :)
Conor O'Brien
O bien, podría volver a enlazar los botones izquierdo y derecho del ratón en cualquier versión más nueva para que sea válida; D
seadoggie01
@ ConorO'Brien ¿No es eso 1 block? ¿Por qué 1 byte? No creo que mc almacene cada bloque como un byte ...
RedClover
8

TI-Basic, 15 bytes

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

Bastante sencillo. La casilla de verificación cubre aproximadamente el 40% de la pantalla y alterna entre blanco y negro. Cuando está marcada, la pantalla se verá así:

pantalla

Timtech
fuente
8

Cualquier versión de la línea de comandos de Windows, 3 bytes.

(cmd.exe, lote, powershell, inicio-> ejecutar, lo que sea)

osk

Abre el teclado en pantalla que tiene varias "casillas de verificación" como shift, ctrl, alt, teclas de mayúsculas Similar a la respuesta xgc, e inspirado en la captura de pantalla de respuesta SmileBASIC.

usuario65280
fuente
7

Octava, 36 20 bytes

uicontrol('sty','c')

¡Gracias a @LuisMendo ahorró 16 bytes!

rahnema1
fuente
1
uicontrol('sty','c')también funciona
Luis Mendo
@LuisMendo ¡Gracias! ¡Cuenta de 1/2 byte guardada!
rahnema1
7

KV Lang , 8 bytes

CheckBox

ingrese la descripción de la imagen aquí


suponiendo un entorno Python realmente básico para que kv lang incluso se ejecute:

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

Esto funciona básicamente porque CheckBoxes un widget Kivy incluido en kivy.Factorycada widget de la biblioteca estándar.

Esa cadena simple crea una instancia de CheckBoxy debido runTouchAppa que espero que se ejecute un widget que puedo usar Builder.load_string.

El fondo de load_stringmaneja básicamente cada cadena kv y si hay una sola instancia de un widget definido (por ejemplo CheckBox), entonces se eleva a una posición de widget raíz , por ejemplo:

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

SmileBASIC, 49 bytes

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

y son una casilla vacía y una casilla marcada en la fuente de SB.
Cambie la casilla de verificación tocando la pantalla (lo más parecido a hacer clic con el mouse)

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Hacer trampa respuestas:

0 bytes:

(el teclado en pantalla tiene botones que actúan como casillas de verificación, como el bloqueo de mayúsculas y las teclas de inserción)

14 bytes:

EXEC"SYS/SBGED

Abre el editor de gráficos incorporado, que tiene varios botones tipo casilla de verificación

12Me21
fuente
Esto es genial, aunque realmente no entiendo lo que está haciendo la cuarta línea. ¿Podrías explicar?
caracol_
T<Oes cierto cuando deja de tocar la pantalla y !=se usa como un XOR lógico. X=X XOR (O && !T)
12Me21
7

C #, 124 120 bytes

ahorrado 4 bytes gracias a grabthefish.

casilla marcada y no marcada nota: debido a las ediciones, la imagen no representa exactamente lo que hace el código, el "checkBox1" no se muestra con el código actual.

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

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

satibel
fuente
Si no encontró nada sobre esto en meta, pregunte sobre esto en meta.
Matthew Roh
Puede deshacerse de los espacios en var a = new Form();.
clismique
@ Qwerp-Derp Los eliminé para contarlos, simplemente pegué lo incorrecto, gracias.
satibel
podría usar a.ShowDialog();para guardar algunos bytes
grabthefish
gracias @grabthefish, aunque c # todavía pierde con Java :(
satibel
6

Rubí con zapatos, 16 personajes

Shoes.app{check}

Salida de muestra: casilla de verificación creada con Ruby

hombre trabajando
fuente
6

HTML con JavaScript, 46 33 28 bytes

<body onclick=innerHTML^=1>0

v2

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

v1

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

Esta es una variante de la respuesta de @ ElPedro: Crear una casilla de verificación . Se redujo a 28 bytes con la ayuda de @Albert Renshaw Se podría reducir aún más, pero eso lo haría idéntico a Crear una casilla de verificación

Se puede hacer clic en toda el área de aplicación. Se mostrará 0en el offestado y 1en el onestado. Pruébelo en https://jsbin.com/nuhetiyocu/1/edit

ene
fuente
1
Aquí hay una variación ordenada en 39 bytes. <body onclick=t=this;t.innerHTML^=t?1:0Sin embargo, la regla de 16 píxeles entre el cambio de estado está en debate.
Albert Renshaw
38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw
1
Oh no, con tu ayuda ya estoy en 33 :)
Jan
1
28<body onclick=innerHTML^=1>0
Albert Renshaw
1
Ahora que siempre hay un valor dentro del contenedor, se puede cambiar de bodya un elemento diferente. Pero me di cuenta de que eso lo haría idéntico a otra respuesta codegolf.stackexchange.com/questions/109155/create-a-checkbox/…, así que lo dejo como está
Jan
6

Powershell v5 +, 94 bytes

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

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Esto es bastante terrible, pero no puedo acortar las declaraciones con ninguno Add-Typeo using namespace- y la variable es obligatoria, ya que necesito reutilizar el objeto para mostrar el formulario y Controls.Add()no devuelve nada utilizable.

ShowDialog es obligatorio en mi sistema que el cuadro sea interactivo después de ejecutar este comando; de lo contrario, el formulario está congelado.

También System.Windows.Forms.Formsolo se puede acortar a Windows.Forms.Formantes (al menos el mío) el sistema deja de completarlo automáticamente en una nueva sesión.

colsw
fuente
¡Agradable! Es posible que desee agregar que esto requiere la versión 5+.
briantist
@briantist actualizado, gracias.
colsw
6

Excel VBA, 38 32 31 29 Bytes

Función de ventana inmediata que inserta una casilla de verificación de altura = 9 y ancho = 9, en la celda A1en la primera hoja del proyecto VBA de Excel activo

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

-6 Gracias a pajonk por reemplazar [A1],[A1],9,9con0,0,9,9

-1 para reemplazar Sheets(1)con[Sheet1]

-2 para darse cuenta de lo anterior fue estúpido y usar en su Sheet1lugar

Taylor Scott
fuente
Parece que 1,1,9,9como argumentos funciona también.
pajonk
1
No necesita el Sheet(1)., puede ejecutar esto lo suficientemente rápido en Excel, pero CheckBoxesestá heredado de la hoja activa
Mr.Burns
@ Mr.Burns Lo he comprobado, pero sin hacer referencia directa a ningún objeto de la Hoja de trabajo, el CheckBoxes.Addmétodo arroja un error que indica "Objeto requerido"
Taylor Scott,
@TaylorScott Tienes razón, puse el código en un módulo de hoja en lugar de un módulo normal ... Mi error xD
Mr.Burns
4

VBA (Word), 74 57 bytes

-17 gracias a Taylor Scott

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

El nombre del archivo del documento debe ser a.

Daniel
fuente
1
Puede reemplazar el wdFieldFormCheckBoxcon 71(el valor entero de la wdFieldFormCheckBoxconstante) para un ahorro de 17 bytes
Taylor Scott
Creo que puedes eliminar las nuevas líneas para -2 bytes.
devRicher
4

Pug, 20 bytes

input(type=checkbox)
theonlygusti
fuente
Además, cuento como 23. Si eliminas las comillas, todavía funciona en Firefox y Chrome (no se puede probar en IE) y entraría en 21, en cuyo caso lo consideraría una mejora en el ejemplo y, por lo tanto, es válido.
ElPedro
@heonlygusti, de hecho, pero sin las citas hubiera votado :-) por cierto, el voto negativo no fui yo.
ElPedro
Hubiera votado si no fuera por esas citas, que no son necesarias.
NightSkyCode
@theonlygusti en absoluto. Darle una oportunidad.
NightSkyCode
4

Clojure, 201 195 145 127 bytes

(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 bytes eliminando la necesidad de m/fun-mode.

-50 bytes eliminando las opciones :setupy :size, ya que son predeterminadas e innecesarias en non- fun-mode. También se eliminó la importación innecesaria de middleware.

-18 bytes gracias a @ ASCII-only. Cambió a colores "más pequeños" y eliminó un espacio innecesario antes del operador de desreferencia ( @).

Crea un boceto de Quil (una biblioteca Clojure que proporciona una capa sobre el procesamiento), por lo tanto, esto requiere que se ejecute la biblioteca 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))

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Carcigenicate
fuente
¿No puedes reemplazar 255 con 99? También intentaría eliminar espacios antes / después de los símbolos y ver si aún funciona
solo ASCII
@ Solo ASCII sí, podría. Tenía un color desagradable y feo aunque iirc, y por alguna razón le di prioridad a eso en ese momento. Y no, desafortunadamente, es todo el espacio que puedo eliminar.
Carcigenicate
@ Solo ASCII El problema es que los símbolos pueden contener casi cualquier carácter, por lo que realmente los únicos "vecinos seguros" en los que puede eliminar espacios son cualquier tipo de paréntesis o comillas. Afortunadamente, esto es un ceceo al primero es bastante frecuente.
Carcigenicate
Hmm tal vez [0 0 99]entonces? (algún tipo de azul oscuro)
solo ASCII
@ Solo ASCII En realidad, creo que puedo eliminar los ceros ahora que lo pienso. Creo que Quil rellena automáticamente el frente con ceros si el vector es demasiado corto. Si recuerdo lo último, lo arreglaré. Gracias por hacerme pensar.
Carcigenicate
4

Lenguaje de script Operation Flashpoint , 273 bytes

Para mostrar la casilla de verificación:

createDialog"b"

Pero primero debe definirse:

Guarde lo siguiente en un archivo nombrado description.exten la carpeta de la misión:

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 casilla de verificación en acción:

Steadybox
fuente
3

AutoIt , 78 Bytes

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

Abre una ventana maximizada que puede cerrarse como cualquier otra ventana de ventanas. La maximización y ... en la parte superior es un efecto secundario del golf.

ingrese la descripción de la imagen aquí

mınxomaτ
fuente
¿Cómo ejecutaría esto en Linux?
dkudriavtsev
@wat wine AutoIt3.exe script.au3, donde el script.au3archivo contiene este código.
mınxomaτ
3

Python, 62 bytes

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Azul
fuente