एक विशेष अवधि छवि उत्पन्न करें


10

एक प्रोग्राम या फ़ंक्शन का निर्माण करें जो इनपुट के रूप में लेता है

<width>, <height>, <color1>, <color2>

और रंग के पिक्सल के बीच एक निर्गम ऐसी है कि पहली पंक्ति विकल्पों उत्पन्न करता है <color1>और <color2>की अवधि के साथ<height> । निम्नानुसार प्रत्येक पंक्ति के लिए, अवधि होगी <height> - <row number>। ध्यान दें कि <color1>हमेशा पंक्ति शुरू होती है।

नमूना आउटपुट

इनपुट 120, 6, #000000, #FFFF00:

नमूना आउटपुट

इनपुट 80, 50, #000000, #FFFF00:

नमूना आउटपुट 2

(नमूना उत्पादन स्पष्टता के लिए बढ़ाया गया है)

यह , इसलिए बाइट्स जीत में सबसे कम वैध प्रविष्टि है।


क्या वह भग्न है? क्या इसका भग्न आयाम है?
PyRulez

जवाबों:


6

जावास्क्रिप्ट (ईएस 6), 177 बाइट्स

g=
(w,h,f,b)=>`<svg${s=` width=${w} height=`+h}><rect${s} fill=${b} />`+[...Array(h)].map((_,i)=>`<line stroke=${f} stroke-dasharray=${h-i} x1=0 y1=${i} x2=${w} y2=${i} />`).join``
Width: <input id=w value=80 type=number min=1><br>Height: <input id=h value=50 type=number min=1><br>Foreground: <input id=f value=#000000><br>Background: <input id=b value=#FFFF00><br><input type=button value=Go! onclick=o.innerHTML=g(+w.value,+h.value,f.value,b.value)><div id=o>

एचटीएमएल 5-कॉम्पिटिबाइल एसवीजी इमेज आउटपुट करता है।


4

एक्सेल VBA, 129 बाइट्स

बेनामी VBE तत्काल विंडो फ़ंक्शन जो रेंज से इनपुट लेता है [A1:D1]और रेंज में आउटपुट करता है[A2].Resize([B1],[A1])

Cells.RowHeight=48:For Each r in[A2].Resize([B1],[A1]):r.Interior.Color=IIf(int((r.Column-1)/([B1]-R.Row+2))Mod 2,[D1],[C1]):Next

उत्पादन

इनपुट के लिए आउटपुट 160, 90, 0xBDD7EE, 0xDDEBF7: उत्पादन


4

Tcl / Tk, 143

१४ 151 १५० १५१

proc P {w h b c} {set p [image c photo -w $w -h $h]
time {incr y
set x 0
time {$p p -t $x $y [expr {[incr x]/($h-$y+1)%2?$c:$b}]} $w} $h
set p}

उस छवि को लौटाता है जिसका परीक्षण किया जा सकता है, उसे canvasविजेट पर रखकर , फ़ाइल पर लिखना, क्लिपबोर्ड पर हो सकता है, आदि।

परीक्षण के लिए कोड

set w 960
set h 540
pack [canvas .c -w $w -he $h -highlightt 0]
.c cr image 0 0 -image [P $w $h #00ffff #ffbf32] -anchor nw

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


3

गणितज्ञ, 52 बाइट्स

Image@Table[If[Mod[j,2i]>i,#4,#3],{i,-#2,-1},{j,#}]&

नमूना इनपुट:

Image@Table[If[Mod[j,2i]>i,#4,#3],{i,-#2,-1},{j,#}]&[120,6,Black,Yellow]

3

सी (जीसीसी) , 155 143 बाइट्स

एक पोर्टेबल PixMap (.ppm) को प्रिंट करने के लिए प्रिंट करता है।

x,y,z;f(w,h,r,g,b,R,G,B){for(y=~0,printf("P3 %d %d 255",w,h);y++<~-h;)for(x=~0;x++<~-w;)z=(x/(h-y)%2),printf("\n%d %d %d ",z?R:r,z?G:g,z?B:b);}

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

उत्पादन

  • इनपुट: 80, 50, #ad00df, #f17e18

यहाँ छवि विवरण दर्ज करें (छवि परिवर्तित और आकार दी गई।)


लिखने के ~0बजाय फायदा क्या है -1?
सेरगिओल

@sergiol यह कूलर लगता है। और - सैद्धांतिक रूप से - यदि आपको एक चर की आवश्यकता है जिसमें केवल 1s है, की ~0तुलना में अधिक पोर्टेबल होगा -1
जोनाथन फ्रीच

2
जब मैंने इसे अतीत में स्क्रॉल किया था तो इस छवि ने मेरी आँखों को मार दिया। +1
हाइपरएन्यूट्रीनो


1

जावा 8, 321 + 42 = 363 बाइट्स

import java.awt.*;import java.awt.image.*;
(w,h,a,b)->{BufferedImage i=new BufferedImage(w,h,1);Graphics2D g=(Graphics2D)i.getGraphics();g.setColor(new Color(a));g.fillRect(0,0,w,h);g.setColor(new Color(b));for(int j=h;j>0;g.drawLine(0,h-j,w,h-j--))g.setStroke(new BasicStroke(1,0,0,1,new float[]{j},j));javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));}

एक PNG फ़ाइल को आउटपुट नाम दिया गया है a(कोई एक्सटेंशन नहीं)।

लंबोदर को चलाने के लिए इस्तेमाल किया जाने वाला कोड: इसे ऑनलाइन आज़माएं!

Ungolfed

(w,h,a,b)->{
    BufferedImage i=new BufferedImage(w,h,1);
    Graphics2D g=(Graphics2D)i.getGraphics();
    g.setColor(new Color(a));
    g.fillRect(0,0,w,h);
    g.setColor(new Color(b));
    for(int j=h;j>0;g.drawLine(0,h-j,w,h-j--))
        g.setStroke(new BasicStroke(1,0,0,1,new float[]{j},j));
    javax.imageio.ImageIO.write(i,"png",new java.io.File("a"));
}

परिणाम

इनपुट: 80, 50, 0xFF00FF, 0xFFFF00

उदाहरण आउटपुट


1

SOGL V0.12 , 83 बाइट्स

..¹Cbe¹"εģνļ▲I-℮eīÆoHι⅛ļJd⁾)⁶f°┌²‘→e∫Ab∫Ƨ01a∙H∑bmWrcwιFHea-¹"S⁸▒Μ¬NrηA¤Y_⅓ļpPboā⁵‘→

यह कोशिश करो!

SOGL प्रसंस्करण में बनाया गया था .. इसलिए मैंने इसका उपयोग करके फायदा उठाया - जावास्क्रिप्ट के रूप में निष्पादित करें। अगर एसओजीएल के पास कुछ भी होता तो आसानी से कई बाइट्स कम (कम से कम 30) हो सकते थे ग्राफिक्स के लिए ।

असम्बद्ध तार:

..¹Cbe¹"__processing0.hidden=0;cp.size(ŗ,ŗ)”→e∫Ab∫Ƨ01a∙H∑bmWrcwιFHea-¹"cp.stroke(ŗ);cp.point(ŗ,ŗ)”→

स्पष्टीकरण:

..¹C       save the first 2 inputs as an array on variable C
be¹        save next input - width - on B, next input - height - on E, and wrap both in an array
"__processing0.hidden=0;cp.size(ŗ,ŗ)”→   
           execute "__processing0.hidden=0;cp.size(ŗ,ŗ)" as JavaScript - show the canvas and set the size to the corresponding items in the array

e∫A        repeat height times, saving 1-indexed counter on A
  b∫       repeat width times, pushing 1-indexed counter
    Ƨ01    push "01"
    a∙     multiply vertically A times             - ["01", "01", "01",...]
    H      rotate anticlockwise                    - ["000...","111..."]
    ∑      join together                           - "000..111.."
    bm     mold to the length of width             - "00011100011100"
    W      get the counterth letter of that string - "1"
    r      convert to number                       - 1
    cw     get that item from the variable C
    ι      remove the array from the stack
    FH     push current loops counter minus 1
    ea-    push e-a - height-outerLoopsCounter
    ¹      wrap the 3 items in an array - [itemInC (color), counter-1 (x position), height-outerLoopsCounter (y position)]

    "cp.stroke(ŗ);cp.point(ŗ,ŗ)”→ 
           execute "cp.stroke(ŗ);cp.point(ŗ,ŗ)" as JavaScript, replacing ŗ with the corresponding item from the array

1

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

DEF C W,H,C,D
FOR J=1TO H
FOR I=0TO W-1N=1AND I/J
GPSET I,H-J,C*!N+D*N
NEXT
NEXT
END

पर पिक्सेल का रंग (x,height-y)है[color1,color2][x/y & 1]


0

पायथन 2 , 123 101 बाइट्स

w,h,c,C=input()
print'P3',w,h,255
for i in range(h):
 for j in range(w):print`[c,C][j/(h-i)%2]`[1:-1]

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

जोनाथन के उत्तर में आउटपुट के लिए एक .ppm प्रिंट करता है ।


यदि आप अपने रंग इनपुट प्रारूप को बदलते हैं तो मेरे सी उत्तर ... 105 बाइट्स के समान दिखता है (जैसा कि प्रश्न कठोरता से रंग प्रारूप को परिभाषित नहीं करता है)।
जोनाथन फ्रेच

@JonathanFrech धन्यवाद :) हाँ, मैं आपके जवाब से प्रेरित हो गया जब छवि को आउटपुट करने का तरीका खोज रहा था।
TFeld

जिज्ञासा के कारण; अपनी .ppm फ़ाइल को खोलने के लिए आप किस प्रोग्राम का उपयोग करते हैं?
जोनाथन फ्रेच

'%d '*3%से छोटा है '%d %d %d'%
जोनाथन फ्रीच

@JonathanFrech यह काम करता है, या मैंने
TFeld

0

जावास्क्रिप्ट (ईएस 6) + एचटीएमएल 5, 138 बाइट्स

(w,h,a,b)=>{with(c.width=w,c.getContext`2d`)for(c.height=y=h;~--y;)for(x=w;~--x;)fillStyle=x/(h-y)%2<1?a:b,fillRect(x,y,1,1)}
<canvas id=c>

f=
(w,h,a,b)=>{with(c.width=w,c.getContext`2d`)for(c.height=y=h;~--y;)for(x=w;~--x;)fillStyle=x/(h-y)%2<1?a:b,fillRect(x,y,1,1)}
#c{display:block
<input id=w value=80>
<input id=h value=50>
<input id=a value=#000>
<input id=b value=#FF0>
<input value=go type=button onclick=f(w.value,h.value,a.value,b.value)>
<canvas id=c>

इस फंक्शन को चालू करने से आउटपुट मिलता है <canvas id=c>

कैनवास के नीचे दाईं ओर से शुरू होकर, नेस्टेड forलूप बाईं और ऊपर की ओर घूमता है, और x/(h-y)%2<1पिक्सेल पर स्थिति की जांच करता है x,y। यदि स्थिति है true, तो यह उस पिक्सेल को रंग देता है color1, और color2

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