দুই রঙের ওভারল্যাপিং চেনাশোনা


22

আপনার পছন্দসই একটি যুক্তিসঙ্গত বিন্যাসে নিম্নলিখিত ইনপুট গ্রহণ করে এমন একটি প্রোগ্রাম বা ফাংশন লিখুন:

  • দুটি ধনাত্মক পূর্ণসংখ্যা ডাব্লু এবং এইচ যা আপনার উত্পন্ন করা হবে সেই চিত্রটির প্রস্থ এবং উচ্চতা নির্ধারণ করে।

  • দুটি আরজিবি রং সি 1 এবং সি 2 যা চিত্রটি রঙিন করতে ব্যবহৃত হবে।

  • ফর্মের 3-টি-টিপলগুলির একটি তালিকা যা চিত্রের সমতলে (r, x, y)ব্যাসার্ধ rএবং কেন্দ্র সহ বৃত্তগুলি সংজ্ঞায়িত করে x, yrএকটি ধনাত্মক পূর্ণসংখ্যা xএবং yএটি কোনও পূর্ণসংখ্যা। চিত্রের উপরের বাম পিক্সেলটি 0, 0এবং এক্স-অক্ষটি ডানদিকে এবং y- অক্ষটি নীচের দিকে বৃদ্ধি পায়।

ডাব্লু দ্বারা এইচ এর মাত্রা সহ কোনও চিত্র আউটপুট করুন যা সি 1 এবং সি 2 এর সাথে বর্ণযুক্ত এমন যে সমস্ত ওভারল্যাপিং বৃত্ত দ্বারা সংজ্ঞায়িত দুটি প্রতিবেশী অঞ্চল একই রঙ নয়।

উদাহরণস্বরূপ: যদি ইনপুট হয়

W = 300
H = 200
C1 = (255, 200, 0)
C2 = (128, 0, 255)
Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)

তারপরে চেনাশোনা সীমানাগুলি এর মতো দেখায়:

উদাহরণ 1 টি বৃত্তের সীমানা

চেনাশোনাগুলির দ্বারা নির্মিত চিত্রটিতে ছয়টি স্বতন্ত্র, স্বচ্ছল অঞ্চল রয়েছে। প্রতিটি অঞ্চল অবশ্যই সি 1 (হলুদ) বা সি 2 (বেগুনি) এর সাথে রঙিন হওয়া উচিত যাতে কোনও দুটি প্রতিবেশী অঞ্চল একই রঙ নয়।

এটি করার দুটি উপায় আছে, কেবলমাত্র তারতম্যগুলি হ'ল রঙগুলি অদলবদল করা হয়:

উদাহরণ 1 আউটপুট 1 উদাহরণ 1 আউটপুট 2

সুতরাং, এই দুটি চিত্রের মধ্যে দুটিই উদাহরণ ইনপুটটির জন্য বৈধ আউটপুট হবে।

ভালো কিছু এই যেহেতু দুই হলুদ অঞ্চলে একে অপরের প্রতিবেশী অবৈধ আউটপুট হবে।

আপনার আউটপুট চিত্রগুলি এই নির্দেশিকা অনুসরণ করা উচিত:

  • সি 1 এবং সি 2 এর পাশাপাশি কালো বা সাদা হিসাবে তৃতীয়, নিরপেক্ষ রঙ যতক্ষণ না তারা 5 পিক্সেলের বেশি পুরু না হয় ততক্ষণ বৃত্তের সীমানার জন্য ব্যবহার করা যেতে পারে। (কালো, 1-পিক্সেল পুরু গণ্ডি উপরের উদাহরণে উপস্থিত রয়েছে))

  • চেনাশোনা সীমানা প্রয়োজন হয় না। অঞ্চলগুলি একে অপরের সাথে সরাসরি প্রতিবেশী হতে পারে:

    উদাহরণ 1 আউটপুট 3 উদাহরণ 1 আউটপুট 4

    উভয়ই উপরের উদাহরণটির জন্য অন্য বৈধ আউটপুট।

  • চেনাশোনাগুলি যথাযথভাবে যথাযথভাবে যথাযথ হওয়া উচিত, চেনাশোনা অঙ্কন অ্যালগরিদম ব্যবহার করে বা আপনার গ্রাফিক্স লাইব্রেরি যা কিছু দেয়।

  • সাধারণভাবে, পিক্সেল-পরিপূর্ণতা প্রয়োজন হয় না, তবে যদি ইনপুট পরামিতিগুলি সমানভাবে আরও বড় এবং বৃহত্তর আকারে মাপানো হয়, ফলস্বরূপ চিত্রটি আরও এবং আরও নির্ভুল হওয়া উচিত।

  • অ্যান্টি-এলিয়জিং অনুমোদিত তবে প্রয়োজনীয় নয়।

  • পটভূমিতে গ্রিডলাইন বা অক্ষ লেবেল ইত্যাদির অনুমতি নেই।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

আরও উদাহরণ

সমস্ত চেনাশোনাগুলির বিভিন্ন সেট সহ এই ইনপুটগুলি ব্যবহার করছে:

W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)

কোনও উদাহরণে রঙগুলি অদলবদল হতে পারে এবং বৈধ থাকতে পারে।

Circles =
A. empty list
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80) 

A. প্রাক্তন এ B. প্রাক্তন খ C. প্রাক্তন গ D. প্রাক্তন ডি
E. প্রাক্তন ই F. প্রাক্তন চ G. প্রাক্তন জি H. প্রাক্তন এইচ
I. প্রাক্তন আমি J. প্রাক্তন জে K. প্রাক্তন কে L. প্রাক্তন এল

আপনার আউটপুট এই সমস্ত উদাহরণের সাথে একইরকম আচরণ করে তা নিশ্চিত করুন।


দেখতে সুন্দর লাগছে, আমরা কি এসকিআইতে আউটপুট দিতে পারি, উদাহরণস্বরূপ C1 1 এবং C2 0 হয়?
ম্যাথু রোহ

@ ম্যাথরোহ নং। আমি জানি এটি সুবিধাজনক হবে তবে চিত্রের প্রয়োজন are
ক্যালভিনের

1
ঠিক আছে তবে আমি অনুমান করি যে আমি গণনা করতে পারিtikz
Wheat Wizard

1
@ ম্যাথেরহোহ, নেটপবিএম এই সাইটের একটি সাধারণ ব্যবহৃত চিত্রের ফর্ম্যাট।
পিটার টেলর

2
@ লুইস ওকে। এর মতো ছোট ইনপুট ভেরিয়েশন বা y অক্ষগুলি বাড়ানো ঠিক আছে।
ক্যালভিনের শখ

উত্তর:


14

গণিত, 165 বাইট

ContourPlot[Cos@Tr[Boole[Norm[{x,y}-#2]<#]Pi&@@@#4],{x,0,#},{y,0,#2},PlotPoints->5!,AspectRatio->Automatic,Frame->False,ContourShading->RGBColor@@@#3,Contours->{0}]&

চারটি আর্গুমেন্ট গ্রহণ বিশুদ্ধ ফাংশন: প্রস্থ, উচ্চতা (উভয় পূর্ণসংখ্যার), 0 এবং 1 (দুটি আরজিবি বর্ণকে উপস্থাপন করে) এর মধ্যে তিনটি সংখ্যার অর্ডারযুক্ত জোড়, এবং {r, {x, y}}রেডিও এবং কেন্দ্রগুলি রেকর্ড করার জন্য ফর্মের আইটেমের তালিকা চেনাশোনাগুলি। উদাহরণস্বরূপ, ওপিতে প্রথম উদাহরণটি যুক্তি দিয়ে ডাকা হবে [300, 200, {{1, 0.784, 0}, {0.5, 0, 1}}, {{25, {50, 80}}, {40, {80, 120}}, {300, {-100, 6}}, {17, {253, 162}}}]। গণিতের ধনাত্মক y- অক্ষটি উপরের দিকে পয়েন্ট করে।

Norm[{x,y}-#2]<#প্রদত্ত বৃত্তের ভিতরে একটি বিন্দু রয়েছে কিনা তা সনাক্ত করে; Boole[...]Piধর্মান্তরিত করে Trueবা Falseকরতে πবা 0। সমস্ত ইনপুট চেনাশোনাগুলিতে সেই πs / 0 গুলি গণনা করার পরে এগুলি Trযুক্ত করে এবং Cosএমনকি π এর গুণককে 1, 1 থেকে –1 এর বিজোড় গুণকগুলিতে রূপান্তর করে। ContourPlot[...,Contours->{0}]তারপরে মানটি আরও বেশি বা কম কিনা তার উপর নির্ভর করে বিমানের উপযুক্ত অঞ্চলটিকে দুটি রঙে রঙ করুন 0AspectRatio->Automaticচেনাশোনাগুলিকে চেনাশোনাগুলির মতো দেখায়; PlotPoints->5!একটি শালীন নির্ভুলতা দেয় ( 9!যদি আপনি সত্যিই একটি আশ্চর্যজনক ছবি চান তবে এটি উন্নীত করুন !); Frame->Falseঅক্ষ থেকে মুক্তি পান; এবং ContourShading->RGBColor@@@#3রূপরেখার জন্য ইনপুট রঙগুলি ব্যবহার করে।

প্রথম জোড়া রঙের সাথে নমুনা আউটপুট (যেহেতু তারা দুর্দান্ত) তবে চেনাশোনাগুলির শেষ সেট:

নমুনা আউটপুট


11

জাভাস্ক্রিপ্ট / এসভিজি / এইচটিএমএল 5, 219 বাইট

f=// for demo
(w,h,b,f,a)=>`<svg width=${w} height=${h}><rect width=${w} height=${h} fill=rgb(${b}) /><path fill=rgb(${f}) fill-rule=evenodd d=${a.map(([r,x,y])=>[`M`+x,y-r+`a`+r,r,0,0,0,0,r+r+`a`+r,r,0,0,0,0,-r-r]).join``} /></svg>`
;//demo
[[`A`, []],
 [`B`, [[13, 16, 20]]],
 [`C`, [[30, 16, 20]]],
 [`D`, [[200, 16, 20]]],
 [`E`, [[42, 50, 20]]],
 [`F`, [[42, 50, 20], [17, 40, 30]]],
 [`G`, [[42, 50, 20], [17, 20, 30]]],
 [`H`, [[42, 50, 20], [17, 10, 30], [10, 50, 30]]],
 [`I`, [[42, 50, 20], [17, 10, 30], [35, 50, 20]]],
 [`J`, [[18, 36, 40], [18, 63, 40], [18, 50, 20]]],
 [`K`, [[100, -10, -20], [60, 50, -10]]],
 [`L`, [[18, 36, 40], [18, 63, 40], [18, 50, 20], [14, 50, 20], [5, 50, 18], [20, 0, 0], [70, 22, 0], [10000, -9970, 0], [135, 100, -80]]]
 ].forEach(([c, a])=>document.write(`<nobr><tt>&nbsp;${c}.&nbsp;</tt>${f(100, 60, [255, 0, 0], [0, 0, 255], a)}</nobr><wbr>`));


10

বিবিসি বেসিক, 120 117 বাইট

Http://www.bbcbasic.co.uk/bbcwin/bbcwin.html এ দোভাষী ডাউনলোড করুন

I.w,h,R,G,B,r,g,b:V.22,4,19;16,r,g,b,275;16,R EORr,G EORg,B EORb,24,0;0;w;h;16
5I.r,x,y:V.25,4,x;h-y;25,154,r;0;:G.5

বিবিসি বেসিকের বিভিন্ন রঙের মোড রয়েছে যা আপনাকে মৌলিক লজিক অপারেশন অনুযায়ী রাস্টার গ্রাফিক্স প্লট করতে দেয়: ও, এবং, এক্সওআর ইত্যাদি OR

এটি প্যালেট পুনর্গঠনকেও সমর্থন করে, অর্থাত এখানে উদাহরণস্বরূপ 2 টি বর্ণের চিত্রটি এর রঙগুলি 4096 রঙের যে কোনওটিতে পুনরায় প্রোগ্রাম করতে পারে। এখানে ব্যবহৃত বাস্তবায়নের মূল বিবিসি বাস্তবায়ন থেকে কিছু (অননুমোদিত) পার্থক্য রয়েছে, যেখানে ইওআর অপারেটরদের প্রয়োজনীয় হবে না।

Ungolfed

  INPUTw,h,R,G,B,r,g,b:                           :REM Input size and colours
  VDU22,4                                         :REM Change to MODE 4 (2 colours) as the default mode gives odd behaviour
  VDU19,0,16,r,g,b,19,1,16,R EORr,G EORg,B EORb   :REM Reprogram the colours to R,G,B and R^r,G^g,B^b
  VDU24,0;0;w;h;16                                :REM Setup a graphics viewport of the right size, and "clear" it to change background colour
5 INPUTr,x,y                                      :REM take input coordinates
  VDU25,4,x;h-y;                                  :REM move to x,y (h-y required as BBC BASIC y axis increases upward, reverse of spec)
  VDU25,154,r;0;                                  :REM draw circle in "logical inverse colour" of existing pixels (this implementation seems however to XOR with colour 1 instead)
  GOTO5                                           :REM repeat infinitely until user presses escape

টিপিক্যাল আউটপুট স্ক্রিন

উদাহরণ চিত্রটি ইউনিট 10 এর দশক / পিক্সেল 5 এর ফ্যাক্টর দ্বারা ছোট করা হয় (বিবিসি মৌলিক ব্যবহার 1 পিক্সেল = 2 ইউনিট।)

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


10

এমএটিএল , 30 29 25 বাইট

2ZG:i:!J*+2&!-|i<so2&!1YG

ছক পূরণ করা:

  • 0 এবং 255 এর মধ্যে মানগুলির ম্যাট্রিক্স হিসাবে কালারম্যাপ, যেখানে প্রতিটি সারি একটি বর্ণ নির্ধারণ করে
  • ওয়াট
  • এইচ
  • 1-ভিত্তিক কেন্দ্রের কলাম ভেক্টর জটিল মান হিসাবে স্থানাংক করে ( x আসল অংশ, y কাল্পনিক অংশ)
  • রেডির কলাম ভেক্টর।

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

ব্যাখ্যা

কোড পয়েন্টগুলির গ্রিড নির্ধারণ করতে এবং দূরত্ব গণনা করতে জটিল সংখ্যা ব্যবহার করে এবং সম্প্রচারের সাথে অ্যারে অপারেশনগুলির ভারী ব্যবহার করে ।

2ZG    % Implicitly input matrix of colors. Set as colormap
:      % Implicitly input W. Push [1 2 ... W]
i:     % Input H. Push [1 2 ... H]
!J*    % Transpose, multiply by 1i
+      % Add element-wise with broadcast. Gives H×W grid of points as
       % complex numbers, 1-based 
2&!    % Permute first dimension with the third. Gives a 1×W×H array
-|     % Implicitly input center coordinates. Subtract grid from them,
       % element-wise with broadcast. Gives a C×H×W array, where C is the
       % number of circles
i      % Input column vector of circle radii
<      % Less than, element-wise with broadcast
so     % Sum along first dimension, modulo 2. Gives a 1×W×H array
2&!    % Permute first dimension with the third. Gives a a H×W array
1YG    % Display as scaled image

2
আমি বলি সেগুলি বাইটগুলি সংরক্ষণ করুন! : ডি
গ্রেগ মার্টিন

1
@ গ্রেগমার্টিন আপনি ঠিক বলেছেন কবে কমনীয়তার কথা চিন্তা করে যখন 4 বাইট সংরক্ষণ করা যায়! :-) হয়ে গেছে
লুইস মেন্ডো

1
@ লুইসমেন্দো কোডগলফের সাথে যত কম খাটো, তা যতই কুৎসিত হোক না কেন। ;)
কেভিন ক্রুইজসেন

6

পাইথন পাইপং , 140 138 বাইট ব্যবহার করে

import png
f=lambda W,H,c,d,C:png.from_array([[[c,d][sum(abs(x-X+1j*(y-Y))<r for r,x,y in C)%2]for X in range(W)]for Y in range(H)],'RGB')

ব্যবহারের উদাহরণ:

W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
Circles = (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
f(W, H, C1, C2, Circles).save('test.png')

2 বাইট সংরক্ষণের জন্য xnor ধন্যবাদ।


কোড গল্ফ স্বাগতম! যদি একটি বৃত্তে একটি বিন্দু মিথ্যা চেক করার জন্য, এক কৌতুক জটিল আদর্শ ব্যবহার করতে হয়: abs(x-X+1j*(y-Y))<r
xnor

3

গণিত (প্রতিযোগিতামূলক)

(পিপিসিজিতে কীভাবে ল্যাটেক্স করবেন তা আইডিকে, সুতরাং আমি পিএনজি সরঞ্জামে একটি ল্যাটেক্স ব্যবহার করেছি)

ব্যাখ্যা

একাধিক বৃত্ত সমীকরণের পণ্য ( (x-a)^2+(y-b)^2-r^2)> = 0 একটি গ্রাফ তৈরি করবে যা এই প্রশ্নের প্রয়োজন। সমীকরণে, nঅ্যারের আকার এবং (x, y or r)_kএটি kথিম (x, y, or r)উপাদান।

উদাহরণ

(0,0,2),(2,2,2)

(ধন্যবাদ ওল্ফরামআল্ফাকে)

(ওল্ফ্রামআল্ফার অসমতার প্লট)

ওল্ফ্রামআল্ফার জন্য পান / চালান সমীকরণ পান

স্ক্রিপ্ট প্রাপ্ত: সম্পূর্ণ

চলমান স্ক্রিপ্ট: এখনও হয়নি

এখন এটি ম্যাথমেটিকাকে নিয়ে কাজ করুন ...


ভাবছি এটা বৈধ কিনা?
ম্যাথু রোহ

আপনাকে একটি নির্দিষ্ট পূর্ব-বিদ্যমান দোভাষীর তালিকা তৈরি করতে হবে যা আপনি যে ইনপুটটি দিয়েছিলেন তাতে ফর্মটি আউটপুট প্লট করতে পারে। এটি এতে বাইটগুলি গণনা করা সম্ভব করে তুলবে। বর্তমানে, বিষয়টি হ'ল এটি যে কোনও অনুবাদকের সাথে আবদ্ধ নয়, সমীকরণকে উপস্থাপন করার জন্য এটি একটি নির্দিষ্ট বিন্যাসের সাথে আবদ্ধ নয়, এবং এইভাবে স্বরলিপিটি অবজ্ঞাত এবং অবজেক্টিকভাবে গণনা অসম্ভব। চারপাশে সমীকরণের গ্রাফ প্লট করার জন্য প্রচুর প্রোগ্রাম রয়েছে, তাই এটি একটি সংক্ষিপ্ত ইনপুট ফর্ম্যাট সহ একটি সন্ধান করার চেষ্টা করা উচিত।

@ ais523 ওহ। আমি ওল্ফ্রামআল্ফার সাথে এটি কাজ করার চেষ্টা করব।
ম্যাথু রোহ

1

পাইথন 2.x, 166 158

import re;def f(W,H,c,d,C):print'P3',W,H,255,re.sub('[^0-9]',' ',repr([[d,c][sum([abs(x-X+1j*(y-Y))<r for r,x,y in C])%2]for Y in range(H)for X in range(W)]))

ফাংশনটি স্ট্যান্ডার্ড আউটপুটে একটি পিপিএম ফাইল উত্পন্ন করে।

উদাহরণ:

W = 300
H = 200
C1 = (255, 200, 0)
C2 = (128, 0, 255)
Circles = [(25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)]

f(W, H, C1, C2, Circles)

উদাহরণ


1

সাধারণ লিস্প + কুইল্লিস্প + জেডপিএনজি 260 + 20 = 280 চর

এটি আমি সিএল-তে লিখেছি এমন কিছু বিস্তৃত কোড, এবং যদি আমি একটি কোড গল্ফ না করতাম তবে এটি পড়ার পক্ষে আরও সহজ করার জন্য আমি এটি পুনর্গঠন করতাম ...

উপস্থাপনা (20 টি অক্ষর)

(ql:quickload 'zpng)

গল্ফড (260 টি চর)

(lambda(w h g b c)(make-instance'zpng:png :image-data(coerce(loop :for j :below h :nconc(loop :for i :below w :append(if(evenp(count t(mapcar(lambda(c)(<(abs(complex(-(cadr c)i)(-(caddr c)j)))(car c)))c)))g b)))'(array(unsigned-byte 8)(*))):width w :height h))

Ungolfed:

(পঠনযোগ্যতার জন্য পরীক্ষার অনুমতি দেওয়ার জন্য ডিফুন এবং দীর্ঘতর চলক নামগুলি ব্যবহার করে)

(defun mk-png (width height color1 color2 circles)
  (make-instance 'zpng:png
                 :image-data (coerce (loop :for j :below height
                                           :nconc (loop :for i :below width
                                                        :append (if (evenp (count t (mapcar (lambda (circ)
                                                                                              (< (abs (complex (- (cadr circ) i) (- (caddr circ) j)))
                                                                                                 (car circ)))
                                                                                            circles)))
                                                                    color1 color2)))
                                     '(array (unsigned-byte 8) (*)))
                 :width width
                 :height height))

ব্যবহারের উদাহরণ:

(let ((png (mk-png 300 200 '(255 200 0) '(128 0 255) '((25 50 80) (40 80 120) (300 -100 6) (17 253 162)))))
  (zpng:write-png png #p"path/to/file.png"))

Explaination

(lambda (circ)
   (< (abs (complex (- (cadr circ) i) (- (caddr circ) j)))
      (car circ)))

যদি বিন্দু (i, j) প্রদত্ত বৃত্ত বৃত্তের মধ্যে পড়ে তবে সত্যটি ফেরৎ দেয়। ইউক্লিডিয়ান দূরত্বটি জটিল সংখ্যার পরম মানকে গণনা করা হয় যা (i, j) থেকে বৃত্তের কেন্দ্রে ভেক্টরকে উপস্থাপন করে।

(evenp (count t (mapcar ___
                         circles)))

চেনাশোনাগুলির তালিকা জুড়ে ফাংশনটি মানচিত্র করুন এবং প্রদত্ত বিন্দু (i, j) এমনকি চেনাশোনাগুলির একটিও সংখ্যার মধ্যে পড়ে কিনা তা পরীক্ষা করে দেখুন।

(if ____
     color1 color2)

সেই পরীক্ষার ভিত্তিতে রঙ নির্বাচন করুন।

(loop :for j :below height
       :nconc (loop :for i :below width
                    :append ____))

ইমেজটিতে প্রতিটি (i, j) লুপ করে এবং ফলাফলের তালিকাগুলি একসাথে সংযুক্ত করে সমস্ত আরজিবি বাইটের সমতল তালিকা একত্রিত করুন।

(coerce ____
         '(array (unsigned-byte 8) (*)))

বাইটের সেই তালিকাটি বাইটের যথাযথ অ্যারে রূপান্তর করুন, তাই zpng এটিকে সঠিকভাবে আটকানো যেতে পারে।

(make-instance 'zpng:png
                :image-data ____
                :width width
                :height height)

Png অবজেক্ট তৈরি করুন।

(defun mk-png (width height color1 color2 circles)
   ___)

প্রস্থ, উচ্চতা, দুটি রঙ এবং চেনাশোনাগুলির তালিকা নিতে এবং তৈরি পিএনজি অবজেক্টটি ফিরিয়ে আনতে ফাংশনটি তৈরি করুন।


0

জাভাস্ক্রিপ্ট (ES6), 224 বাইট

আমি জেএস + এসভিজি সমাধানটি দেখেছি, তবে আমাকে কেবল একটি ক্যানভাস ভিত্তিক সমাধান তৈরি করতে হয়েছিল ;-) এটি এমন একটি ফাংশন যা একটি ক্যানভাস উপাদানকে ফেরত দেয়। যদি বিদ্যমান ক্যানভাস উপাদান সরবরাহ করা যায় তবে 40 বাইট অপসারণ করুন।

কল করুন f(width, height, [[r1, g1, b1], [r2, g2, b2]], [[r1, x1, y1], [r2, x2, y2], ...])

let f =
(w,h,a,c,O=document.createElement`canvas`)=>{O.width=w;O.height=h;C=O.getContext`2d`;for(y=0;y<h;y++)for(x=0;x<w;x++)C.fillStyle=`rgb(${a[c.filter(([R,X,Y])=>(X-x)**2+(Y-y)**2<R**2).length%2]})`,C.fillRect(x,y,1,1);return O}

let tests = A.innerHTML.match(/.+/g);
A.innerHTML = "";
for (let i of tests) {
  let p = document.createElement("span");
  p.innerHTML = "<br>" + i.slice(0, 3);
  p.style["font-family"] = "monospace";
  A.append(p);
  A.append(f(100, 60, [[255,0,0], [0,0,255]],
    eval(`[${ i.slice(3).replace(/\(/g, "[").replace(/\)/g, "]") }]`)
  ));
}
<div id=A>
A. 
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
</div>

উদাহরণ আউটপুট:

দ্বি বর্ণের চেনাশোনা


0

Löve2D , 353 বাইট।

o=love.graphics
a=arg
w,h,r,g,b,R,G,B=...c={}for i=9,#a,3 do
c[#c+1]={a[i],a[i+1],a[i+2]}end
C=o.newCanvas(w,h)o.setCanvas(C)o.clear(R,G,B)for k,v in pairs(c)do
o.stencil(function()o.circle("fill",v[2],v[3],v[1],9^3)end,"invert",1,true)end
o.setStencilTest("greater",0)o.setColor(r,g,b)o.rectangle("fill",0,0,w,h)local
C:newImageData():encode("png","c")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.