Ecrivez un programme qui crée une case à cocher à deux états avec laquelle les gens peuvent interagir à l'aide d'une souris.
Plus précisément, votre programme doit atteindre tous les objectifs suivants:
Avoir une zone de 8 × 8 pixels (ou plus grande si désiré) de l'écran qui est la zone cliquable de la case à cocher. Désormais cette région s'appelle simplement la case à cocher.
Lorsque le curseur de la souris est déplacé dans la case à cocher et que le bouton de souris * par défaut est enfoncé, la case à cocher doit basculer entre les états.
Coché devient décoché. Décoché devient coché.La case à cocher ne doit pas bouger quand on la bascule.
A l'état coché, la case à cocher peut être n'importe quelle couleur.
Si la case à cocher n'est pas cochée, la case à cocher peut contenir n'importe quelle couleur, à condition qu'au moins 16 pixels soient visuellement différents de l'état coché .
Dans une seule instance de programme, tous les états cochés doivent être visuellement identiques les uns aux autres et tous les états non vérifiés doivent être visuellement identiques les uns aux autres.
Ne terminez pas le programme tant qu'il n'est pas explicitement terminé (par exemple, via le bouton de sortie ou Alt + F4), afin qu'un utilisateur puisse cliquer autant que nécessaire sur la case à cocher.
* Vous pouvez supposer que le bouton de la souris par défaut correspond toujours à un clic gauche, mais il est également judicieux d'utiliser le paramètre par défaut défini par le logiciel de la souris ou le système d'exploitation, ce qui peut ne pas être en fait un clic gauche, en fonction de l'utilisateur.
Remarques
Peu importe ce qui se trouve en dehors de votre zone de case à cocher. Cela pourrait juste être le bureau. Il peut s'agir d'une partie d'une console qui change à chaque basculement.
Peu importe dans quel état votre case à cocher commence.
La zone de case à cocher peut avoir des dimensions égales ou supérieures à 8 × 8 pixels. Ce n'est pas nécessairement carré.
Vous pouvez accorder des tolérances mineures pour les paramètres hors de votre contrôle, tels que la taille de la police de la console, le zoom du navigateur, la résolution du moniteur, etc. Tant que votre programme fonctionne dans un paramètre de test raisonnable, il doit être valide.
Si votre programme ouvre une fenêtre, vous pouvez en déduire que celle-ci a été déplacée vers un emplacement approprié de l'écran si nécessaire (par exemple, le coin supérieur gauche).
Vous pouvez utiliser des langages de balisage tels que HTML ou d'autres langages que nous ne considérons généralement pas comme des langages de programmation à part entière.
Votre case à cocher doit être permutable en utilisant le bouton de la souris par défaut. C'est bien s'il bascule également pour d'autres formes de saisie (par exemple, le bouton droit de la souris), à l'exception du déplacement de la souris . c'est-à-dire que l'état ne devrait pas changer si la souris est simplement déplacée dans la case à cocher.
Les captures d'écran de votre case à cocher en action sont vivement encouragées!
Notation
Le code le plus court en octets gagne.
Exemple
Un exemple HTML canonique de 23 octets.
<input type="checkbox">
Pour moi, dans Google Chrome, cela fait une case à cocher de 12 × 12 pixels et environ 30 pixels changent clairement entre les états cochés et non cochés.
Je tiens compte du fait que le zoom du navigateur est à 100%.
la source
Réponses:
Mathematica, 10 octets
Suppose l' environnement de cahier de Mathematica .
Les deux états ressemblent à ceci:
la source
HTML, 20 octets
Je ne sais pas à quel point cela sera valable comme réponse. HTML nécessite que la balise soit fermée pour validation légale, mais les navigateurs modernes les fermeront automatiquement afin qu'elle soit exécutable.
la source
>
. +1 et valide IMHO.Bash ,
675550353231 octetsLe code contient un octet CR (première nouvelle ligne) et un octet CSI (petit crochet à angle droit avec le codage Windows-1252). Il nécessite xterm (ou équivalent) et le codage ISO-8859-1 (ou similaire).
Le code définit une fonction nommée
:
, qui affiche alternativement un 1 blanc ou un 0 blanc dans un rectangle noir. Il y a exactement 24 pixels différents avec les paramètres par défaut de xterm. ( preuve )Pour une version plus ancienne qui change la couleur de tout le terminal, vérifiez la révision 10 de cette réponse.
Merci à @ ais523 d’avoir suggéré xterm, ce qui économise 4 octets!
Comment ça fonctionne
:(...)
crée une fonction nommée:
qui s'exécute...
.La commande de lecture fait la magie réelle.
-p
spécifie une invite d'entrée qui est imprimée sur STDOUT.$[i^=1]
est une expansion arithmétique qui XORs la variable i avec 1 . je peux être initialement non réglé; lorsque cela se produit, il sera traité comme 0 .Le retour chariot replace le curseur au début de la ligne.
›?9h
capture la souris dans les terminaux pris en charge. Chaque clic enverra six caractères au terminal, à savoir←[Mbxy
, où←
représente l'octet ESC ( 0x1b ).←[
indique une séquence d'échappement,M
la souris,b
le bouton ( 0x20 + le numéro du bouton),x
la coordonnée x du clic ( coordonnée 0x20 +) ety
la coordonnée y .-sn6
rend la lecture silencieuse (l'entrée de la souris ne sera pas répercutée sur STDERR) et s'arrête après avoir lu exactement 6 octets. Il enregistre l'entrée dans la variable REPLY , mais le résultat qu'il produit ne nous intéresse pas.Enfin, une fois la lecture terminée (après un clic de souris),
:
s’appelle de manière récursive et entre dans une boucle infinie.Création et invocation
Sortie
la source
1000h
à9h
(la différence est que1000h
gère à la fois appuyer et relâcher la souris, et9h
ne gère que le relâchement de la souris). Cela pourrait ou non nécessiter des modifications ailleurs dans le code.gnome-terminal
semble fonctionner, c’est ce que j’utilisais pour les tests (edit: mais je ne pense pas qu’il supporte un CSI à 1 octet).xterm
devrait également fonctionner et pourrait être plus facile à installer si vous avez un système KDE. (Je viens de tester cela moi-même; cela fonctionne avec\x1b[
mais pas avec,\x9b
pour une raison quelconque, probablement lié à mes paramètres stty plutôt qu'au terminal lui-même.):)
d':(
ici la finTraitement,
7866656361 octets2 octets enregistrés grâce à @TuukkaX en utilisant à la
-a%2
place dea%2*-1
2 octets enregistrés grâce à @TuukkaX en utilisant
a=-a
La case à cocher alterne entre noir et blanc.
Explication
Il existe maintenant de nombreuses autres solutions, telles que l’utilisation d’une instruction if pour traiter cela, mais cela devient étrange et change constamment l’arrière-plan lorsque vous appuyez sur la souris. J'ai d'abord essayé
mouseButton
, mais j'aurais alors besoin de plus de conditions et de code qui finirait par être beaucoup plus bavard.Maintenant, pour
mousePressed()
pouvoir être appelé pour toujours (sinon, le programme s’arrêtera juste après le début du programme), nous avons besoin d’unedraw()
fonction.Une petite case à cocher serait de 90 octets (la case à cocher se trouve dans le coin supérieur gauche, nous pouvons donc supprimer certaines conditions de la souris):
la source
fill(-1)
a
à 1 au lieu de 0. Changera++
àa=-a
, ce qui rend-a%2
justea
. Cela basculeraa
entre 1 et -1. Je ne sais pas quelle couleur 1 produit cependant.color(1)
produit#010101
qui est très proche du noirHTML + JavaScript,
323025 caractèresla source
this
est implicite et peut être supprimé. Aussi,innerHTML
est plus courte.<input>
élémentUnix Shell (+ x11-apps), 3 octets
Avertissement
La réponse ci-dessous est ennuyeuse, limite et "sent tricher" (du moins pour moi).
Pourtant, il ne semble pas enfreindre les règles du challenge "telles qu'écrites", ni les "échappatoires par défaut", alors je les publie.
(Si vous pouvez indiquer une règle spécifique qui est enfreinte, veuillez commenter!)
Golfé
L’ écran xgc contient en réalité plusieurs cases à cocher:
et "boutons collants" (qui sont considérés comme des cases à cocher, selon les règles de ce défi):
la source
GitHub Flavored Markdown - 6 octets
(Il y a un espace de fuite)
En bref:
la source
AHK , 25 octets
Sortie -
la source
Scratch, 2 blocs
Mettez ce script dans le sprite par défaut (qui vient avec 2 costumes)
la source
Python REPL, 45 octets
la source
tkinter
est une bibliothèque standard pour Python (mais même si ce n'était pas le cas, je n'aurais qu'à déclarer Python REPL + tkinter). Cela signifie que je peux utiliser ses fonctionnalités simplement en les important. La pénalité que vous proposez est similaire à celle que vous demandez aux utilisateurs d’inclure dans le nombre d’octets le nombre d’octets dans la source de la langue dans laquelle vous écrivez. Nous autorisons toute langue ou tout module à faire concurrence tant qu’il a été écrit et publié publiquement avant le défi a été posté.GeoGebra , 10 octets
Entré dans la barre de saisie.
Voici un gif de l'exécution:
la source
Tcl / Tk, 21 octets
Golfé
la source
HTML avec JavaScript -
13612412011511311110979 octets-2 grâce à @KritixiLithos
Réduit à 79 après une partie de golf fantastique de @Jan. Bien que la nouvelle version réponde aux exigences, j'ai conservé l'ancienne version pour des raisons de fierté professionnelle.
Bien qu'il soit parfaitement valide d'utiliser les fonctions intégrées, j'ai pensé qu'il était plus amusant de créer le mien à partir de rien. Testé avec Chrome et Firefox.
border:solid
existe-t-il pour la compatibilité IE mais je ne sais pas si cela est réellement nécessaire dans les nouvelles versions d'IE - je n'ai pas IE disponible pour tester.Le
px
dans la hauteur est là pour l'avantage de "Run code snippet" donc n'est pas inclus dans le "réel" nombre d'octets. Cela fonctionne bien dans le navigateur sans cela.La version précédente:
la source
id=d
pour supprimerd=this
?this
vous enregistrez la définition de l'identifiant. Si vous stockezthis
dans une propriété, vous économiserez quelques octets. Lealign
est inutile. Comme il n'y a pas d'espaces dans les chaînes d'attributs, vous n'avez pas besoin des guillemets.<p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>
79 octetsMinecraft 1.0.0, 1 octet
Un levier dans Minecraft répond à tous les critères pour une case à cocher. Cette réponse n’est valable que pour les anciennes versions du jeu où la frappe est toujours activée.
Marqué selon le nombre d'octets suggéré par @Connor O'Brien.
la source
n
à Conor, en passant :)1 block
? Pourquoi1 byte
? Je ne pense pas que mc stocke chaque bloc sous la forme d'un octet ...TI-Basic, 15 octets
Assez simple. La case à cocher couvre environ 40% de l'écran et alterne entre noir et blanc. Lorsque coché, l’écran ressemblera à quelque chose comme ceci:
la source
Toute version de la ligne de commande Windows, 3 octets
(cmd.exe, batch, powershell, start-> run, peu importe)
Ouvre le clavier à l'écran qui comporte plusieurs "cases à cocher" telles que Maj, Ctrl, Alt, Touches majuscules. Similaire à la réponse xgc et inspiré de la capture d'écran de la réponse SmileBASIC.
la source
Octave,
3620 octetsGrâce à @LuisMendo, 16 octets ont été sauvegardés!
la source
uicontrol('sty','c')
fonctionne aussiKV Lang , 8 octets
en supposant qu'un environnement Python vraiment basique pour que kv lang s'exécute même:
Cela fonctionne essentiellement parce
CheckBox
qu’un widget de Kivy est inclus danskivy.Factory
chaque widget de la bibliothèque standard.Cette simple chaîne crée une instance de
CheckBox
et à cause de l'runTouchApp
attente d'un widget à exécuter, je peux l'utiliserBuilder.load_string
.L'arrière-plan des
load_string
poignées correspond à peu près à chaque chaîne de kv. Si une seule instance d'un widget est définie (par exempleCheckBox
), elle est élevée à la position d' un widget racine , par exemple:la source
SmileBASIC, 49 octets
et
sont une case vide et une case cochée dans la police de SB.Basculez la case à cocher en touchant l'écran (la chose la plus proche de cliquer avec une souris)
Tricher les réponses:
0 octet:
(le clavier à l'écran comporte des boutons qui agissent comme des cases à cocher, telles que le verrouillage des majuscules et les touches d'insertion)
14 octets:
Ouvre l'éditeur graphique intégré, qui comporte plusieurs boutons ressemblant à des cases à cocher
la source
T<O
est vrai quand vous arrêtez de toucher l'écran, et!=
est utilisé comme un XOR logique.X=X XOR (O && !T)
C #,
124120 octetssauvé 4 octets grâce à grabthefish.
Remarque: en raison des modifications apportées, l'image ne représente pas exactement ce que le code crée, "checkBox1" n'est pas affiché avec le code actuel.
ungolfed:
using System.Windows.Forms; class P{ static void Main(){ var a=new Form(); a.Controls.Add(new CheckBox());
Application.Run(a);a.ShowDialog(); } }la source
var a = new Form();
.a.ShowDialog();
pour économiser quelques octetsRubis avec chaussures, 16 personnages
Exemple de sortie:
la source
HTML avec JavaScript,
463328 octetsv2
v1
Ceci est une variante de la réponse de @ ElPedro: Créer une case à cocher . Réduit à 28 octets à l'aide de @Albert Renshaw Il pourrait être encore réduit, mais cela le rendrait identique à Créer une case à cocher
Toute la zone d'application est cliquable. Il affichera
0
dans l'off
état et1
dans l'on
état. Essayez-le à l' adresse https://jsbin.com/nuhetiyocu/1/editla source
<body onclick=t=this;t.innerHTML^=t?1:0
La règle des 16 pixels entre les changements d’état reste toutefois à débattre.<body onclick=this.innerHTML^=this?1:0
<body onclick=innerHTML^=1>0
body
un élément à un autre. Mais je viens de remarquer que RENDRAIT identique à une autre réponse codegolf.stackexchange.com/questions/109155/create-a-checkbox/... donc je vais juste laisser comme cela estPowershell v5 +, 94 octets
C'est assez terrible, mais je ne peux pas raccourcir les instructions avec
Add-Type
or ouusing namespace
- et la variable est obligatoire, car je dois réutiliser l'objet pour afficher le formulaire etControls.Add()
ne renvoie rien d'utilisation.ShowDialog
est obligatoire sur mon système pour que la boîte soit interactive après avoir exécuté cette commande, sinon le formulaire est gelé.De plus, le système
System.Windows.Forms.Form
ne peut être raccourci que lorsque le systèmeWindows.Forms.Form
(du moins le mien) arrête de le terminer automatiquement lors d’une nouvelle session.la source
Excel VBA,
38323129 octetsFonction Immédiat de la fenêtre qui insère une case à cocher de hauteur = 9 et largeur = 9, dans la cellule
A1
de la première feuille du projet Excel VBA actif-6 Merci à pajonk d'avoir remplacé
[A1],[A1],9,9
par0,0,9,9
-1 pour remplacer
Sheets(1)
par[Sheet1]
-2 pour réaliser ce qui précède était stupide et utiliser à la
Sheet1
placela source
1,1,9,9
les arguments fonctionnent aussi bien.Sheet(1).
, vous pouvez l'exécuter assez rapidement dans Excel, mais elleCheckBoxes
est inhérente à la feuille activeCheckBoxes.Add
méthode renvoie une erreur indiquant "Objet requis"VBA (Word),
7457 octets-17 grâce à Taylor Scott
Le nom de fichier du document doit être un.
la source
wdFieldFormCheckBox
avec71
(la valeur entière de lawdFieldFormCheckBox
constante) pour une économie de 17 octetsCarlin, 20 octets
la source
Clojure,
201195145127 octets-6 octets en éliminant le besoin
m/fun-mode
.-50 octets en supprimant les options
:setup
et:size
, car elles sont par défaut et inutiles en nonfun-mode
. Également supprimé l'importation inutile pour le middleware.-18 octets grâce à @ ASCII uniquement. Remplacé par des couleurs "plus petites" et suppression d'un espace inutile avant l'opérateur de déréférence (
@
).Crée un croquis Quil (une bibliothèque Clojure qui fournit une couche sur Traitement), par conséquent, la bibliothèque Quil doit être exécutée.
la source
[0 0 99]
alors? (une sorte de bleu foncé)Langage de script Operation Flashpoint , 273 octets
Pour afficher la case à cocher:
Mais il faut d’abord définir:
Enregistrez ce qui suit dans un fichier nommé
description.ext
dans le dossier de la mission:La case à cocher en action:
la source
AutoIt , 78 octets
Ouvre une fenêtre maximisée qui peut être fermée comme n'importe quelle autre fenêtre. La maximisation et ... la perfection sont un effet secondaire du golf.
la source
wine AutoIt3.exe script.au3
, où lescript.au3
fichier contient ce code.Python, 62 octets
la source