Acaba de invitar a un estudiante de artes liberales a su casa y le está diciendo
"Sabes, soy un gran programador y puedo hacer x e y y z ..."
Él / ella rápidamente se aburre y te pregunta:
"Si realmente eres un gran programador, ¿puedes hacer un programa que me permita dibujar? Solo necesito dibujar líneas en la pantalla usando el mouse y seleccionando diferentes colores de cualquier manera".
Su código puede importar bibliotecas estándar. Su código puede requerir que los colores se seleccionen a través del teclado.
Este es el código de golf ; el código más corto gana.
Viñetas
Las líneas se dibujan moviendo el mouse mientras presiona el botón izquierdo.
El Algoritmo de línea de Bresenham no es necesario, cualquier algoritmo incorporado hará el truco
Si el usuario puede cambiar el grosor de la línea de cualquier manera, obtienes un bono * 0.8 pero no es obligatorio.
Supongo que debería ser mejor implementar el dibujo lineal nosotros mismos, pero si lo desea, puede importar una biblioteca para eso solo dígalo en la descripción del código.
El mínimo es de 5 colores diferentes (rojo, verde, azul, blanco, negro). Si haces que cambien al azar, obtienes una penalización de * 1.2. Puede cambiarlos de la forma que desee (tanto los botones como las pulsaciones de teclas están bien).
Dibujarlos presionando el mouse entre los puntos o a mano alzada sería lo mejor (es decir, como lo hace en la pintura) y le da una bonificación de * 0.7, pero cualquier otro método está bien: (ejemplo) haga clic en dos puntos y dibuje una línea entre esos puntos ?
El lienzo de dibujo debe ser 600x400.
Cambiar el color debería cambiar el color solo de las líneas que se dibujarán en el futuro.
Implementar un comando "Borrar todo" no es obligatorio, pero si lo implementa obtendrá * 0.9 de bonificación.
fuente
Respuestas:
HTML + jQuery + CSS - 507 x (0.7 x 0.8 x 0.9) = 255.528
No tan corto como pensé que sería, pero me gusta el resultado.
caracteristicas:
Demostración en vivo: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 bytes
CSS - 35 bytes
jQuery - 388/446 bytes
Navegadores compatibles con W3C (por ejemplo, Chrome) - 388 bytes
Versión de navegador cruzado (correcciones para Firefox, Safari, IE) - 446 bytes
Arreglos:
event.offset[X|Y]
no están definidos.event.which
yevent.buttons
no están definidos de manera significativamousemove
.e.buttons
hubiera sido suficiente.fuente
id=
y quizás otras también (no he hecho html en mucho tiempo)Procesamiento - 93 · 0.9 = 83.7
Con casi nada de gastos generales para dibujar, pero una sintaxis muy detallada, en Procesamiento, la mejor puntuación probablemente se alcanza sin ninguna característica agradable y solo una bonificación:
Puntuación: 93 · 0.9 = 83.7 (Las líneas nuevas son solo para legibilidad y no se cuentan en la puntuación).
Sin embargo, es mucho más divertido con todas las bonificaciones en su lugar:
Puntuación: 221 · 0.8 · 0.7 · 0.9 = 111.4
Se usa así:
Haga clic y arrastre el mouse para dibujar una línea recta.
Mientras hace clic, arrastre el mouse del lado izquierdo de la ventana y suelte el botón del mouse para borrar la pantalla.
Si mantiene presionada cualquier tecla, pasará por los valores rojo, verde y azul del color del dibujo y a través de diferentes grosores de trazo. Dado que los períodos de ciclismo son diferentes, se pueden alcanzar prácticamente todas las combinaciones (con un poco de esfuerzo).
Editar:
Dado que el dibujo a mano alzada también proporciona la bonificación 0.7, aquí hay otra solución:
Puntuación: 188 · 0.8 · 0.7 · 0.9 = 94.8
Se usa así:
Haga clic y arrastre para dibujar líneas a mano alzada.
Mantenga presionada la tecla de tabulación para cambiar el color y el grosor del trazo. Esto también se puede hacer durante el dibujo (ver imagen).
Presione cualquier tecla que no sea la pestaña y luego la pestaña para borrar la pantalla.
fuente
if(key>0)
es más corto queif(keyPressed)
Python 2.7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Editar: descubrí que pygame puede dibujar líneas con ancho variable, así que aquí hay una actualización.
Un experimento en el uso de los módulos PyGame.
Un programa de pintura simple que dibuja líneas desde el evento MOUSEDOWN (valor 5) hasta el evento MOUSEUP (valor 6). Utiliza la función pygame.gfxdraw.line (). Al presionar la tecla TAB se recorrerán 8 colores. Al presionar la tecla RETROCESO se borrará la pantalla a un color blanco de papel cuidadosamente diseñado. La tecla ENTER alternará el tamaño del pincel a través de 0-7 píxeles de ancho.
Soy nuevo en code-golf, por lo que es posible que haya perdido algunos métodos para reducir el tamaño del código.
Imagen de muestra 1:
Imagen de muestra 2:
fuente
ms-paint.py
.C # 519 x 0.7 x 0.8 x 0.9 = 261.6 Usando el método DrawLine.
Golfizado:
Legible:
Al mantener presionado r , g o b en su teclado, cambia el color de la siguiente línea al incrementar una matriz de sbytes en el índice correspondiente. Comenzará en 0 nuevamente cuando se desborde. Entonces esto nos da muchos colores. Lo mismo ocurre con el grosor de la línea que aumenta al mantener t . Al presionar c se borra el formulario.
fuente
Mathematica - 333 x 0.7 x 0.8 x 0.9 = 168
fuente
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
Para usarlo:
Una prueba simple:
fuente
DarkBASIC Pro - 318 x 0.7 x 0.9 = 200.34
Lo más interesante aquí es usar algo de lógica bit a bit en el código de escaneo actual del teclado para cambiar el color. Utilizo dos bits diferentes del código de escaneo para cada canal, por lo que es posible casi cualquier color de 6 bits.
Aquí hay un EXE compilado: Descargar
fuente
BBC BASIC - 141 sin bonificaciones
Mi primer lenguaje de programación y, en general, nunca más lo uso :)
fuente
Python 2.7 - 384 * .8 * .7 = 215.04
Con todos los bonos: 462 * .9 * .8 * .7 = 232.848
fuente