Você acabou de convidar um especialista em artes liberais para sua casa e está dizendo a ele
"Sabe, eu sou um ótimo programador e posso fazer x e y e z ..."
Ele rapidamente fica entediado e pergunta:
"Se você é realmente um ótimo programador, pode criar um programa para me deixar desenhar, só preciso desenhar linhas na tela usando o mouse e selecionando cores diferentes de qualquer maneira".
Seu código pode importar bibliotecas padrão. Seu código pode exigir que as cores sejam selecionadas através do teclado.
Isso é código-golfe ; o código mais curto vence.
Tópicos
As linhas são desenhadas movendo o mouse enquanto pressiona o botão esquerdo.
O algoritmo de linha de Bresenham não é necessário; qualquer algoritmo embutido fará o truque
Se o usuário puder alterar a espessura da linha de qualquer forma, você receberá um bônus * 0,8, mas isso não é obrigatório.
Eu acho que deveria ser melhor implementar o desenho de linha, mas se você quiser, pode importar uma biblioteca para isso, basta dizer na descrição do código.
O mínimo é de 5 cores diferentes (vermelho, verde, azul, branco, preto). Se você os fizer mudar aleatoriamente, receberá uma penalidade de * 1,2. Você pode alterá-los da maneira que desejar (botões e pressionamentos de teclas estão OK).
Desenha-los pressionando o mouse entre os pontos ou a mão livre seria o melhor (ou seja, como você faz na pintura) e oferece um bônus de * 0,7, mas qualquer outro método é adequado: (exemplo) clique em dois pontos e desenhe uma linha entre esses pontos ?
A tela de desenho deve ter 600x400
Alterar a cor deve mudar a cor apenas das linhas que serão desenhadas no futuro.
A implementação de um comando "Limpar tudo" não é obrigatória, mas se você implementar, receberá um bônus * 0,9 .
fonte
Respostas:
HTML + jQuery + CSS - 507 x (0,7 x 0,8 x 0,9) = 255,528
Não tão curto quanto pensei que seria, mas gosto do resultado.
Recursos:
Demonstração ao vivo: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 bytes
CSS - 35 bytes
jQuery - 388/446 bytes
Navegadores compatíveis com W3C (por exemplo, Chrome) - 388 bytes
Versão entre navegadores (correções para Firefox, Safari, IE) - 446 bytes
Conserta:
event.offset[X|Y]
são indefinidos.event.which
eevent.buttons
não está definido de forma significativamousemove
.e.buttons
tenha sido suficiente.fonte
id=
e talvez outros também (não fiz html em quando)Processamento - 93 · 0,9 = 83,7
Com quase nenhuma sobrecarga para desenhar, mas uma sintaxe muito detalhada, em Processando, a melhor pontuação é provavelmente alcançada sem nenhum recurso interessante e apenas um bônus:
Pontuação: 93 · 0.9 = 83.7 (As novas linhas são apenas de legibilidade e não são contadas na pontuação.)
No entanto, é muito mais divertido com todos os bônus em vigor:
Pontuação: 221 · 0.8 · 0.7 · 0.9 = 111.4
É usado assim:
Clique e arraste o mouse para desenhar uma linha reta.
Enquanto clicado, arraste o mouse para o lado esquerdo da janela e solte o botão do mouse para limpar a tela.
Manter qualquer tecla pressionada percorrerá os valores vermelho, verde e azul da cor do desenho e diferentes espessuras de traçado. Como os períodos de ciclismo são diferentes, praticamente todas as combinações podem ser alcançadas (com um pouco de tentativa).
Editar:
Como o desenho à mão livre oferece o bônus de 0,7 também, aqui está outra solução:
Pontuação: 188 · 0.8 · 0.7 · 0.9 = 94.8
É usado assim:
Clique e arraste para desenhar linhas à mão livre.
Mantenha pressionada a tecla Tab para alterar a cor e a espessura do traçado. Isso também pode ser feito durante o desenho (veja a figura).
Pressione qualquer tecla, exceto a guia e, em seguida, guia para limpar a tela.
fonte
if(key>0)
é mais curto queif(keyPressed)
Python 2.7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Edit: eu descobri pygame pode desenhar linhas com largura variável, então aqui está uma atualização.
Um experimento no uso dos módulos PyGame.
Um programa de pintura simples que desenha linhas do evento MOUSEDOWN (valor 5) para o evento MOUSEUP (valor 6). Ele usa a função pygame.gfxdraw.line (). Pressionar a tecla TAB alterna entre 8 cores. Pressionar a tecla BACKSPACE limpa a tela para uma cor branca de papel cuidadosamente criada. A tecla ENTER alternará o tamanho do pincel de 0 a 7 pixels de largura.
Eu sou novo no code-golf, por isso posso ter perdido alguns métodos para reduzir o tamanho do código.
Imagem 1 da amostra:
Imagem 2 da amostra:
fonte
ms-paint.py
.C # 519 x 0,7 x 0,8 x 0,9 = 261,6 Usando o método DrawLine.
Golfe:
Legível:
Mantendo r , g ou b sobre o seu teclado que muda a cor da linha seguinte, incrementando um sbyte-matriz no índice correspondente. Ele começará em 0 novamente quando estiver transbordando. Então, isso nos dá muitas cores. O mesmo vale para a espessura da linha que é aumentada mantendo t . Pressionar c limpa o formulário.
fonte
Mathematica - 333 x 0,7 x 0,8 x 0,9 = 168
fonte
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 usá-lo:
Um teste simples:
fonte
DarkBASIC Pro - 318 x 0,7 x 0,9 = 200,34
A coisa mais interessante aqui é usar alguma lógica bit a bit no scancode atual do teclado para mudar a cor. Eu uso dois bits diferentes do scancode para cada canal - para que quase todas as cores de 6 bits sejam possíveis.
Aqui está um EXE compilado: Download
fonte
BBC BASIC - 141 sem bônus
Minha primeira linguagem de programação e geralmente nunca mais é usada por mim :)
fonte
Python 2.7 - 384 * .8 * .7 = 215.04
Com todos os bônus: 462 * .9 * .8 * .7 = 232.848
fonte