Vous venez d'inviter un majeur des arts libéraux chez vous et vous lui dites
"Vous savez, je suis un excellent programmeur et je peux faire x et y et z ..."
Il s'ennuie rapidement et vous demande:
"Si vous êtes vraiment un grand programmeur, pouvez-vous créer un programme pour me permettre de dessiner, j'ai juste besoin de tracer des lignes sur l'écran en utilisant la souris et en sélectionnant différentes couleurs de n'importe quelle manière".
Votre code peut importer des bibliothèques standard. Votre code peut exiger que les couleurs soient sélectionnées via le clavier.
C'est du code-golf ; le code le plus court gagne.
Points de balle
Les lignes sont dessinées en déplaçant la souris tout en appuyant sur le bouton gauche.
L'algorithme de ligne de Bresenham n'est pas nécessaire, aucun algorithme intégré ne fera l'affaire
Si l'utilisateur peut modifier l'épaisseur de la ligne de quelque manière que ce soit, vous obtenez un bonus de * 0.8 mais ce n'est pas obligatoire.
Je suppose que cela devrait être plus agréable d'implémenter le dessin au trait nous-mêmes, mais si vous le souhaitez, vous pouvez importer une bibliothèque pour cela, dites-le simplement dans la description du code.
Le minimum est de 5 couleurs différentes (rouge, vert, bleu, blanc, noir). Si vous les faites changer au hasard, vous obtenez une pénalité de * 1,2. Vous pouvez les modifier comme vous le souhaitez (les touches et les touches sont OK).
Les dessiner en appuyant sur la souris entre des points ou à main levée serait le meilleur (c'est-à-dire comme vous le faites dans la peinture) et vous donne un bonus de * 0.7, mais toute autre méthode est correcte: (exemple) cliquez sur deux points et tracez une ligne entre ces points ?
La toile de dessin doit être de 600x400
Changer la couleur ne devrait changer que la couleur des lignes qui seront tracées à l'avenir.
L'implémentation d'une commande "Clear All" n'est pas obligatoire mais si vous l'implémentez, vous obtenez un bonus de * 0.9 .
la source
Réponses:
HTML + jQuery + CSS - 507 x (0,7 x 0,8 x 0,9) = 255,528
Pas aussi court que je le pensais, mais j'aime le résultat.
Fonctionnalités:
Démo en direct: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 octets
CSS - 35 octets
jQuery - 388/446 octets
Navigateurs compatibles W3C (par exemple Chrome) - 388 octets
Version Cross-Browser (correctifs pour Firefox, Safari, IE) - 446 octets
Correctifs:
event.offset[X|Y]
sont pas définis.event.which
etevent.buttons
ne sont pas définis de manière significative surmousemove
.e.buttons
aurait été suffisante.la source
id=
et peut-être d'autres aussi (vous n'avez pas fait deTraitement - 93 · 0,9 = 83,7
Avec presque aucun frais généraux pour le dessin, mais une syntaxe très verbeuse, dans le traitement, le meilleur score est probablement atteint sans aucune fonctionnalité intéressante et un seul bonus:
Résultat: 93 · 0,9 = 83,7 (les sauts de ligne sont uniquement pour la lisibilité et ne sont pas comptés dans la partition.)
Cependant, c'est beaucoup plus amusant avec tous les bonus en place:
But: 221 · 0,8 · 0,7 · 0,9 = 111,4
Il est utilisé comme ceci:
Cliquez et faites glisser la souris pour tracer une ligne droite.
Lorsque vous cliquez dessus, faites glisser la souris hors du côté gauche de la fenêtre et relâchez le bouton de la souris pour effacer l'écran.
Maintenir une touche enfoncée fait défiler les valeurs rouge, verte et bleue de la couleur du dessin et les différentes épaisseurs de trait. Étant donné que les périodes de cyclisme sont différentes, pratiquement toutes les combinaisons peuvent être atteintes (avec un peu d'essais).
Éditer:
Étant donné que le dessin à main levée donne également le bonus de 0,7, voici une autre solution:
But: 188 · 0,8 · 0,7 · 0,9 = 94,8
Il est utilisé comme ceci:
Cliquez et faites glisser pour dessiner des lignes à main levée.
Maintenez la touche de tabulation pour modifier la couleur et l'épaisseur du trait. Cela peut également être fait pendant le dessin (voir photo).
Appuyez sur n'importe quelle touche mais sur l'onglet puis sur l'onglet pour effacer l'écran.
la source
if(key>0)
est plus court queif(keyPressed)
Python 2,7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Edit: j'ai découvert que pygame peut dessiner des lignes avec une largeur variable alors voici une mise à jour.
Une expérience d'utilisation des modules PyGame.
Un programme de peinture simple qui trace des lignes de l'événement MOUSEDOWN (valeur 5) à l'événement MOUSEUP (valeur 6). Il utilise la fonction pygame.gfxdraw.line (). Appuyez sur la touche TAB pour parcourir 8 couleurs. Appuyez sur la touche RETOUR ARRIÈRE pour effacer l'affichage d'une couleur de papier blanc soigneusement conçue. La touche ENTER fait défiler la taille du pinceau sur une largeur de 0 à 7 pixels.
Je suis nouveau au code-golf, donc j'ai peut-être manqué certaines méthodes de réduction de la taille du code.
Exemple d'image 1:
Exemple d'image 2:
la source
ms-paint.py
.C # 519 x 0,7 x 0,8 x 0,9 = 261,6 en utilisant la méthode DrawLine.
Golfé:
Lisible:
En maintenant r , g ou b sur votre clavier, cela change la couleur de la ligne suivante en incrémentant un sbyte-array à l'index correspondant. Il recommencera à 0 en cas de débordement. Cela nous donne donc beaucoup de couleurs. Il en va de même pour l'épaisseur de la ligne qui est augmentée en maintenant t . Appuyez sur c pour effacer le formulaire.
la source
Mathematica - 333 x 0,7 x 0,8 x 0,9 = 168
la source
Tcl / Tk, 252
x 0,8 x 0,7 x 0,9
= 127 008
253 x 0,8 x 0,7 x 0,9 = 127 512254 x 0,8 x 0,7 x 0,9 = 128 016255 x 0,8 x 0,7 x 0,9 = 128,52Tcl / Tk, 267
x 0,8 x 0,7 x 0,9
= 134,568
Pour l'utiliser:
Un test simple:
la source
DarkBASIC Pro - 318 x 0,7 x 0,9 = 200,34
La chose la plus intéressante ici est d'utiliser une logique au niveau du bit sur le scancode du clavier actuel pour changer la couleur. J'utilise deux bits différents du scancode pour chaque canal - donc presque toutes les couleurs 6 bits sont possibles.
Voici un EXE compilé: Télécharger
la source
BBC BASIC - 141 pas de bonus
Mon premier langage de programmation et généralement plus utilisé par moi :)
la source
Python 2.7 - 384 * .8 * .7 = 215.04
Avec tous les bonus: 462 * .9 * .8 * .7 = 232.848
la source