ক্যামোফ্লেজ রঙ চ্যালেঞ্জ চ্যালেঞ্জ পরিবর্তন করছে


19

গিরগিটি প্রতিদ্বন্দ্বিতা আপাতদৃষ্টিতে একটি খারাপ জিনিস । খুব খারাপ, গিরগিটি হ'ল সুন্দর প্রাণী। পরিবর্তনের জন্য সময়!

একটি গিরগিরির ছবি

যেমনটি আমরা সবাই জানি, অনেকগুলি গিরগিটি তাদের ত্বকের রঙ পরিবর্তন করে পার্শ্ববর্তী অঞ্চলে মিশ্রিত করার একটি অসাধারণ ক্ষমতা রাখে। যা এই চ্যালেঞ্জের উদ্দেশ্যও।

চ্যালেঞ্জ

নয় পিক্সেলের বর্গ কল্পনা করুন। আট পিক্সেল চারপাশে হয়। কেন্দ্রে রয়েছে গিরগিটি।

এটার মত: একটি কেন্দ্র বর্গাকার চারদিকে আট ধূসর স্কোয়ার।

গিরগিটি প্রাকৃতিকভাবে তার চারপাশের সাথে মিশ্রিত করার চেষ্টা করে। এটি এর রঙকে পার্শ্ববর্তী পিক্সেলের গড়তে পরিবর্তন করে এটি করে। সুতরাং, এক্ষেত্রে গিরগিটিটি এর রঙ পরিবর্তন করে ধূসর

উদ্দেশ্য

আশেপাশের পিক্সেলের রঙ দেওয়া, গিরগিটির রঙ আউটপুট করুন।

গিরগিটির রঙ পিক্সেল red 8 এর সমস্ত লাল, সবুজ এবং নীল রঙের মোট হিসাবে সংজ্ঞায়িত।

ইনপুট

আটটি পার্শ্ববর্তী পিক্সেলের জন্য রঙের মানগুলির একটি অ্যারে, উপরে বাম দিক থেকে শুরু করে এবং ঘড়ির কাঁটার দিকে এগিয়ে চলছে:

[[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>]]

দশমিক সংখ্যার আট ট্রিপল সমন্বিত হওয়া অবধি আপনি অন্য কোনও আকারে ইনপুট গ্রহণ করতে চয়ন করতে পারেন।

আপনি যদি অন্য কোনও ফর্মের ইনপুট পান তবে সংখ্যাগুলি অবশ্যই একটি সামঞ্জস্য দৈর্ঘ্যের হতে হবে বা তাদের মধ্যে একটি সংখ্যাসূচক পৃথক থাকতে হবে। 9 টি সংখ্যায় 0-প্যাড না করা হলে ট্রিপলগুলির পৃথকীকরণের অক্ষর থাকতে হবে। (যেমন 044200255044200255044200255044200255044200255044200255044200255044200255বৈধ, ঠিক তেমন 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255এবং 44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255তবে 4420025544200255442002554420025544200255442002554420025544200255তাও নয়))

আউটপুট

কেন্দ্র পিক্সেলের রঙযুক্ত একটি অ্যারে / স্ট্রিং / ইত্যাদি (দশমিকায়), এর মতো:

[<red>,<green>,<blue>]

আপনি যদি অ্যারে ব্যতীত অন্য কোনও কিছু আউটপুট দেন: সংখ্যাগুলি অবশ্যই একটি সামঞ্জস্য দৈর্ঘ্যের হতে হবে বা তাদের মধ্যে একটি সংখ্যাসূচক পৃথক থাকতে হবে। (যেমন 044200255বৈধ, ঠিক তেমন 44 200 255, তবে 44200255তা নয়))

সংখ্যাগুলিতে দশমিক পয়েন্ট থাকতে পারে না, তাই উদাহরণস্বরূপ 44.0 200 255.0অবৈধ।

রাউন্ডইং

আউটপুট অবশ্যই নিকটতম পূর্ণসংখ্যার সাথে গোল করা উচিত। (অর্ধেক বৃত্তাকার আপ হবে।) যেমন, যদি সব লাল এর সমষ্টি 1620 , আপনি আউটপুট আবশ্যক 203, না 202বা 202.5

উদাহরণ

ছবি শুধুমাত্র চিত্রণ জন্য। মাঝের পিক্সেলটি আউটপুট, আশেপাশের পিক্সেলগুলি ইনপুট।

ইনপুট:

[[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200]]

আউটপুট:

[200,200,200]


ইনপুট:

[[0,0,0],[255,255,255],[0,0,0],[255,255,255],[255,255,255],[0,0,0],[255,255,255],[0,0,0]]

আউটপুট:

[128,128,128]


ইনপুট:

[[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,0]]

আউটপুট:

[83,125,103]


ইনপুট:

[[0,56,58],[65,0,200],[33,200,0],[60,33,0],[98,0,200],[0,28,220],[2,200,0],[99,0,5]]

আউটপুট:

[45,65,85]

জমাগুলি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন হতে পারে। স্ট্যান্ডার্ড আই / ও এবং লুফোলের বিধিগুলি প্রযোজ্য।



লিঙ্কনুন লিঙ্কটির জন্য ধন্যবাদ এই চ্যালেঞ্জের পক্ষে এটি আসলেই কিছু যায় আসে না, তবে ভবিষ্যতে আমিও যদি এরকম কিছু করতে পারি তবে তা মনে রাখব।
ব্যবহারকারী 2428118

9
মজাদারভাবে যথেষ্ট, আমি মনে করি এটি রাউন্ডিং পরিচালনা করার জন্য একটি গিরগিটি প্রশ্ন bit
xnor

"যতক্ষণ না এটি দশমিক সংখ্যার আট ত্রিগুণ 0-255 নিয়ে গঠিত" এটি বাইনারি হতে পারে? ইউনারী?
ফাঁস নুন

এছাড়াও, আমি কি এটি আগেই স্থানান্তর করতে পারি?
ফাঁস নুন

উত্তর:


8

এমএটিএল, 8 4 বাইট

YmYo

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

4 বাইট সংরক্ষণ করা হয়েছে বিকার ধন্যবাদ!

ব্যাখ্যা:

Ym          "Get the average of each column
  Yo        "And round up

পাইথনের অ্যারে সিনট্যাক্সের অপব্যবহারটি আমার পছন্দ হয়েছে! আপনি (অর্থাত্ কলামগুলি নীচে) s8/দিয়ে প্রতিস্থাপন করতে পারেন । এছাড়াও আপনি শুরু করতে ইনপুট নির্দিষ্ট করতে এবং এর থেকে মুক্তি পেতে সক্ষম হতে পারেনXmmean3 x 83e!
সুয়েভার

হ্যাঁ, YmYoএটি করা উচিত ... [[R,G,B];[R,G,B];...]আরজিবি সারিগুলির মধ্যে সেমিকোলনগুলির মতো ইনপুটটিও নিন।
বেকার

@ বেকার ওয়াহ! ধন্যবাদ!
ডিজেএমসিএমহেম

না Yoবন্ধন বৃত্তাকার আপ হচ্ছে বৃত্তাকার আপ, বা নিকটস্থ বৃত্তাকার? চ্যালেঞ্জ পরেরটি চায়।
জন ডিভোরাক

@ জানডভোরাক এটি নিকটতম পূর্ণসংখ্যার (চূড়ান্ত বা নীচে) matl.tryitonline.net/…
স্যুভার

11

পাইথন, 38 বাইট

lambda l:[sum(r)+4>>3for r in zip(*l)]

চক্রের গড় (নিকটতম পূর্ণসংখ্যা প্রতি, অর্ধেক আপ rounding সঙ্গে) সমষ্টি 4 যোগ করে, তারপর মেঝে-বিভাজক বিট-শিফট মাধ্যমে 8 >>3



4

সি, 151 123 103 91

আরজিবিআরজিবি ক্রমে প্রোগ্রামটিতে পাস হওয়া 24 টি প্যারামিটার প্রয়োজন ... এবং একটি নতুন লাইন ছাড়াই ট্রিপলেট আরজিবি আউটপুট দেয়।

i,t;main(c,v)char**v;{for(i=0;t=4,i++<3;printf("%d ",t/8))for(c=i;c<24;c+=3)t+=atoi(v[c]);}

main(c,v)char**v;{2 বাইট বাঁচাতে? সোর্স কোডে <3 এর জন্যও +1!
betseg



1

জে, 11 বাইট

0.5<.@++/%#

ইনপুটটিকে 8x3 অ্যারে হিসাবে নেয় যেখানে প্রতিটি সারিটি একটি আরজিবি মান

ব্যাখ্যা

0.5<.@++/%#  Input: a
          #  Count the number of rows
       +/    Sum along the columns
         %   Divide each sum by the count to get the averages
0.5   +      Add 0.5 to each average
   <.@       Floor each value and return

1

জাভাস্ক্রিপ্ট, 75 64 55 বাইট

a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>x+4>>3)

আপনাকে শুরু করার জন্য একটি জাভাস্ক্রিপ্ট উত্তর।

সম্পাদনা: সংরক্ষিত 11 ধন্যবাদ বাইট Dendrobium , এবং অন্য 9 ধন্যবাদ নিল


55 বাইট:a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>x+7>>3)
ডেন্ড্রোবিয়াম

@Dendrobium [[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,7]]উৎপাদ 83, 125, * 104 * পরিবর্তে 83, 125, * 103 * আপনার কোড সহ।
ব্যবহারকারী 2428118

আহ, প্রশ্নটি ভুলভাবে লিখুন, ভেবেছিলেন এটি করা উচিত ছিল ceil। 64 বাইট:a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>(x/8).toFixed())
ডেন্ড্রোবিয়াম

x+4>>3সঠিকভাবে গোল করা উচিত।
নিল

1

লিস্প - 180 179 বাইট

সম্পাদনা: আরও গল্ফিংয়ের জন্য ফর্ম্যাট করা।

(defun a(l)(/(apply #'+ l)(length l)))(defun r(a)(if(integerp(* a 2))(ceiling a)(round a)))(defun c(s)(mapcar(lambda(i)(r(sqrt(a(mapcar(lambda(x)(expt(nth i x)2))s)))))'(0 1 2)))

এটা সঠিক উপায়ে না , আমার ধারণা। অপরীক্ষিত।

  • a শুধু গড়
  • rএই চ্যালেঞ্জটি কি সঠিক গোলাকার, যেহেতু লিস্পটি roundনিকটতম সমান পূর্ণসংখ্যার জন্য রাউন্ড করে
  • cপ্রকৃত কাজটি করে, ফর্ম্যাটটিতে ইনপুট গ্রহণ করে '((R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B))এবং '(R G B)উত্তরের বিপরীতে একটি তালিকা ফিরিয়ে দেয়।

1

নিম , 134 126 115 108 78 বাইট

import math,future
x=>lc[(lc[x[j][i]|(j<-0..7),int].sum+4)shr 3|(i<-0..2),int]

একটি বেনামী পদ্ধতি সংজ্ঞায়িত করে, যার জন্য ইনপুটটি ডাবল-নেস্টেড ক্রম হিসাবে পাস এবং 3-উপাদান অ্যারে হিসাবে আউটপুটগুলির প্রয়োজন। পদ্ধতিটি কেবলমাত্র অন্য পদ্ধতির যুক্তি হিসাবে ব্যবহার করা যেতে পারে; পরীক্ষা করতে, নিম্নলিখিত মোড়ক ব্যবহার করুন:

import math,future
import strutils
proc test(x: seq[seq[int]] -> seq[int]) =
 echo x(#[ Insert your input here ]#)
test(x=>lc[(lc[x[j][i]|(j<-0..7),int].sum+4)shr 3|(i<-0..2),int])

একটি নিম ক্রম @সামনের মতো একটি অ্যারে @[1, 2, 3]। এই পদ্ধতির একটি ইনপুট তাই এই হতে পারে:

@[@[0,0,0],@[255,255,255],@[0,0,0],@[255,255,255],@[255,255,255],@[0,0,0],@[255,255,255],@[0,0,0]]


1

ফোর্থ (গফার্থ) , 65 বাইট

: f 3. do 8. do 3 j - i * 2 + roll loop 4 8. do + loop 8 / loop ;

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

স্ট্যাক আর্গুমেন্ট (আরজিবি অর্ডার) হিসাবে ইনপুট নেয়

ব্যাখ্যা

3 টি রঙিন চ্যানেলের প্রত্যেকটির জন্য:

  • সেই চ্যানেলের সমস্ত নম্বর স্ট্যাকের শীর্ষে সরিয়ে দিন
  • তাদের একসাথে যোগ করুন
  • 4 যোগ করুন (রাউন্ডিং পরিচালনা করতে)
  • 8 দ্বারা ভাগ করুন

কোড ব্যাখ্যা

: f            \ start new word definition
  3. do        \ start a counted loop from 0 to 2
    8. do      \ start a counted loop from 0 to 7
      3 j -    \ get the offset of the channel
      i * 2 +  \ get the absolute position of the channel value
      roll     \ move the value to the top of the stack
    loop       \ end the inner loop
    4          \ add 4 to the top of the stack
    8. do      \ loop from 0 to 7
      +        \ add the top two stack numbers
    loop       \ end loop. (Result on top of stack with be sum of values for channel + 4)
    8 /        \ divide by 8
  loop         \ end outer loop
;              \ end word definition

1

রুনিক এনেক্যান্টমেন্টস , 41 বাইট

>iRi+ i+ i+ i+ i+ i+ i+8,'rA' q$;
>iU
>iU

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

সঠিক ক্রমে ইনপুট পার্স করার জন্য 3 টি নির্দেশের পয়েন্টার ব্যবহার করে (ইনপুট মানগুলি সর্বদা ক্রমে থাকে RGB, RGB,...) এবং যতক্ষণ না তিনটি আইপি-র প্রত্যেকটি মার্জ হয় না, এবং পরবর্তী রিড iএনপুট কমান্ডে খুব তাড়াতাড়ি অগ্রসর হবে না (অতএব সমস্ত স্পেস), এটি কার্যকর হয় এবং অঙ্কগুলি গণনা করার জন্য উপরের উপরের সঠিক মান ধরে রাখার জন্য স্ট্যাকটি একটানা আবর্তিত করে এবং বাইটগুলি সংরক্ষণ করে ।

প্রযুক্তিগতভাবে এই কোডটিতে x.5কিছু ইনপুটগুলির জন্য সঠিকভাবে গোল করার মানগুলিতে একটি ত্রুটি রয়েছে তবে এটি সি # দ্বারা ব্যবহৃত ডিফল্ট রাউন্ডিং পদ্ধতির কারণে , যা উপরের দিকে না গিয়ে নিকটতম ইভেন্ট সংখ্যার সাথে গোলাকার এবং ভাসমান পয়েন্ট যথাযথতা হ্রাসের সমস্যার কারণে হয় , এবং এই উত্তরটি লেখার আগে এবং পরীক্ষার কেসগুলি পরীক্ষা করার আগে আমি এই বিষয়টি সম্পর্কে অসচেতন ছিলাম। এটি ভবিষ্যতে নির্মাণে ঠিক করা হবে , এই অনিচ্ছাকৃত ব্যতিক্রমের মতো আরও কয়েকটি জিনিস ।

ইতিমধ্যে, এই পরিবর্তনটি প্রয়োজনীয় সমন্বয় করে।

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