Sie haben gerade einen Major der Freien Künste zu sich nach Hause eingeladen und Sie sagen es ihm / ihr
"Weißt du, ich bin ein großartiger Programmierer und ich kann x und y und z ..."
S / er langweilt sich schnell und fragt Sie:
"Wenn Sie wirklich ein großartiger Programmierer sind, können Sie ein Programm erstellen, mit dem ich zeichnen kann. Ich muss nur mit der Maus Linien auf dem Bildschirm zeichnen und auf beliebige Weise verschiedene Farben auswählen."
Ihr Code kann Standardbibliotheken importieren. Für Ihren Code müssen die Farben möglicherweise über die Tastatur ausgewählt werden.
Das ist Code-Golf ; kürzester Code gewinnt.
Spiegelstriche
Die Linien werden durch Bewegen der Maus bei gedrückter linker Taste gezeichnet.
Bresenhams Linienalgorithmus ist nicht erforderlich, ein eingebauter Algorithmus erledigt den Trick
Wenn der Benutzer die Strichstärke auf irgendeine Weise ändern kann, erhalten Sie einen * 0,8- Bonus, der jedoch nicht obligatorisch ist.
Ich denke, es sollte schöner sein, die Strichzeichnung selbst zu implementieren, aber wenn Sie möchten, können Sie eine Bibliothek dafür importieren, indem Sie sie einfach in der Codebeschreibung angeben.
Das Minimum sind 5 verschiedene Farben (rot, grün, blau, weiß, schwarz). Wenn Sie sie nach dem Zufallsprinzip ändern, erhalten Sie eine Strafe von * 1,2. Sie können sie beliebig ändern (beide Tasten und Tastendrücke sind OK).
Das Zeichnen mit der Maus zwischen Punkten oder Freihand wäre am besten (wie beim Malen) und ergibt einen Bonus von * 0,7, aber jede andere Methode ist in Ordnung: (Beispiel) Klicken Sie auf zwei Punkte und zeichnen Sie eine Linie zwischen diesen Punkten ?
Die Zeichenfläche muss 600x400 sein
Das Ändern der Farbe sollte nur die Farbe der Linien ändern, die in Zukunft gezeichnet werden.
Die Implementierung eines "Clear All" -Befehls ist nicht obligatorisch, aber wenn Sie dies implementieren, erhalten Sie einen Bonus von * 0,9 .
quelle
Antworten:
HTML + jQuery + CSS - 507 x (0,7 x 0,8 x 0,9) = 255,528
Nicht so kurz, wie ich es mir vorgestellt hatte, aber das Ergebnis gefällt mir.
Eigenschaften:
Live Demo: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 Bytes
CSS - 35 Bytes
jQuery - 388/446 Bytes
W3C-kompatible Browser (z. B. Chrome) - 388 Byte
Cross-Browser-Version (Korrekturen für Firefox, Safari, IE) - 446 Byte
Korrekturen:
event.offset[X|Y]
sind undefiniert.event.which
undevent.buttons
sind nicht sinnvoll definiertmousemove
.e.buttons
ausreichend gewesen wäre.quelle
id=
und vielleicht auch andere (haben nicht HTML in einer Weile getan)Verarbeitung - 93 · 0,9 = 83,7
Mit so gut wie keinem Aufwand für das Zeichnen, aber einer sehr ausführlichen Syntax, wird in der Verarbeitung wahrscheinlich die beste Punktzahl ohne nette Funktionen und nur einen Bonus erreicht:
Bewertung: 93 · 0,9 = 83,7 (Zeilenumbrüche dienen nur der Lesbarkeit und werden in der Punktzahl nicht berücksichtigt.)
Mit all den vorhandenen Boni macht es jedoch viel mehr Spaß:
Bewertung: 221 · 0,8 · 0,7 · 0,9 = 111,4
Es wird wie folgt verwendet:
Klicken und ziehen Sie die Maus, um eine gerade Linie zu zeichnen.
Ziehen Sie bei gedrückter Maustaste die Maus von der linken Seite des Fensters und lassen Sie die Maustaste los, um den Bildschirm zu löschen.
Wenn Sie eine beliebige Taste gedrückt halten, werden die roten, grünen und blauen Werte der Zeichenfarbe sowie die verschiedenen Strichstärken durchlaufen. Da die Zykluszeiten unterschiedlich sind, können praktisch alle Kombinationen erreicht werden (mit ein wenig Aufwand).
Bearbeiten:
Da das Freihandzeichnen auch den Bonus von 0,7 gibt, gibt es hier noch eine andere Lösung:
Bewertung: 188 · 0,8 · 0,7 · 0,9 = 94,8
Es wird wie folgt verwendet:
Klicken und ziehen Sie, um Freihandlinien zu zeichnen.
Halten Sie die Tabulatortaste gedrückt, um die Farbe und die Strichstärke zu ändern. Dies kann auch beim Zeichnen geschehen (siehe Bild).
Drücken Sie eine beliebige Taste außer der Tabulatortaste und dann die Tabulatortaste, um den Bildschirm zu löschen.
quelle
if(key>0)
ist kürzer alsif(keyPressed)
Python 2,7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Bearbeiten: Ich habe festgestellt, dass Pygame Linien mit variabler Breite zeichnen kann. Hier ist ein Update.
Ein Experiment zur Verwendung der PyGame-Module.
Ein einfaches Malprogramm, das Linien vom Ereignis MOUSEDOWN (Wert 5) zum Ereignis MOUSEUP (Wert 6) zeichnet. Es verwendet die Funktion pygame.gfxdraw.line (). Durch Drücken der TAB-Taste werden 8 Farben durchlaufen. Durch Drücken der BACKSPACE-Taste wird die Anzeige auf eine sorgfältig gestaltete papierweiße Farbe zurückgesetzt. Mit der EINGABETASTE wird die Pinselgröße um 0 bis 7 Pixel in der Breite verschoben.
Ich bin neu im Code-Golf, daher habe ich möglicherweise einige Methoden zum Reduzieren der Codegröße verpasst.
Beispielbild 1:
Beispielbild 2:
quelle
ms-paint.py
.C # 519 x 0,7 x 0,8 x 0,9 = 261,6 Mit der DrawLine-Methode.
Golf gespielt:
Lesbar:
Wenn Sie r , g oder b auf Ihrer Tastatur gedrückt halten, ändert sich die Farbe der nächsten Zeile, indem Sie ein Byte-Array am entsprechenden Index inkrementieren. Sie beginnt bei Überlauf wieder bei 0. Das gibt uns also viele Farben. Gleiches gilt für die Dicke der Linie, die durch Halten von t erhöht wird . Durch Drücken von c wird das Formular gelöscht.
quelle
Mathematica - 333 × 0,7 × 0,8 × 0,9 = 168
quelle
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
Um es zu benutzen:
Ein einfacher Test:
quelle
DarkBASIC Pro - 318 x 0,7 x 0,9 = 200,34
Das Interessanteste hier ist die Verwendung einer bitweisen Logik für den aktuellen Tastaturscancode, um die Farbe zu ändern. Ich verwende für jeden Kanal zwei verschiedene Bits aus dem Scancode - so ist fast jede 6-Bit-Farbe möglich.
Hier ist eine kompilierte EXE: Download
quelle
BBC BASIC - 141 keine Boni
Meine erste Programmiersprache und im Allgemeinen nie mehr von mir verwendet :)
quelle
Python 2.7 - 384 * .8 * .7 = 215.04
Mit allen Boni: 462 * .9 * .8 * .7 = 232.848
quelle