एक खराब पिक्सेल बनाएँ


40

आपका कार्य एक प्रोग्राम लिखना है जो आपकी स्क्रीन को एक खराब पिक्सेल दिखाता है।

आपको स्क्रीन पर ठीक एक पिक्सेल चुनना चाहिए, और लाल, हरे और नीले रंग के बीच एक चैनल होना चाहिए, और इसका मान या तो हमेशा 0 या हमेशा अधिकतम (आमतौर पर 255) करना चाहिए। अन्य चैनलों का मान वैसा ही होना चाहिए जैसे कि आपका प्रोग्राम नहीं चला।

आप पिक्सेल और चैनल को किसी भी तरीके से चुन सकते हैं, जैसे कि इसे हार्डकोड करना या प्रत्येक रन पर बेतरतीब ढंग से उत्पन्न करना। लेकिन यह हमेशा काफी आधुनिक हार्डवेयर पर दिखाई देना चाहिए।

यदि मूल रूप से उस पिक्सेल पर प्रदर्शित किया जाने वाला रंग बदल गया है, तो आपका प्रोग्राम 0.5 सेकंड से भी कम समय में अपडेट होना चाहिए जब सिस्टम काफी तेज हो।

आप वर्तमान में स्क्रीन पर प्रदर्शित की गई चीजों के बारे में धारणा नहीं बना सकते हैं (जैसे कि डिफ़ॉल्ट थीम का उपयोग करके टास्कबार)।

जब स्क्रीनसेवर, लॉगिन स्क्रीन, विंडो मैनेजर से प्रभाव, आदि सक्रिय होते हैं, तो आपके कार्यक्रम को काम करने की आवश्यकता नहीं होती है।

सबसे छोटा कोड जीतता है।


1
क्या हम एक विशिष्ट OS मान सकते हैं?
लवजो 16

@ लवोजो हां, आप कर सकते हैं।
jimmy23013 16

ओउ ... अन्य चैनलों को संरक्षित करने की आवश्यकता शायद मेरी पहले से ही हास्यास्पद बाइट गिनती को दोगुना कर देती है।
बॉब

जवाबों:


21

लिनक्स पर बैश - लैटिन -1 के 25 बाइट्स

+3 @wyldstallyns / -2 से उद्धरण / -1 हटाने से क्योंकि मैं भूल गया कि यह कैसे काम करता है / -9 @ डेनिस से

printf ÿ>/dev/fb0;exec $0

मानता है कि / dev / fb0 मौजूद है (यह मेरे आर्क लिनक्स सिस्टम पर है, और मुझे लगता है कि इसे किसी अन्य लिनक्स सिस्टम पर होना चाहिए)। रूट एक्सेस की भी आवश्यकता है। जब एक्स चल रहा है तो यह मेरे लिए काम नहीं करता है। मेरे सिस्टम पर, यह लगातार टॉप-लेफ्ट पिक्सेल का ब्लू चैनल फुल ( ÿ255) है।


आपको इको-एन की आवश्यकता है - अन्यथा यह गोल्फ के लिए हो सकता है: हाँ ff> / dev / fb0
wyldstallyns

@wyldstallyns हाँ, मैंने इसे उसी हिसाब से तय किया है। AFAIK, नईलाइन छापना एक से अधिक पिक्सेल को प्रभावित करेगा (चुनौती विवरण की अनुमति नहीं)
कृत्रिम

1
Ÿ 255 कैसे है? मुझे नहीं लगता कि यह काम करता है। 255 एक वैध यूनिकोड चरित्र नहीं है, यह या तो एससीआई नहीं है, इसलिए इसे उन प्राचीन कोडपेजों में से एक पर भरोसा करना चाहिए जिन्हें कभी भी उपयोग नहीं किया जाना चाहिए, क्योंकि वे मशीन से मशीन में भिन्न होते हैं।
ओरियन

1
printf ÿ>/dev/fb0;exec $0कुछ बाइट्स बचाता है।
डेनिस

3
@orion yesदृष्टिकोण काम नहीं करता है। /dev/fb0एक पिक्सेल चैनल लिखने के बाद फिर से खोलना होगा।
डेनिस

11

विजुअल C ++, 102 100 99 98 बाइट्स

#include<Windows.h>
int main(){for(HDC d=GetDC(0);;Sleep(99))SetPixel(d,9,9,GetPixel(d,9,9)|255);}

कंसोल सबसिस्टम को लक्षित करते हुए विजुअल C ++ कंपाइलर के साथ सीधे Win32 API का उपयोग करते हुए विंडोज पर चलता है। पिक्सेल के लाल चैनल को (9,9) पर सेट करने के लिए "स्क्रीन" डिवाइस के संदर्भ का उपयोग करता है 0xFF

नींद आवश्यक है कि अन्य कार्यक्रमों को गेट / सेट के बीच में खींचा जाए - और 9ms बहुत कम था, जिससे पिक्सेल अपने शुरुआती रंग पर 1 अटक गया।


1 दुर्भाग्य से, एक ही प्रकार के अटक पिक्सेल इस सवाल की तलाश में नहीं है ...


8

पवित्र, 13 बाइट्स

GrPlot(,9,9);

सीधे लगातार परत पर एक काला बिंदु डालता है।

परतें

यह किस तरह का दिखता है।

स्क्रीनशॉट


6

सी #, 247 244 371 366 354 352 बाइट्स

विंडोज पर चलता है। पूरे स्क्रीन के लिए एक उपकरण संदर्भ प्राप्त करता है, और बार-बार लाल चैनल को अधिकतम (9,9) पर लाता है।

namespace System.Runtime.InteropServices{using I=IntPtr;class P{[DllImport("User32")]static extern I GetDC(I h);[DllImport("Gdi32")]static extern int GetPixel(I h,int x,int y);[DllImport("Gdi32")]static extern int SetPixel(I h,int x,int y,int c);static void Main(){for(I d=GetDC((I)0);;Threading.Thread.Sleep(99))SetPixel(d,9,9,GetPixel(d,9,9)|255);}}}

मैं मूल रूप से आयात GetPixel/ करना नहीं चाहता था SetPixel, लेकिन किसी भी पिक्सेल को पढ़ने के लिए कोई आसान तरीका नहीं है Graphic। तो अभी यह प्रभावी रूप से मेरे VC ++ प्रयास के समान है । शायद बिटमैप के लिए बचत कम होगी ...


-5 बाइट्स @TuukkaX के लिए धन्यवाद


1
आप व्हाट्सएप को पैरामीटर सूची से हटा सकते हैं SetPixel
यति दिनांक

@TuukkaX धन्यवाद! उन याद किया।
बॉब

इसके 9msबजाय आप इसे सो सकते हैं99ms
रोब

2
@ रब मैंने कोशिश की, जैसा कि C ++ उत्तर में बताया गया है। दुर्भाग्य से, 9ms पर्याप्त नहीं थे जब मैंने परीक्षण किया (Win7)। अन्य कार्यक्रमों में पेंट करने का पर्याप्त समय नहीं था, इसलिए पिक्सेल प्रभावी रूप से अपने प्रारंभिक रंग पर अटक गया।
बॉब

0x1FFFFFFFनींद के बजाय एक व्यस्त लूप में पुनरावृत्तियों के माध्यम से चलकर भी इसे छोटा कर सकता है , लेकिन 0.5 के दायरे में रहने के लिए प्रत्येक मशीन के लिए इसे ट्यून करना होगा।
बॉब

3

स्माइलबासिक, 20 बाइट्स

SPSET.,299,99,1,1,33

लगातार अपडेट।
सेट प्रेत 0एक करने के लिए 1एक्स 1पर क्षेत्र 299, 99स्प्राइट शीट (जिसमें एक लाल पिक्सेल है) पर।
33प्रदर्शन विशेषता है, जो 1(+) पर प्रदर्शन 32(जोड़ने योग्य सम्मिश्रण) है।


1

जावा 7, 266 बाइट्स

import java.awt.*;public class K extends java.applet.Applet{public static void main(String[]a){new K();}Label l=new Label(".");public K(){add(l);}public void paint(Graphics g){s(Color.red);s(Color.green);s(Color.blue);repaint();}void s(Color c){l.setForeground(c);}}

मैंने इसे विंडोज 7 पर चलाया। जावा एप्लेट को खोलता है जिसकी डिफ़ॉल्ट रूप से एक सफेद पृष्ठभूमि है। एक अवधि के साथ एक लेबल जोड़ता है और फिर लेबल विज्ञापन nauseum का रंग बदलता है।


2
वास्तव में यकीन नहीं है कि यह वैध है क्योंकि यह एप्लेट विंडो में केवल पिक्सेल को बदलता है। यदि एप्लेट फोकस खो देता है तो पिक्सेल रंग नहीं बदलेगा ... यदि यह चुनौती के मानदंडों को पूरा नहीं करता है तो मैं इस उत्तर को हटा दूंगा।
प्रहार

0

Tcl / Tk, 61

wm at . -tr #F0F0F0
wm o . 1
grid [canvas .c]
.c cr o 9 9 9 9

छवि पर विवाल्डी आइकन के ऊपरी बाएँ कोने के पास एक काला पिक्सेल है: badpixel


यदि एक इंटरैक्टिव शेल पर, उपलब्ध कमांड के संक्षिप्त विवरण हैं:

Tcl / Tk, 57

wm at . -tr #F0F0F0
wm o . 1
gri [can .c]
.c cr o 9 9 9 9

Vivaldi आइकन के V सफेद क्षेत्र पर एक काला पिक्सेल है: badpixel

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.