क्विक्सल्स - क्वांटम पिक्सेल


35

परिचय

एक क्विक्सल एक क्वांटम पिक्सेल है। शास्त्रीय पिक्सेल के समान, इसे 3 पूर्णांक मान (लाल, हरा, नीला) के साथ दर्शाया गया है। हालांकि, क्विक्सल्स एक संयोजन के बजाय इन 3 राज्यों की एक सुपर स्थिति में हैं। यह सुपर पोजिशन केवल तब तक रहती है जब तक कि क्विकेल का अवलोकन नहीं किया जाता है कि यह किस बिंदु पर तीन शास्त्रीय पिक्सल्स में से एक तक गिर जाता है; RGB(255,0,0), RGB(0,255,0)और RGB(0,0,255)

विशिष्टता

  • प्रतिनिधित्व
    • प्रत्येक quixel 0 और 255 के बीच 3 पूर्णांकों की एक सरणी के रूप में प्रस्तुत किया जाता है r, gऔर bक्रमशः।
  • सुपर पोजिशन
    • प्रत्येक क्विक्सल रेड, ब्लू और ग्रीन राज्यों के बीच एक सुपर स्थिति में है R, Gऔर Bक्रमशः प्रतिनिधित्व करता है ।
  • अवलोकन
    • जब प्रत्येक क्विक्सल मनाया जाता है, तो यह तीन राज्यों में से एक में ढह जाता है। प्रत्येक शास्त्रीय राज्य की संभावना है R = (r + 1) / (r + g + b +3), G = (g + 1) / (r + g + b + 3) और B = (b + 1) / (r + g + b + 3)। इस तरह प्रत्येक शास्त्रीय स्थिति हमेशा दिखाने की गैर-शून्य संभावना के रूप में होती है।
  • इनपुट
    • फ़ंक्शन या प्रोग्राम को क्विक्सल्स की छवि लेनी चाहिए। यह कैसे करता है यह लचीला है। एक फ़ाइलनाम, एक बहु-आयामी सरणी का उपयोग करते हुए, आदि सभी स्वीकार्य हैं।
  • उत्पादन
    • फ़ंक्शन या प्रोग्राम को शास्त्रीय पिक्सेल की छवि का उत्पादन करना चाहिए। इस उत्पादित छवि के लिए डेटा संरचना भी लचीली है। ध्यान दें कि पिक्सल के सभी इन तीन में से एक होना चाहिए: RGB(255,0,0), RGB(0,255,0)औरRGB(0,0,255)
    • उत्पादन निर्धारक नहीं होना चाहिए ; ये क्वांटम पिक्सेल हैं! एक ही इनपुट का परिणाम अलग-अलग आउटपुट में होना चाहिए।
    • यदि आपकी भाषा में यादृच्छिक संख्या उत्पन्न करने का कोई तरीका नहीं है, तो आप इनपुट के रूप में यादृच्छिक बाइट्स ले सकते हैं
  • स्कोरिंग

इमेजिस

लियोनार्डो दा विंची द्वारा मोना लिसा मोना लीसा

विन्सेन्ट वान गाग द्वारा तारों वाली रात यहाँ छवि विवरण दर्ज करें

सल्वाडोर डाली द्वारा स्मृति की दृढ़ता यहाँ छवि विवरण दर्ज करें

टेडी रूजवेल्ट वी.एस. SharpWriter द्वारा बिगफुट यहाँ छवि विवरण दर्ज करें


क्या छवि फ़ाइल नाम / URL एक इनपुट तर्क हो सकता है?
लुइस मेंडो

2
मोना लिसा की जेपीईजी छवि आउटपुट छवियों पर 16x16 प्रमुख दृश्य कलाकृतियों का कारण बन रही है।
wizzwizz4

1
@ wizzwizz4 वास्तव में यह नहीं है। यह छोटा पूर्वावलोकन है जिसमें कलाकृतियाँ हैं। इसे पूर्ण आकार में देखने के लिए किसी चित्र पर क्लिक करें। मुझे संदेह है कि यह केवल उस छवि की विशेष चौड़ाई है जो प्रभाव देती है।
एडम

2
आप बेहतर (दृश्य) परिणाम प्राप्त करेंगे यदि आपका क्वांटम स्थान था RGBK, जहां K=255*3-R-G-B, तो अपने क्वांटम पिक्सल को 4. में से किसी एक को बनाएं (यदि K चयनित है, तो प्रदर्शन (0,0,0)) अपने RGB समीकरणों को बढ़ाएं। स्पष्ट तरीका, 3s को बदलकर, K जोड़ने पर जब आप R + G + B, आदि जोड़ेंगे)। ऐसा करने के बाद एक धब्बा मूल की एक सुंदर सभ्य शोर कॉपी को फिर से बनाना चाहिए। (K का अर्थ ब्लैक या की है, यदि आपने सोचा हो तो)
यक

2
@TLW यदि आपकी भाषा में यादृच्छिक संख्या उत्पन्न करने का कोई तरीका नहीं है, तो आप यादृच्छिक बाइट्स को इनपुट के रूप में ले सकते हैं
NonlinearFruit

जवाबों:


13

दिल्लोग एपीएल , 23 21 19 बाइट्स

की तालिका (R, G, B) को ले जाता है।

मीलों के एल्गोरिथ्म से प्रेरित है

सूचकांकों की तालिका {(255, 0, 0), (0, 255, 0), (0, 0, 255)} में लौटाती है। बुरी तरह बर्बाद।

(?∘≢⊃⊢)¨(⊂⍳3)/¨⍨1+⊢

(
?∘≢यादृच्छिक सूचकांक प्रत्येक में से
चयन करता है

(
प्रत्येक में से
⍳3पहले पूरे तीन सूचकांकों को
)/¨⍨दोहराया गया

1+⊢ बढ़े हुए ट्रिपल

TryAPL!


पुराना संस्करण

0-आधारित सूचकांकों की तालिका {(255, 0, 0), (0, 255, 0), (0, 0, 255) में लौटाता है}

{+/(?0)≥+\(1+⍵)÷3++/⍵}¨

{... }¨ तालिका में प्रत्येक क्विक्सल के लिए:

+/ का योग (अर्थात सत्य की गणना)

(?0)≥ एक यादृच्छिक 0 <संख्या <1 से अधिक या उसके बराबर होना

+\ की संचयी राशि

(1+⍵)÷ वेतन वृद्धि RGB मूल्यों से विभाजित है

3+ तीन प्लस

+/⍵ क्विक्ल का योग

नोट: Dyalog एपीएल आपके द्वारा चुने गए की सुविधा देता है के बीच congruential जनरेटर रैखिक लेह्मर , Mersenne ट्विस्टर , और ऑपरेटिंग सिस्टम के RNG ¹ ²

उदाहरण के लिए, छवि:

┌──────────┬──────────┬───────────┬───────────┬─────────┐
52 241 198148 111 45197 165 1809 137 120  46 62 75 
├──────────┼──────────┼───────────┼───────────┼─────────┤
81 218 1040 0 255   0 255 0    181 202 116122 89 76
├──────────┼──────────┼───────────┼───────────┼─────────┤
181 61 34 84 7 27   233 220 24939 184 160 255 0 0  
└──────────┴──────────┴───────────┴───────────┴─────────┘

दे सकते हैं

┌─┬─┬─┬─┬─┐
10221
├─┼─┼─┼─┼─┤
22112
├─┼─┼─┼─┼─┤
02120
└─┴─┴─┴─┴─┘

ध्यान दें कि तीन "शुद्ध" क्विक्सेल कैसे अपने-अपने रंग में ढल गए।

TryAPL ऑनलाइन!

ढह गई मोना लिसा


8

मैथेमेटिका, 53 बाइट्स

RandomChoice[255#+1->IdentityMatrix@3]&~ImageApply~#&

अनाम फ़ंक्शन। एक गणितज्ञ Imageको इनपुट के रूप में लेता है और Imageआउटपुट के रूप में लौटाता है । ध्यान दें कि इनपुट छवि में RGB रंग का स्थान होना चाहिए।


यह कैसे काम करता है?
GreenAsJade

2
@GreenAsJade <...>~ImageApply~#छवि में सभी पिक्सल से अधिक एक समारोह लागू होती है और RandomChoice[255#+1->IdentityMatrix@3]3 × 3 पहचान मैट्रिक्स की एक पंक्ति का उत्पादन करने के लिए कुछ भारित RNG का उपयोग करता है (यानी {1, 0, 0}, {0, 1, 0}या {0, 0, 1}) लाल, हरे, या नीले रंग के लिए जो मेल खाती है।
लीजनमोनमाल 978

5

सी #, 366 243 बाइट्स

यह गोल्फिंग के लिए @TheLethalCoder के लिए बहुत धन्यवाद!

var r=new Random();c=>{double t=c.R+c.G+c.B+3,x=(c.R+1)/t,d=r.NextDouble();return d<=x?Color.Red:d<=x+(c.G+1)/t?Color.Lime:Color.Blue;};b=>{fo‌​r(int x=0,y;x<b.Width;x++)for(y=0;y<b.Height;y++)b.SetPixel(x,y,g(‌​b.GetPixel(x,y)));re‌​turn b;};

मूल विचार:

using System;
using System.Drawing;
static Random r = new Random();

static Image f(Bitmap a) {
    for (int x = 0; x < a.Width; x++) {
        for (int y = 0; y < a.Height; y++) {
            a.SetPixel(x, y, g(a.GetPixel(x, y)));
        }
    }
    return a;
}

static Color g(Color c) {
    int a = c.R;
    int g = c.G;
    double t = a + g + c.B + 3;
    var x = (a + 1) / t;
    var y = x + (g + 1) / t;
    var d = r.NextDouble();
    return d <= x ? Color.Red : d <= y ? Color.Lime : Color.Blue;
}

उदाहरण:

मोना लीसा

यहाँ छवि विवरण दर्ज करें

तारों भरी रात

यहाँ छवि विवरण दर्ज करें

पेरसिसटन्स ऑफ मेमोरी

यहाँ छवि विवरण दर्ज करें

टेडी रूजवेल्ट वी.एस. बडा पॉव

यहाँ छवि विवरण दर्ज करें

यहां कुछ और उदाहरणों के साथ एक अपडेटेड इमगुर एल्बम दिखाया गया है, यह दिखाने के लिए कि यह नॉन्डेटेरिमिनिस्टिक है।


6
रंग.टाइम शुद्ध हरा रंग है। भविष्य के संदर्भ के लिए, यहां ज्ञात रंग तालिका है
दूध

1
237 बाइट्स के लिए एक गोल्फ का संस्करण: var r=new Random();c=>{double t=c.R+c.G+c.B+3,x=(c.R+1)/t,d=r.NextDouble();return d<=x?Color.Red:d<=x+(c.G+1)/t?Color.Lime:Color.Blue;};b=>{for(int x=0,y;x<b.Width;x++)for(y=0;y<b.Height;y++)b.SetPixel(x,y,g(b.GetPixel(x,y)));return b;};और इसमें अभी भी सुधार किए जा सकते हैं
TheLethalCoder

इसके वास्तव में 237 बाइट्स अतिरिक्त बाइट्स अदृश्य अक्षर हैं जो कोड टिप्पणी में जोड़े गए हैं जो मुझे विश्वास है
TheLethalCoder

4

पायथन 2, 172 166 162 बाइट्स

दूसरा और तीसरा इंडेंट स्तर क्रमशः एक कच्चा टैब और एक कच्चा टैब प्लस स्पेस है; यह मार्कडाउन के साथ वास्तव में बुरी तरह से खेलता है , इसलिए टैब को दो स्थानों से बदल दिया गया है।

from random import*
i=input()
E=enumerate
for a,y in E(i):
 for b,x in E(y):
  t=sum(x)+3.;n=random()
  for j,u in E(x):
   n-=-~u/t
   if n<0:i[a][b]=j;break
print i

Adám के APL उत्तर के समान इनपुट / आउटपुट प्रारूप का उपयोग करता है । इनपुट RGB टुपल्स का 2 डी सरणी है; उत्पादन का एक 2 डी सरणी है 0, 1या 2, क्रमशः, लाल, हरे और नीले रंग का प्रतिनिधित्व। उदाहरण के लिए:

$ echo "[[(181,61,34),(39,184,160),(255,0,0)],[(84,7,27),(123,97,5),(12,24,88)]]" | python quixel.py
[[2, 2, 0], [0, 0, 0]]

नीचे PIL का उपयोग करके मेरा पुराना पायथन 3 उत्तर है।

पायथन 3 + पीआईएल, 271 250 245 243 बाइट्स

import random as a,PIL.Image as q
i=q.open(input())
w,h=i.size
for k in range(w*h):
 m=k//h,k%h;c=i.getpixel(m);t=sum(c)+3;n=a.random()
 for j,u in enumerate(c):
  n-=-~u/t
  if n<0:z=[0]*3;z[j]=255;i.putpixel(m,tuple(z));break
i.save('o.png')

हर पिक्सेल पर Iterates और उस पर क्विक्सल फ़ंक्शन लागू करता है। इनपुट के रूप में फ़ाइल नाम लेता है और अपने आउटपुट को इसमें सहेजता है o.png

यहाँ कुछ परिणाम हैं:

$ echo mona-lisa.jpg | python quixel.py

मोना लिसा, quixelized

$ echo starry-night.jpg | python quixel.py

तारों से रात, quixelized

$ echo persistence-of-memory.jpg | python quixel.py

स्मृति की दृढ़ता, quixelized

$ echo roosevelt-vs-bigfoot.jpg | python quixel.py

टेडी रूजवेल्ट बनाम बिगफुट, क्विज़ेलिज़्ड


@ डोडी संभवतः क्योंकि यह एक PRNG है और क्रिप्टोग्राफिक रूप से सुरक्षित RNG नहीं है।
someonewithpc

@someonewithpc ओह वास्तव में, मैंने अपने फोन पर देखते समय उस प्रश्न को लिखा था, जहां अंतिम छवि में उस पर एक नियमित ग्रिड जैसा पैटर्न होता है, लेकिन अब, कंप्यूटर पर देखते हुए, यह इस प्रभाव के साथ पहली छवि है।
डोडी

@ डोडी ओह, हाँ! अपने फोन पर छवि को दबाने की कोशिश करें: प्रभाव टॉगल करेगा! मुझे लगता है कि यह छवि के नमूने के बारे में है ...
someonewithpc

@ डोडी शायद आपके पहले प्रश्न को हटा दें, इसलिए हमें नहीं लगता कि आप घने झंडे वाली लाल पट्टियों के बारे में पूछ रहे हैं ...
GreenAsJade

4

आर, 58 बाइट्स

mapply(function(r,g,b)rmultinom(1,1,c(r+1,g+1,b+1)),r,g,b)

इनपुट तीन सांख्यिक में आयोजित वैक्टर के होते हैं r, gऔर bक्रमशः।

हमें एक को योग करने की संभावनाओं को सामान्य करने की आवश्यकता नहीं है, जो स्वचालित रूप से होता है rmultinom

आउटपुट फॉर्म का है

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    0    0    0    0    0    0     0
[2,]    0    0    0    1    0    0    1    1    1     0
[3,]    1    1    1    0    1    1    0    0    0     1

जहां 1प्रत्येक कॉलम में एक सिंगल है। 1"आर" पिक्सल, दूसरी पंक्ति "जी" के लिए और "बी" के लिए तीसरी पंक्ति के लिए पहली पंक्ति में है।


4

पायथ - 11 10 बाइट्स

अनुक्रमित 3-बिट रंग के साथ आरजीबी 2 डी बिटमैप और आउटपुट बिटमैप लेता है।

mLOs.emkbk

घोंसले के उस स्तर मेरे सिर दर्द कर रहा है।

इसे यहाँ ऑनलाइन आज़माएँ


4

जे, 20 18 17 बाइट्स

(>:({~?@#)@##\)"1

छवि के साथ आयाम एक सरणी के रूप में इनपुट है एक्स डब्ल्यू 255 उत्पादन के साथ आयाम एक टेबल है - एक्स 3 रेंज 0 में पूर्णांक के रूप में आरजीबी मूल्यों का प्रतिनिधित्व करने एक्स डब्ल्यू जहां 1 (255, 0, 0 के एक rgb मूल्य है ), 2 है (0, 255, 0), और 3 है (0, 0, 255)।

व्याख्या

()"1का प्रतिनिधित्व करता है कि इस क्रिया इनपुट में रैंक 1 से प्रत्येक सारणी पर लागू किया जाना है, जिसका अर्थ है कि यह प्रत्येक के लिए लागू होगी है पिक्सेल

>:({~?@#)@##\  Input: array [R G B]
>:             Increment each, gets [R+1, G+1, B+1]
           #\  Gets the length of each prefix of [R G B], forms [1 2 3]
          #    Make a new array with R+1 copies of 1, G+1 copies of 2,
               and B+1 copies of 3
  (     )@     Operate on that array
       #         Get the length of the array of copies, will be R+G+B+3
     ?@          Generate a random integer in the range [0, R+G+B+3)
   {~            Select the value at that index from the array of copies and return

उदाहरण


1
आपकी मोना लिसा दूसरों के लिए एक अलग रंग योजना है। क्या आप सुनिश्चित हैं कि यह सही काम करता है?
wizzwizz4

@ wizzwizz4 धन्यवाद, छवि प्रदर्शित करते समय, मेरे पास आरजीबी पिक्सेल रिवर्स ऑर्डर में थे।
मील

4

जेली , 8 7 बाइट्स

Jx‘Xµ€€

इनपुट के साथ आयाम एक 3D सूची है एक्स डब्ल्यू एक्स 3. उत्पादन के साथ आयाम एक 2d सूची है एक्स डब्ल्यू , जहां 1 rgb मूल्य (255, 0, 0) का प्रतिनिधित्व करता है 2 (0, 255, 0), और 3 है (0, 0, 255)।

नीचे दिया गया नमूना इनपुट मोना लिसा छवि का शीर्ष-बाएँ 4 x 4 क्षेत्र है।

इसे ऑनलाइन आज़माएं!

व्याख्या

Jx‘Xµ€€  Input: The 3d list of rgb pixels
    µ    Begin a monadic chain (Will operate on each pixel, input: [R, G, B])
J          Enumerate indices to get [1, 2, 3]
  ‘        Increment each to get [R+1, G+1, B+1]
 x         Make R+1 copies of 1, G+1 copies of 2, B+1 copies of 3
   X       Select a random value from that list of copies and return
     €€  Apply that monadic chain for each list inside each list

3

पायथन 3, 119 बाइट्स

जहां mपिक्सल के 2-डी सरणी के रूप में इनपुट लिया जाता है जहां प्रत्येक पिक्सेल फॉर्म की एक सूची है [r,g,b]। प्रत्येक पिक्सेल की स्थिति में, क्रमशः 0,1,2प्रतिनिधित्व करने के लिए लौटता है (250,0,0), (0,250,0), and (0,0,250)

import random
lambda m:[map(lambda x:x.index(sum((((i+1)*[i])for i in x),[])[random.randint(0,sum(x)+2)]),i)for i in m]

मुझे विश्वास नहीं है कि आपको एक चर के रूप में इनपुट लेने की अनुमति है (जब सामान्य आईओ का समर्थन करने वाली भाषा में एक पूर्ण कार्यक्रम लिख रहा हो)। मुझे लगता है कि आपको inputइसे एक फ़ंक्शन का उपयोग करना या बनाना है और mएक पैरामीटर के रूप में लेना है ।
नॉनलाइनरफोर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.