র্যান্ডম পিক্সেল পোকিং


20

আপনার টাস্কটি সহজ: এমন একটি প্রোগ্রাম লিখুন যা একটি সাদা পিক্সেলের সাথে একটি কালো 16px * 8px আয়তক্ষেত্র (উচ্চতা দ্বারা প্রস্থ) এ র্যান্ডম পিক্সেল প্রতিস্থাপন করবে।

গর্তগুলি অবশ্যই অভিন্ন র্যান্ডম হওয়া উচিত এবং আপনার সাদা পিক্সেলগুলি xোকানো দিয়ে 16 পিক্স বাই 8 পিএক্স চিত্রটি আউটপুট করা উচিত।

প্রতি কলামে 1 পিক্সেল প্রতিস্থাপন করুন (মোট 16 টি প্রতিস্থাপিত পিক্সেল)

আপনি কোনও ইনপুট নেন না এবং কম্পিউটারে অন্য কোথাও সঞ্চিত চিত্রটির উপর নির্ভর করতে পারবেন না।

এটি তাই সংক্ষিপ্ত বাইকাউন্টের সাথে প্রোগ্রামটি জয়!


1
প্রোগ্রামটি একাধিকবার কার্যকর করার সময় আউটপুট পরিবর্তন করা উচিত?
কোয়ান্টিন

@Quentin হ্যাঁ এটি করা উচিত
GracefulLemming

উত্তর:


7

এমএটিএল , 15 14 13 বাইট

8tE2$r&S1=3YG

উদাহরণ (এমএটিএল সংকলক এমএটিএলবিতে চলছে):

এখানে চিত্র বর্ণনা লিখুন

অথবা এমএটিএল অনলাইন এ চেষ্টা করুন ! (এটি যদি প্রথমবার না চালায় তবে আবার "রান" টিপুন বা পৃষ্ঠাটি রিফ্রেশ করুন)। নোট করুন যে চিত্রটি অনলাইন দোভাষী দ্বারা আরও ভাল দেখার জন্য স্কেল করা হয়েছে।

এটি আমার অকটাভ / ম্যাটল্যাব উত্তরের একটি বন্দর (সেখানে ব্যাখ্যা দেখুন)। সমতুল্য বিবৃতি এখানে:

MATL        Octave / MATLAB
----        ---------------
8tE         8,16
2$r         rand(...)
&S          [~,out]=sort(...)
1=          ...==1 
3YG         imshow(...)

6

পাইথ - 16 15 বাইট

ফলাফল আউটপুট o.png

.wCm.S+255mZ7y8

উদাহরণ চিত্র:


3

অক্টাভা / ম্যাটল্যাব, 48 37 35 বাইট

[~,z]=sort(rand(8,16));imshow(z==1)

উদাহরণ (অক্টাভেতে):

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

           rand(8,16)                  % 8×16 matrix of random values with uniform
                                       % distribution in (0,1)
[~,z]=sort(          );                % Sort each column, and for each output the
                                       % indices of the sorting. This gives an 8×16
                                       % matrix where each column contains a random
                                       % permutation of the values 1,2,...,8 
                              z==1     % Test equality with 1. This makes all values 
                                       % except 1 equal to 0
                       imshow(    )    % Show image, with grey colormap

3

সি, 85 100 বাইট

main(c){char a[138]="P5 16 8 1 ";for(srand(time(0)),c=17;--c;a[9+c+(rand()&112)]=1);write(1,a,138);}

স্টডআউটে একটি পিজিএম চিত্র ফাইল লিখে (এটি দিয়ে কল করুন prog >out.pgm)।

অবহেলিত এবং ব্যাখ্যা:

main(c) {
    // A buffer large enough to contain the whole image,
    // pre-filled with the PGM header.
    // This is a binary greyscale (P5) image with only two levels (1),
    // Because a binary bitmap would require pixel packing.
    char a[138] = "P5 16 8 1 ";

    // c iterates from 16 to 1 over the columns
    for(
        srand(time(0)), c = 17;
        --c;

        // (rand() % 8) * 16 is equivalent to (rand() & 7) << 4
        // Since all bits are equally random, this is equivalent
        // to rand() & (7 << 4), that is rand() & 112.
        // This picks a pixel from the first column, which is then
        // offset to the correct column by c - 1 + 10
        // (10 is the length of the header).
        a[9 + c + (rand() & 112)] = 1
    )
        ; // Empty for body

    // Write the whole buffer to stdout
    write(1,a,138);
}

আপডেট:

  • ওপি স্পষ্ট করে দিয়েছে যে প্রতিটি সম্পাদনের মাধ্যমে আউটপুট পরিবর্তন হওয়া উচিত, srand(time(0))( :() এর 15 বাইট হারিয়েছে

3

প্রসেসিং, 74 73 বাইট

fill(0);rect(0,0,15,7);stroke(-1);for(int i=0;i<16;)point(i++,random(8));

নমুনা আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

fill(0);               //sets the fill colour to black
rect(0,0,15,7);        //draws a 16*8 black rectangle
stroke(-1);            //set stroke colour to white
for(int i=0;i<16;)     // for-loop with 16 iterations
 point(i++,random(8)); //  draw a point at x-coordinate i and a random y coordinate
                       //  the colour of the point is white since that is the stroke colour

2

রুবি, 61 বাইট

puts'P116 8';puts Array.new(16){[*[1]*7,0].shuffle}.transpose

এটি একটি সম্পূর্ণ প্রোগ্রাম যা চিত্রটি নেটপবিএম ফর্ম্যাটে স্টডআউটকে আউটপুট করে।

নমুনা আউটপুট:

puts'P116 8';   # output the netpbm header (P1 for black and white, 16x8)
puts            # then output the data as follows:
Array.new(16){  # make a 16-element array and for each element,
[*[1]*7,0]      # generate the array [1,1,1,1,1,1,1,0] (1=black 0=white)
.shuffle}       # shuffle the array
.transpose      # transpose the rows/columns of the 2d array (so that each column
                # has one white pixel)

2

বেফুঞ্জ, 90 বাইট

এটি স্টডআউটে লিখিত একটি পিবিএম ফাইল উত্পন্ন করে।

>030#v_\2*>>?1v
:v9\$<^!:-1\<+<
|>p1+:78+`!
>"P",1..8.28*8*v
.1-\88+%9p:!#@_>1-::88+%9g:!!

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

শীর্ষ তিনটি লাইন প্লেফিল্ডের দশম লাইনে 16 টি এলোমেলো 3-বিট সংখ্যা (অর্থাত্ 0-7 পরিসরে) সঞ্চয় করে এলোমেলো সংখ্যা জেনারেটর তৈরি করে। লাইন ফোরটি পিবিএম শিরোনামটি লিখে দেয় এবং শেষ লাইনটি পরে চিত্রটির পিক্সেল উত্পন্ন করে। পিক্সেল আউটপুট হিসাবে 16 টি এলোমেলো সংখ্যা গণনা করে এটি করা হয় - যখন একটি নির্দিষ্ট কলামের সাথে সংখ্যার শূন্যে পৌঁছায় আমরা 0 এর পরিবর্তে 1 আউটপুট পাই।

নমুনা আউটপুট (জুমড):

নমুনা আউটপুট


1

গণিত, 77 60 বাইট by

Image[{RandomInteger@7+1,#}->1&~Array~16~SparseArray~{8,16}]

নমুনা আউটপুট

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

{RandomInteger@7+1,#}->1&~Array~16

প্রতিটি কলামের জন্য প্রতিস্থাপনের নিয়ম তৈরি করুন; 1 দিয়ে এলোমেলোভাবে নির্বাচিত অবস্থান প্রতিস্থাপন করুন।

... ~SparseArray~{8,16}

SparseArrayপ্রতিস্থাপনের নিয়ম থেকে 8x16 আকারের একটি তৈরি করুন । ব্যাকগ্রাউন্ডটি 0ডিফল্টরূপে। (8x16 কারণ ম্যাথমেটিকা ​​প্রথমে সারি গণনা করে)

Image[ ... ]

রূপান্তর SparseArrayএকটি মধ্যে Imageঅবজেক্ট।

77 বাইট সংস্করণ

ReplacePixelValue[Image@(a=Array)[0&~a~16&,8],{#,RandomInteger@7+1}->1&~a~16]


0

আর, 76 বাইট

a=matrix(0,8,16);for(i in 1:16)a[sample(1:8,1),i]=1;png::writePNG(a,'a.png')

pngএকটি ফাইল আউটপুট প্যাকেজ ব্যবহার করে ।
উদাহরণ আউটপুট:

এখানে চিত্র বর্ণনা লিখুন


0

কিউ বেসিক, 59 বাইট

RANDOMIZE TIMER
SCREEN 9
FOR x=0TO 15
PSET(x,RND*8-.5)
NEXT

অনেকটাই অকপট. -.5কারণ প্রয়োজন হয় PSETঅ পূর্ণসংখ্যা আর্গুমেন্ট সহ (এবং বৃত্তাকার টু নিকটতম পরিবর্তে মেঝে বা আরোপ করা ব্যবহার -.5চেয়ে খাটো INT())।

প্রশ্নে থাকা চিত্রটি আউটপুট উইন্ডোর উপরের বাম কোণে প্রদর্শিত হবে। একটি (ক্রপযুক্ত) উদাহরণ:16 এলোমেলো বিন্দু


0

জাভা, ( এটি কি বাইটস, এ কেএ 244 + 18 আমদানি = 262 কেও গুরুত্ব দেয়)

import java.awt.*;static void l(){new Frame(){public void paint(Graphics g){int x=50;int i=16;g.setColor(Color.BLACK);g.fillRect(x,x,16,8);g.setColor(Color.WHITE);for(;i>0;i--){int y=(int)(Math.random()*8);g.drawLine(x+i,x+y,x+i,x+y);setVisible(1>0);}}}.show();}

অদ্ভুত ছিল কারণ স্থানাঙ্ক সিস্টেমে ফ্রেম উইন্ডো ফলক অন্তর্ভুক্ত রয়েছে ... সুতরাং আপনাকে কমপক্ষে 26 বাইট বা কিছু না দেখায় বাফার করতে হবে, তাই x=50বিট।


আমি জানি এটি কিছুক্ষণ হয়ে গেছে, তবে আপনি এটি 238 বাইটে গল্ফ করতে পারেন: import java.awt.*;v->{new Frame(){public void paint(Graphics g){int x=50,i=16,y;g.setColor(Color.BLACK);g.fillRect(x,x,i,8);for(g.setColor(Color.WHITE);i>0;g.drawLine(x+i,x+y,x+i--,x+y),setVisible(1>0))y=(int)(Math.random()*8);}}.show();}(পরিবর্তনগুলি সম্পন্ন: স্থির অপসারণ; জাভা 8 ল্যাম্বডা; কিছু intগুলি অপসারণ; i=16পুনরায় ব্যবহৃত; বন্ধনী অপসারণের জন্য জিনিসগুলি লুপের ভিতরে রেখে দিন ;)
কেভিন ক্রুইজসেন

0

পোস্টস্ক্রিপ্ট (65 বাইট)

0 0íkà0ícà8íc0 8ícííB1à1íù16{0 randàíj0.5í©ík1 0íÖíß1 0í≠}íÉ

অবরুদ্ধ সংস্করণ:

0 0 moveto
16 0 lineto
16 8 lineto
0 8 lineto
closepath
fill
1 1 1 setrgbcolor
16{0 rand 16 mod 0.5 sub moveto 1 0 rlineto stroke 1 0 translate}repeat

0

স্মাইলব্যাসিক, 30 বাইট

FOR I=0TO 15GPSET I,RND(8)NEXT

0

চিপ -8, 12 বাইট

0xA201 'Load sprite at address 201 (which is the second byte of this instruction)
0xC007 'Set register 0 to a random number from 0 to 7 (rnd & 0x7)
0xD101 'Draw sprite. x = register 1, y = register 0, height = 1
0x7101 'Add 1 to register 1
0x3110 'If register 1 is not 16...
0x1202 'Jump to second instruction

চিত্রটি স্ক্রিনে আঁকুন।


0

টিসিএল / টাকা, 163

দুটি ভিন্ন পন্থা একই বাইট পরিমাণে রেন্ডার করে:

grid [canvas .c -w 16 -he 8 -bg #000 -highlightt 0]
.c cr i 8 4 -i [set p [image c photo -w 16 -h 8]]
set x 0
time {$p p #FFF -t $x [expr int(rand()*8)];incr x} 16

grid [canvas .c -w 16 -he 8 -bg #000 -highlightt 0]
.c cr i 8 4 -i [set p [image c photo -w 16 -h 8]]
time {$p p #FFF -t [expr [incr x]-1] [expr int(rand()*8)]} 16

এখানে চিত্র বর্ণনা লিখুন


0

ভিবিএ এক্সেল, 86 105 বাইট

তাত্ক্ষণিক উইন্ডো ব্যবহার করে

Cells.RowHeight=42:[a1:p8].interior.color=0:for x=0to 15:[a1].offset(rnd*7,x).interior.color=vbwhite:next

এই সমাধানটি দুর্ভাগ্যক্রমে অ্যাক্টিভীট স্কোয়ারের ঘরগুলি তৈরি করে না, যেমন এক্সেল ভিবিএ পিক্সেল আর্ট সলিউশনগুলির জন্য প্রয়োজনীয় - আরও বৈধ সমাধান হবেCells.RowHeight=42:[A1:P8].Interior.Color=0:For x=0To 15:[A1].Offset(Rnd*7,x).Interior.Color=-1:Next
টেলর স্কট

আহ হ্যাঁ আমি ভুলে গিয়েছিলাম। আমার মনে আছে আমি এটিকে ম্যানুয়ালি অ্যাডজাস্ট করেছি। ধন্যবাদ :)
3

(এবং আপনি ব্যবহার করতে পারেন -1পরিবর্তে vbWhite- কেন পূর্ণ ব্যাখ্যা এখানে )
টেলর স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.