Właśnie zaprosiłeś do swojego domu na wydział sztuk wyzwolonych i mówisz mu / jej
„Wiesz, jestem świetnym programistą i mogę robić x i yiz…”
Szybko się nudzi i pyta:
„Jeśli naprawdę jesteś świetnym programistą, czy możesz stworzyć program, który pozwala mi rysować, wystarczy narysować linie na ekranie za pomocą myszy i w dowolny sposób wybierać różne kolory”.
Twój kod może importować standardowe biblioteki. Twój kod może wymagać wybrania kolorów za pomocą klawiatury.
To jest golf golfowy ; najkrótszy kod wygrywa.
Punktory
Linie rysuje się, przesuwając myszą, jednocześnie naciskając lewy przycisk.
Algorytm liniowy Bresenhama nie jest konieczny, wystarczy dowolny wbudowany algorytm
Jeśli użytkownik może w jakikolwiek sposób zmienić grubość linii, otrzymasz premię * 0,8, ale nie jest to obowiązkowe.
Myślę, że lepiej byłoby sami zaimplementować rysowanie linii, ale jeśli chcesz, możesz zaimportować bibliotekę, po prostu powiedz to w opisie kodu.
Minimum to 5 różnych kolorów (czerwony, zielony, niebieski, biały, czarny). Jeśli zmienisz je losowo, otrzymasz karę w wysokości * 1,2. Możesz je zmienić w dowolny sposób (oba przyciski i naciśnięcia klawiszy są w porządku).
Narysowanie ich naciśnięciem myszy pomiędzy punktami lub wolną ręką byłoby najlepsze (tj. Jak w malowaniu) i daje premię w wysokości * 0,7, ale każda inna metoda jest w porządku: (przykład) kliknij dwa punkty i narysuj linię między tymi punktami ?
Kanwa rysunku musi mieć wymiary 600 x 400
Zmiana koloru powinna zmienić tylko kolor linii, które zostaną narysowane w przyszłości.
Wdrożenie polecenia „Wyczyść wszystko” nie jest obowiązkowe, ale jeśli je wdrożysz, otrzymasz premię * 0,9 .
źródło
Odpowiedzi:
HTML + jQuery + CSS - 507 x (0,7 x 0,8 x 0,9) = 255,528
Nie tak krótki, jak się spodziewałem, ale podoba mi się wynik.
Cechy:
Prezentacja na żywo: http://jsfiddle.net/onsLkh8y/9/
HTML - 84 bajty
CSS - 35 bajtów
jQuery - 388/446 bajtów
Przeglądarki zgodne z W3C (np. Chrome) - 388 bajtów
Wersja Cross-Browser (poprawki dla Firefox, Safari, IE) - 446 bajtów
Poprawki:
event.offset[X|Y]
są niezdefiniowane.event.which
ievent.buttons
nie są one wyraźnie zdefiniowane wmousemove
.e.buttons
byłoby wystarczające.źródło
id=
a może i innych (odPrzetwarzanie - 93 · 0,9 = 83,7
Bez prawie narzutów na rysowanie, ale bardzo szczegółowa składnia, w przetwarzaniu najlepszy wynik prawdopodobnie osiągnięto bez żadnych fajnych funkcji i tylko jednej premii:
Wynik: 93 · 0,9 = 83,7 (znaki nowej linii służą wyłącznie do odczytu i nie są uwzględniane w wyniku).
Jednak dzięki wszystkim bonusom jest dużo więcej zabawy:
Wynik: 221 · 0,8 · 0,7 · 0,9 = 111,4
Używa się go w następujący sposób:
Kliknij i przeciągnij myszą, aby narysować linię prostą.
Po kliknięciu przeciągnij mysz poza lewą stronę okna i zwolnij przycisk myszy, aby wyczyścić ekran.
Przytrzymanie dowolnego klawisza spowoduje cykliczne przechodzenie między wartościami koloru czerwonego, zielonego i niebieskiego koloru rysunku oraz różnymi grubościami obrysu. Ponieważ okresy jazdy są różne, praktycznie można uzyskać wszystkie kombinacje (przy odrobinie wysiłku).
Edytować:
Ponieważ losowanie daje również bonus 0,7, oto jeszcze jedno rozwiązanie:
Wynik: 188 · 0,8 · 0,7 · 0,9 = 94,8
Używa się go w następujący sposób:
Kliknij i przeciągnij, aby narysować linie odręczne.
Przytrzymaj klawisz Tab, aby zmienić kolor i grubość obrysu. Można to również zrobić podczas rysowania (patrz obrazek).
Naciśnij dowolny klawisz oprócz tab, a następnie tab, aby wyczyścić ekran.
źródło
if(key>0)
jest krótszy niżif(keyPressed)
Python 2,7 -
339197324 * (0,7 * 0,8 * 0,9) = 163Edycja: Odkryłem, że pygame może rysować linie o zmiennej szerokości, więc oto aktualizacja.
Eksperyment z wykorzystaniem modułów PyGame.
Prosty program do malowania, który rysuje linie od zdarzenia MOUSEDOWN (wartość 5) do zdarzenia MOUSEUP (wartość 6). Wykorzystuje funkcję pygame.gfxdraw.line (). Naciśnięcie klawisza TAB powoduje przełączanie między 8 kolorami. Naciśnięcie klawisza BACKSPACE spowoduje wyczyszczenie wyświetlacza na starannie wykonany biały papier. Klawisz ENTER powoduje zmianę rozmiaru pędzla o szerokości 0–7 pikseli.
Jestem nowym golfistą, więc mogłem przegapić pewne metody zmniejszania rozmiaru kodu.
Przykładowe zdjęcie 1:
Przykładowe zdjęcie 2:
źródło
ms-paint.py
.C # 519 x 0,7 x 0,8 x 0,9 = 261,6 Przy użyciu metody DrawLine.
Gra w golfa:
Czytelny:
Przytrzymując r , g lub b na klawiaturze, zmienia kolor następnego wiersza, zwiększając tablicę sbyte przy odpowiednim indeksie. Zacznie się od 0 po przepełnieniu. To daje nam mnóstwo kolorów. To samo dotyczy grubości linii, która jest zwiększana przez przytrzymanie t . Naciśnięcie c usuwa formularz.
źródło
Matematyka - 333 x 0,7 x 0,8 x 0,9 = 168
źródło
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
Aby go użyć:
Prosty test:
źródło
DarkBASIC Pro - 318 x 0,7 x 0,9 = 200,34
Najciekawszą rzeczą jest tutaj użycie bitowej logiki na bieżącym skancodzie klawiatury do zmiany koloru. Używam dwóch różnych bitów ze scancode dla każdego kanału - więc możliwy jest prawie każdy 6-bitowy kolor.
Oto skompilowany plik EXE: Pobierz
źródło
BBC BASIC - 141 brak bonusów
Mój pierwszy język programowania i na ogół już przeze mnie używany :)
źródło
Python 2.7 - 384 * .8 * .7 = 215,04
Wszystkie bonusy: 462 * .9 * .8 * .7 = 232,848
źródło