Twoim zadaniem jest napisanie programu, który sprawi, że twój ekran będzie miał zły piksel.
Powinieneś wybrać dokładnie jeden piksel na ekranie i dokładnie jeden kanał między czerwonym, zielonym i niebieskim, a jego wartość powinna zawsze wynosić 0 lub zawsze maksymalnie (zwykle 255). Wartości innych kanałów powinny być takie same, jak gdyby Twój program się nie uruchomił.
Możesz wybrać piksel i kanał na dowolne sposoby, na przykład zakodować go na stałe lub wygenerować losowo przy każdym uruchomieniu. Ale zawsze musi być widoczny na dość nowoczesnym oprogramowaniu sprzętowym.
Jeśli kolor, który pierwotnie powinien być wyświetlany na tym pikselu, zmienił się, twój program powinien zaktualizować się w mniej niż 0,5 sekundy, gdy system jest wystarczająco szybki.
Nie można zakładać, co jest aktualnie wyświetlane na ekranie (np. Pasek zadań z domyślnym motywem).
Twój program nie musi działać, gdy aktywny jest wygaszacz ekranu, ekran logowania, efekt z menedżera okien itp.
Najkrótszy kod wygrywa.
źródło
Odpowiedzi:
Bash w systemie Linux - 25 bajtów Latin-1
+3 z @wyldstallyns / -2 od usuwania cudzysłowów / -1, ponieważ zapomniałem, jak to działa / -9 z @Dennis
Zakłada się, że / dev / fb0 istnieje (działa na moim systemie Arch Linux i myślę, że powinien na każdym innym systemie Linux). Wymaga również dostępu do roota. To nie działa dla mnie, gdy X jest uruchomiony. W moim systemie to po prostu ustawia niebieski kanał lewego górnego piksela na pełny (
ÿ
to 255).źródło
printf ÿ>/dev/fb0;exec $0
oszczędza kilka bajtów.yes
Podejście nie działa./dev/fb0
należy ponownie otworzyć po zapisaniu jednego kanału pikseli.Visual C ++,
1021009998 bajtówDziała w systemie Windows, bezpośrednio przy użyciu Win32 API z kompilatorem Visual C ++ ukierunkowanym na podsystem konsoli. Używa kontekstu urządzenia „ekranowego” , aby ustawić czerwony kanał piksela na (9,9) na
0xFF
.Uśpienie jest konieczne, aby umożliwić innym programom rysowanie pomiędzy get / set - a 9ms było zbyt krótkie, co spowodowało, że piksel utknął 1 w początkowym kolorze.
1 Niestety nie do końca ten sam typ zablokowanego piksela, którego szuka to pytanie ...
źródło
HolyC, 13 bajtów
Bezpośrednio umieszcza czarną kropkę na trwałej warstwie.
Jak to wygląda.
źródło
C #,
247244371366354352 bajtówDziała w systemie Windows. Pobiera kontekst urządzenia dla całego ekranu i wielokrotnie maksymalizuje czerwony kanał przy (9,9).
Początkowo nie chciałem importować
GetPixel
/SetPixel
, ale nie ma szczególnie łatwego sposobu na odczytanie jednego piksela zGraphic
. Więc teraz jest to faktycznie to samo, co moja próba VC ++ . Może zapisywanie do bitmapy będzie krótsze ...-5 bajtów dzięki @TuukkaX
źródło
SetPixel
.9ms
zamiast99ms
0x1FFFFFFF
iteracji w zajętej pętli zamiast w trybie uśpienia, ale to musiałoby być dostrojone, aby każda maszyna pozostała w granicach 0,5 s.SmileBASIC, 20 bajtów
Aktualizacje stale.
Ustawia duszka
0
na obszar1
x1
w299
,99
na arkuszu duszka (który jest czerwonym pikselem).33
to atrybut display, który wynosi1
(display on) +32
(mieszanie addytywne).źródło
Java 7, 266 bajtów
Uruchomiłem to w systemie Windows 7. Otwiera aplet Java, który domyślnie ma białe tło. Dodaje etykietę z kropką, a następnie zmienia kolor etykiety na muzeum.
źródło
Tcl / Tk, 61
Na obrazie znajduje się czarny piksel w lewym górnym rogu ikony Vivaldi:
W interaktywnej powłoce dostępne są skróty poleceń:
Tcl / Tk, 57
Na białym obszarze V ikony Vivaldi znajduje się czarny piksel:
źródło