কীভাবে হেক্সে রঙগুলি কোড করবেন


15

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

এএসসিআইআইতে একটি আংশিক ষড়ভুজ টাইলিং দেওয়া (এসটিডিআইএন এর মাধ্যমে, কোনও ফাইল থেকে পড়া ইত্যাদি), এই রঙের সাথে মানিয়ে নিতে অক্ষরের রঙ পরিবর্তন করুন (এএনএসআই কোডগুলি, চিত্রের ম্যানিপুলেশন ইত্যাদির মাধ্যমে)। মোচড়টি হেক্সাগনগুলির মাঝখানে ( *নীচে,) তিনটি বর্ণ এবং এর মধ্যবর্তী রেখাগুলি তাদের দুটি একই হেক্সের *বর্ণের মিশ্রণ হওয়া দরকার । লাইনটি যদি বাইরের সীমান্তে থাকে তবে এটি সংশ্লিষ্টটির সাথে মেলে *

উদাহরণস্বরূপ, আংশিক ষড়্ভুজাকার টাইলিং দেওয়া

 / \ / \ / \ / \
| * | * | * | * |
 \ / \ / \ / \ /
  | * | * | * |
   \ / \ / \ /

মনে করুন আমরা উপরের-বাম হেক্সকে *লাল হিসাবে রঙিন করার সিদ্ধান্ত নিয়েছি এবং এর দুটি প্রতিবেশী নীল এবং সবুজ হয়ে আছে (ঘড়ির কাঁটার দিকে)। তারপরে |লাইনটি ম্যাজেন্টা হওয়া দরকার এবং /লাইনটি হলুদ হওয়া দরকার। যদি আমরা রঙিন রাখি, শেষ পর্যন্ত আমরা এর মতো কিছু দিয়ে যাব (স্পষ্টতার জন্য বর্ধিত):

ষড়ভুজাকার রঙিন 1

বা, একটি ইনপুট জন্য

     / \
    | * |
   / \ /
  | * |
 / \ /
| * |
 \ /

আপনি এটির মতো রঙিন করতে পারেন (স্পষ্টতার জন্য বর্ধিত):

ষড়ভুজাকার রঙ 2

কয়েকটি অতিরিক্ত পরীক্ষার কেস (আপনার কোডগুলি এগুলি পরিচালনা করতে সক্ষম হবে):

 / \ / \
| * | * |
 \ / \ /
  | * |
 / \ / \
| * | * |
 \ / \ /


 / \
| * |
 \ / \
  | * |
 / \ /
| * |
 \ /



 / \
| * |
 \ /

বিধি

  • ইনপুটটিতে কমপক্ষে একটি ষড়ভুজ থাকার নিশ্চয়তা রয়েছে এবং কোনও ইনপুটটিতে "গর্ত" থাকবে না।
  • আপনার রঙিন রঙ লাল রঙের সাথে শুরু করার দরকার নেই, যতক্ষণ আপনি ত্রি-বর্ণের নিয়ম বজায় রাখেন।
  • আংশিক টাইলিং যদি দ্বি-বর্ণযুক্ত হতে পারে তবে আপনি দণ্ড ছাড়াই এটি করতে পারেন (যেমন দ্বিতীয় উদাহরণ হিসাবে) - অগত্যা আপনাকে পুরো টাইলিংয়ের আংশিক টাইলিংয়ের এক্সট্রোপল্ট করার দরকার নেই।
  • ষড়ভুজ কেন্দ্রগুলি *অবশ্যই লাল, নীল বা সবুজ উভয়ের সাথে রঙিন হওয়া উচিত, তবে এর মধ্যে লাইনগুলি সায়ান, হলুদ বা ম্যাজেন্টা হতে হবে। উদাহরণস্বরূপ, কাছে একটা ম্যাজেন্টা *অনুমতি দেওয়া হয় না, এবং একটি লাল |বা \বা /অঙ্কন বাইরে সীমান্ত হওয়া আবশ্যক। রং দেখুন তালিকা।
  • আপনার কনসোলে যদি এই সঠিক রঙ না থাকে তবে দয়া করে নিকটতম কাছাকাছিটি ব্যবহার করুন এবং আপনি কোন উত্তরের ব্যবহার করছেন তা আপনার উত্তরে নির্দিষ্ট করে দিন।
  • শীর্ষস্থানীয় নিউলাইনগুলি সহ শীর্ষস্থানীয় বা পিছনের শ্বেত স্থানটি এতক্ষণ অক্ষরগুলি সীমাবদ্ধ থাকায় গ্রহণযোগ্য।
  • আংশিক টাইলিং স্পেস-প্যাডিংয়ের সাথে একটি আয়তক্ষেত্র গঠনের সাথে ইনপুট হতে পারে, যদি এটি আপনার কোডের পক্ষে সহজ করে তোলে।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরে আসতে পারেন।
  • আউটপুট কনসোল হতে পারে, একটি চিত্র হিসাবে সংরক্ষণ করা ইত্যাদি।
  • মান ফাঁক নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

রঙ এবং রঙের মিশ্রণ:

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

  • লাল (255,0,0)
  • সবুজ (0,255,0)
  • নীল (0,0,255)

সংমিশ্রণগুলি হ'ল:

  • লাল এবং সবুজ একত্রিত করে হলুদ তৈরি করুন (255,255,0)
  • নীল এবং সবুজ একত্রিত করে সায়ান তৈরি করুন (0,255,255)
  • লাল এবং নীল একত্রিত করে ম্যাজেন্টা তৈরি করুন (255,0,255)

আপনি একটি গর্ত সঙ্গে একটি পরীক্ষা কেস যুক্ত করতে পারেন দয়া করে? প্রথমটি (অতিরিক্ত) একের মতো, তবে মাঝখানের ছাড়াই*
এইচ.পি.ভিজ

যদি ইনপুট শেষে লাইন বা নিউলাইনগুলির শেষে অতিরিক্ত শ্বেত স্থান দেওয়া হয়, সেগুলি কী সংরক্ষণ করতে হবে?
হাইপারনিউট্রিনো

@ এইচ.পি.উইজ এমন পরিস্থিতি কখনই তৈরি হতে পারে না। এটি নিয়ে চিন্তা করার দরকার নেই।
অ্যাডমবর্কবার্ক

@ হাইপারনিট্রিনো না, এটি নিখুঁতভাবে আপনার সিদ্ধান্ত। ইনপুট / আউটপুট সাদা স্থান বিন্যাস এই চ্যালেঞ্জের আকর্ষণীয় অংশ নয়।
অ্যাডমবর্কবর্ক

ঠিক আছে. ধন্যবাদ। এছাড়াও, আমাদের কি কখনও খালি ইনপুট পরিচালনা করতে হবে?
হাইপারনিউটারিনো

উত্তর:


7

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

f=
s=>s.split`
`.map((b,i,a)=>b.replace(/./g,(c,j)=>`<font color=#${g=(x,y)=>((a[x+i]||``)[b=y+j]==`*`&&15<<b%3*4)|(y<0?8<<9:g(x,y-2)),(g(0,2)|g(-1,1)|g(1,1)).toString(16).slice(1)}>${c}</font>`)).join`
`
<input type=button value="Colourise!" onclick=i.innerHTML=f(i.textContent)>
<pre id=i contenteditable> / \ / \
| * | * |
 \ / \ / \
  | * | * |
 / \ / \ / \
| * |   | * |
 \ / \ / \ / \
  | * | * | * |
 / \ / \ / \ /
| * | * |
 \ / \ /</pre>

ব্যাখ্যা: প্রতিটি বর্ণকে fontতার রঙ নির্ধারণ করতে একটি ট্যাগে আবৃত করা হয় , যা প্রতিটি বর্গক্ষেত্রটি পরীক্ষা করে গণনা করা হয়, বর্গ এবং বামে দুটি থেকে বর্গ এবং আরও চারটি বর্গক্ষেত্র একদিকে দূরে, এর জন্য *এবং যদি তাই হয় তবে সমস্ত বর্ণের সংমিশ্রণ *গুলি পাওয়া গেছে। *রং কেবল গ্রহণ তাদের অনুভূমিক মডিউল 3 তুল্য এবং একটি বিট-মাস্কের উপযুক্তভাবে নাড়াচাড়া দ্বারা নির্বাচিত হয়। সম্পাদনা: সংরক্ষিত 2 থেকে সুইচিং দ্বারা বাইট #RRGGBBথেকে #RGBরং।


আপনার কোনও অভ্যন্তরীণ গর্ত হ্যান্ডেল করার দরকার নেই, যদি এটি কোনও পার্থক্য করে makes
অ্যাডমবর্কবার্ক

2
@ অ্যাডমবার্কবার্ক নং, আমি কেবল প্রদর্শন করছি।
নিল

"Colourise!" - আপনি এই ভুল বানান।
OldBunny2800

3
@ OldBunny2800 এটি আমার ভাষায় সঠিকভাবে বানান করেছে ...
নিল

2
@ OldBunny2800 আমেরিকান কেবলমাত্র বানান-সেট নয় যা বিদ্যমান। উদাহরণস্বরূপ এখানে রয়েছে ব্রিটিশ (ইংলিশ ইংলিশের সুপারস্টার), অস্ট্রেলিয়ান (যার কারণে নিউজিল্যান্ড অন্তর্ভুক্ত রয়েছে - সম্ভবত এটি অস্ট্রালাসিয়ান বলা উচিত) এবং কানাডিয়ান (এটি মার্কিন যুক্তরাষ্ট্রের বেশিরভাগ অংশের উত্তরে) রয়েছে।
wizzwizz4

4

জাভাস্ক্রিপ্ট (ES6), 210 বাইট (HTML + সিএসএস ব্যবহার করে)

আমার ক্যানভাস পদ্ধতির অনুরূপ ; *ইনপুট স্ট্রিংয়ে সমস্ত গুলি সনাক্ত করে এবং পৃষ্ঠায় হেক্সাগনগুলি একেবারে অবস্থানযুক্ত <pre>উপাদানগুলির আকারে লিখে । কারণ mix-blend-modeসেট করা আছে lighten, বর্ণগুলি ওভারল্যাপ হয়ে গেলে রঙ সংযোজন স্বয়ংক্রিয়ভাবে সম্পাদিত হয়।

s=>s.split`
`.map((r,y)=>[...r].map((c,x)=>c=='*'&&document.write(`<pre style=position:fixed;mix-blend-mode:lighten;line-height:1;left:${x}ch;top:${y}em;color:${['red','lime','blue'][x%3]}> / \\
| * |
 \\ /`)))


3

পাইথন 2 , 279 বাইট

e=enumerate
x=input()
c=[[i,j]for i,t in e(x)for j,_ in e(t)if"*"==x[i][j]]
C=[[j%3*([i,j]in c)for j,_ in e(o)]for i,o in e(x)]
for J,K in c:
	for i in-1,0,1:q=2-(i&1);_=C[i+J];_[K+q]=_[K-q]=_[K-q]|C[J][K]
for i,o in e(x):print"".join("[%dm"%(30+C[i][j])+x[i][j]for j,_ in e(o))

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

গল্ফড এবং ব্যবহারকারী 202729 স্থির ধন্যবাদ!
-২০
বাইটস মিঃ এক্সকোডারকে ধন্যবাদ -২৪ বাইট জনাথন ফ্রেচকে ধন্যবাদ



এছাড়াও 2-abs(i)রয়েছে 2-(i&1)এ প্রসঙ্গে 336 বাইট।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার দুর্দান্ত, ধন্যবাদ!
হাইপারনিউট্রিনো

আমি মনে করি \033যেতে পারে \33বা প্রকৃত (এক বাইট সঞ্চয় নয়) \x1bঅক্ষর ( তিন বাইট সংরক্ষণ )।
জোনাথন ফ্রেচ

1
@ OldBunny2800 আমি মনে করি এটি একই দৈর্ঘ্য। আপনি দুটি =এবং একটি ;জন্য দুটি ,এবং একটি পরিবর্তন =
wizzwizz4


1

এইচটিএমএল (ক্যানভাস) + জাভাস্ক্রিপ্ট (ES6), 13 + 251 = 264 বাইট

*ইনপুট স্ট্রিংয়ে সমস্ত গুলি সনাক্ত করে এবং সংশ্লিষ্ট অবস্থানে ক্যানভাসে একটি ASCII ষড়ভুজ রঙে। কারণ globalCompositeOperation='lighter', বর্ণগুলি ওভারল্যাপ করলে রঙ সংযোজন স্বয়ংক্রিয়ভাবে সম্পাদিত হয়।

এইচটিএমএল

<canvas id=c>

জাভাস্ক্রিপ্ট

s=>{c.width=c.height=s.length
with(c.getContext`2d`)font='1px monospace',globalCompositeOperation='lighter',s.split`
`.map((r,y)=>[...r].map((c,x)=>c=='*'&&[` / \\`,`| * |`,` \\ /`].map((t,i)=>fillText(t,x,y+i),fillStyle=['red','lime','blue'][x%3])))}

scale()দৃশ্যমানতার জন্য স্নিপেটে একটি গুণক এবং অতিরিক্ত কমান্ড যুক্ত করা হয়েছিল।

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


আমার সিএসএস-ভিত্তিক পদ্ধতিও দেখুন


আমি বিশ্বাস করি না যে এটি প্রয়োজনীয় আউটপুটটি পূরণ করে: https://i.stack.imgur.com/Pp3J0.png । ফরোয়ার্ড এবং ব্যাকস্ল্যাশগুলি হেক্সাগনগুলির বর্ণগুলির সংযোজনীয় সংমিশ্রণ হিসাবে বিবেচনা করা হবে যা তারা পৃথক নয়।
প্যাট্রিক রবার্টস

@ পেট্রিকরোবার্টস হুঁ, অসামঞ্জস্যপূর্ণ ফন্টের প্রস্থের (আমার কম্পিউটারে অবস্থানগুলি সঠিক) রয়েছে বলে মনে হচ্ছে। আমি আজ এটি পরে দেখা হবে।
darrylyeo

ওহ, আমি বুঝতে পারি নি যে এখানে একটি প্ল্যাটফর্ম ছিল যা সঠিক ছিল। আপনি যদি নিজের উত্তরটি স্ক্রিনশট দিয়ে আপডেট করেন তবে আমি আমার ভোটটি ফিরিয়ে দেব। উত্তরগুলির জন্য কমপক্ষে একটি প্রয়োগের জন্য কাজ করা দরকার, তাদের ক্রস-প্ল্যাটফর্ম হওয়ার দরকার নেই।
প্যাট্রিক রবার্টস

1

ম্যাটল্যাব / অষ্টাভে , 223 বাইট

a=input('')';s=size(a);p=zeros([s 3]);[i,j]=ind2sub(s,find(a=='*'));
for f=1:nnz(i)
p((-2:2)+i(f),(-1:1)+j(f),mod(f+~mod(j(f)/2,2),3)+1)=1;end
for f=1:nnz(a)
[i,j]=ind2sub(s,f);text(i/s(1),1-j/s(2),a(i,j),'Co',p(i,j,:));end

সামান্যতম কোডের বিন্যাসে:

a=input('')';                  %Grab input as 2D array
s=size(a);                     %Get input size
p=zeros([s 3]);                %Make empty colour matrix of matching size with RGB
[i,j]=ind2sub(s,find(a=='*')); %Find all *'s
for f=1:nnz(i)                 %For each *
    %Fill a 5x3 box centred at the * on the colour channel for this box
    %Overlapping regions between boxes will result in the correct mix.
    p((-2:2)+i(f),(-1:1)+j(f),mod(f+~mod(j(f)/2,2),3)+1)=1;
end
%Display as text on a figure
for f=1:nnz(a)
    [i,j]=ind2sub(s,f);
    text(i/s(1),1-j/s(2),a(i,j),'Co',p(i,j,:))
end

ইনপুটটি 2 ডি অ্যারে হিসাবে নেওয়া হয়, যেমন ইনপুটটির জন্য অনুরোধ জানানো হলে নিম্নলিখিতটি প্রবেশ করানো:

[' / \ / \ / \ / \ ';'| * | * | * | * |';' \ / \ / \ / \ / ';'  | * | * | * |  ';'   \ / \ / \ /   ']

ম্যাটল্যাব এখনও অবধি আমি অবগত যে কনসোলে রঙ আউটপুট দেওয়ার ক্ষমতা রাখে না (ময়লা জাভা হ্যাক বাদে আমি ছাড় দিচ্ছি)। যেমন আউটপুট পরিবর্তে একটি চিত্র মুদ্রিত হয়।

ইনপুটটিতে সমস্তের অবস্থান সন্ধান করে রঙ অর্জন করা যায় *এবং তারপরে একটি আরজিবি রঙিন অ্যারে ( p) এ, 1 এর একটি 5x3 বক্স (এমএটিএলবি রঙিন উপস্থাপনায় 255) এর কেন্দ্রিক লেখা হয়* । বাক্সটি প্রতিটি লাইনের সাথে মোড -3 সূচকের সাথে বর্ণযুক্ত রঙে লেখা হয়, এমনকি রঙের সূচকগুলিকে অফসেটের মাধ্যমে স্থানান্তরিত করে lines

এটি একটি রঙের ম্যাট্রিক্স উত্পাদন করে যেখানে ওভারল্যাপের যে কোনও বক্সের ফলে প্রয়োজনীয় মিশ্র রঙের ফলাফল ঘটবে। উপরের উদাহরণটি নীচের রঙের ম্যাট্রিক্স উত্পাদন করে।

রঙ ম্যাট্রিক্স উদাহরণ

সাদা এবং কালো অঞ্চলগুলি অপ্রাসঙ্গিক কারণ এই জায়গাগুলিতে একটি স্থান মুদ্রিত হয় যার অর্থ আমরা আসলে ভুল রঙটি দেখতে পাই না।

একবার রঙ ম্যাট্রিক্স তৈরি হয়ে গেলে, আমরা প্রতিটি বর্ণকে textকমান্ডটি ব্যবহার করে একটি চিত্রের উপরে প্রদর্শিত হবে, রঙের ম্যাট্রিক্সের সাথে সংশ্লিষ্ট লেখায় বর্ণের রঙ নির্ধারণ করি। উপরের উদাহরণটি প্রদর্শিত হবে:

নমুনা আউটপুট

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