একটি চিত্রের প্রতিটি রঙে "একটি যুক্ত করুন"


23

আপনি কেবল এই চিত্রটি নেবেন এবং প্রতিটি বর্ণকে প্রতিটি হেক্সাডেসিমাল ডিজিটের সাথে একটি করে যুক্ত করবেন। উদাহরণস্বরূপ, #49de5fহয়ে যাবে #5aef60( 9একটি afলুপিং এবং একটি এ লুপিং সঙ্গে 0।)

রঙ # 49de5fরঙ # 5aef60

এর অর্থ #ffffffহ'ল সমস্ত সাদা ( ) কালো হয়ে উঠবে ( #000000) কারণ সমস্ত fলুপগুলি আবার ফিরে আসে 0তবে সমস্ত কালো কালো রঙের হালকা ছায়ায় পরিণত হয় #111111

রঙ # 000000রঙ # 111111

স্কোরিংটি ব্যবহার করা সর্বনিম্ন বাইটের উপর ভিত্তি করে, কারণ এটি একটি প্রশ্ন।

নীচের চিত্রটি আপনার কোডের জন্য ইনপুট চিত্র হিসাবে ব্যবহার করুন এবং আপনার কোডের আউটপুট চিত্রটি আপনার উত্তরে রেখে দিন।

ইনপুট চিত্র

আপনি যদি চান, আপনি এই অন্যান্য রংধনু চিত্রটিও ব্যবহার করতে পারেন:

অন্য একটি .চ্ছিক ইনপুট চিত্র


আমরা যদি হার্ডওয়্যার / এফপিজিএ ডিজাইনের জন্য নকশাকৃত একটি প্রোগ্রামিং ভাষা ব্যবহার করতে চাই, তবে আমরা ইনপুট / আউটপুট ফর্ম্যাটটিতে কী অনুমান করতে পারি?
মনিকা পুনরায় ইনস্টল করুন - ζ--

@ হেক্সাফ্রাকশন আমি মনে করি ডিফল্টরূপে আপনি ফাইল হিসাবে বা হেক্স কোড আইর্ক হিসাবে নিতে পারেন।
আর


5
@ পানট, একটি টেস্ট কেস থাকা ভাল হবে যাতে efবাইটস অন্তর্ভুক্ত থাকে (যা যখন আপনি কেবল 17 যোগ করেন এবং 256 মোড নেবেন তখন এর f0বিপরীতে হওয়া উচিত 00)।
মার্টিন ইন্ডার

2
আপনার স্যাম্পল আউটপুট সরবরাহের পরিবর্তে নমুনা আউটপুট জন্য একটি চিত্র পোস্ট করা উচিত। তা ছাড়া এটি খুব সুন্দর প্রথম পোস্ট! সাইটে স্বাগতম!
ডিজেএমসিএমহেম

উত্তর:


5

পাইকে, 17 13 বাইট

.Fh16j%ijcjs 8{

এখানে চেষ্টা করুন!

.F            - for i in deep_for(input):
  h16%        -    (i+1)%16
          +   -   ^+V
      i16+    -    (i+16)
           8{ -  unset_bit(8, ^)

একই ফর্ম্যাটে পিক্সেল এবং আউটপুটগুলির 3 ডি পূর্ণসংখ্যার অ্যারের হিসাবে ইনপুট নেয়

রেইনবউজ (কোন এককর্ণ নয় :()


আপনি কি আউটপুট চিত্র সরবরাহ করতে পারেন?
হাইকমাম

7

গণিত, 78 বাইট

Image@Apply[16#+#2&,Mod[IntegerDigits[#~ImageData~"Byte",16,2]+1,16]/255,{3}]&

একটি চিত্র অবজেক্ট নেয় এবং রিটার্ন দেয় (একটি চিত্র অবজেক্ট তৈরি করতে, কেবল চিত্রটি ম্যাথমেটিকায় পেস্ট করুন)।

পরীক্ষার মামলার ফলাফল:

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

ইনপুট এবং রিটার্নিং আউটপুটটিকে পূর্ণসংখ্যার চ্যানেলের মানগুলির 3 ডি অ্যারে হিসাবে গ্রহণ করা হয় , এটি 51 বাইটে হ্রাস পায় :

Apply[16#+#2&,Mod[IntegerDigits[#,16,2]+1,16],{3}]&

তবে এই মেটা পোস্টগুলিতে এখনও অতিরিক্ত পরিমাণে সমর্থন নেই, তাই আপাতত আমি 78-বাইট সংস্করণ নিয়ে যাচ্ছি।


4

ভেরিলোগ, 220 বাইট:

  • প্রোগ্রামগুলি মাত্রা সহ আরজিবি পিক্সেল মানগুলির অ্যারে হিসাবে ইনপুট নিতে পারে
  • প্রোগ্রামগুলি মাত্রা সহ আরজিবি পিক্সেল মানের একটি অ্যারের মাধ্যমে আউটপুট দিতে পারে

এটি কীভাবে মাত্রা সরবরাহ করতে হবে এবং অ্যারেটি যদি স্ট্রিম করা বা একসাথে সমস্ত সরবরাহ করা হয় তবে তা বর্তমানে পরিষ্কার নয়। আমি একটি ঘড়ি সংকেত (পুরো চিত্রটি প্রক্রিয়াকরণের পরে কম যায় এমন একটি বৈধ-ডেটা পতাকা সহ) ব্যবহার করে একবারে এটি 8 টি বিট প্রবাহিত করতে যাচ্ছি এবং 32-বিট পূর্ণসংখ্যার হিসাবে মাত্রাগুলি ইনপুট / আউটপুট:

module a(input[31:0]w,input[31:0]h,input[7:0]d,input c,output[31:0]W,output[31:0]H,output reg[7:0]D,output reg v=0);assign W=w;assign H=h;reg[65:0]p=1;always@(posedge c) begin v<=(p<3*w*h); p<=p+v; D<=d+17; end endmodule

4

পাইথন, 226 বাইট

এখন, এটি বৈধ!

বালিশ লাইব্রেরি ব্যবহার করুন।

from PIL import Image
m=Image.open(input()).convert("RGB")
for y in range(m.size[1]):
 for x in range(m.size[0]):
    t=m.getpixel((x,y))
    h=t[0]+(t[1]<<8)+(t[2]<<16)+1118481
    m.putpixel((x,y),(h&255,h>>8&255,h>>16&255))
m.show()

আউটপুট:আউটপুট

9 টি বাইট সংরক্ষণের জন্য @ টুকুকএক্সকে ধন্যবাদ!
18 বাইট সংরক্ষণের জন্য @ mbomb007 ধন্যবাদ!


0xFFপরিবর্তে এটি ব্যবহার করা প্রয়োজন 255?
ইয়াতসি

@ টুক্কাএক্স ওউফস আমি লক্ষ্য করেছি না যে আপনাকে ধন্যবাদ
টাকসক্রাফটিং

সেখানে আরও 0xFFএকটি রয়েছে: ডি
ইয়াতসি

আমি মনে করি আপনি বলার মাধ্যমে আরও বাইট সঞ্চয় করতে পারবেন from PIL import*। আমি এটিও Image.openঠিক openপরে যে এটি পরিবর্তন করা যেতে পারে বলে মনে করি ।
ইয়াতসি

@ টুক্কাএক্স হ্যাঁ, এটিতে পরিবর্তন করা যেতে পারে from PIL import*, তবে আমি পরিবর্তন করতে পারি নাImage.open
টুকসক্রাফটিং

1

ডায়ালগ এপিএল , 21 15 বাইট

প্রোগ্রামগুলি আরজিবি পিক্সেল মানগুলির ম্যাট্রিক্স হিসাবে আউটপুট দিতে পারে

আমি ধরে নিই আউটপুট একই ফরম্যাটে হতে পারে।

নতুন সমাধানটিতে ম্যাট্রিক্স লাগে [[ r , g , b , r , g , b ], [ r , g , b ,…

16⊥16|1+16 16⊤⎕

ব্যাখ্যা

সংখ্যার ইনপুটটি
16 16⊤2-সংখ্যার বেস 16 তে রূপান্তর
1+করুন 1 যোগ করুন, অর্থাৎ 0 → 1, 1 → 2, 15 → 16
16|মডুলাস 16, অর্থাৎ 16 → 0
16⊥বেস 16 থেকে রূপান্তর করুন

উদাহরণ

      ⊢m←2 6⍴90 239 96 255 255 255 0 0 0 239 239 239
90 239 96 255 255 255
 0   0  0 239 239 239
      16⊥16|1+⎕⊤⍨2/16
⎕:
      m
107 240 113   0   0   0
 17  17  17 240 240 240

পুরানো 21 বাইট দ্রবণটি [["" আরআরজিবিবিবি "," আরআরজিবিবি "], [" আরআরজিবিবিবি ",… এর ম্যাট্রিক্স গ্রহণ করে…

{n[16|1+⍵⍳⍨n←⎕D,⎕A]}¨

প্রয়োজন ⎕IO←0, যা অনেক সিস্টেমে ডিফল্ট।

ব্যাখ্যা

{... প্রতিটি আরজিবি 6-গৃহস্থালির কাজ স্ট্রিং জন্য, যেমন প্রতিনিধিত্ব : কি
n←⎕D,⎕Aনির্ধারিত "0 ... 9a ... টু Z" এন
⍵⍳⍨ স্বতন্ত্র অক্ষরের সূচকের এটি এন
1+ সূচক এক যোগ, অর্থাত্ 0 → 1, 1 → 2, 15 → 16
16|মডুলাস 16, অর্থাৎ 16 → 0
n[… এটিকে ]সূচিতে এন ব্যবহার করুন

উদাহরণ

      f←{n[16|1+⍵⍳⍨n←⎕D,⎕A]}¨ 
      ⊢p←2 2⍴'5AEF60' 'FFFFFF' '000000' 'EFEFEF'
┌──────┬──────┐
│5AEF60│FFFFFF│
├──────┼──────┤
│000000│EFEFEF│
└──────┴──────┘
      f p           
┌──────┬──────┐
│6BF071│000000│
├──────┼──────┤
│111111│F0F0F0│
└──────┴──────┘

1

সি - 114 113 70 66 61 72 67 বাইট

কোডটি এখানে রয়েছে ( মার্টিন ইন্ডারের পরীক্ষার ক্ষেত্রে (এটি 60 বি ছাড়াই)):

main(c,b){for(;~(b=getchar());putchar(c++<54?b:b+16&240|b+1&15));}

এবং এখানে কম অপ্রকাশিত সংস্করণ:

main( c, b ) //Defaults to int
{
    //Get characters until EOF occurs
    //Copy first 54 bytes of header, later add 1 to each hexadecimal digit
    for ( ; ~( b = getchar( ) ); putchar( c++ < 54 ? b: b + 16 & 240 | b + 1 & 15 ) ); 
}

সংকলন এবং সাথে চালানো gcc -o color colorgolf.c && cat a.bmp | ./color > b.bmp

এই কোড সাথে কাজে সমর্থন বিটম্যাপpngফাইলগুলিতে রূপান্তর করতে bmp, আমি নিম্নলিখিত কমান্ডটি ব্যবহার করেছি:convert -flatten -alpha off png.png a.bmp

কোড অনুমান করে, যে bmpশিরোনামটি 54 বাইট দীর্ঘ - এই ক্ষেত্রে এটি কাজ করে তবে আমি নিশ্চিত নই যে আমি বিচক্ষণতার সাথে কিছু ভঙ্গ করছি না।

এছাড়াও, এটি রামধনু:
এটা এখন খারাপ লাগছে ... :(


1

জাভা 142 বাইট

public BufferedImage translateColor(BufferedImage image){
  for(int i=-1;++i<image.getWidth();)
    for(int j=-1;++<image.getHeight();)
      image.setRGB(i,j,image.getRGB(i,j)+1118481);
  return image;
}

Golfed:

BufferedImage t(BufferedImage i){for(int x=-1;++x<i.getWidth();)for(int y=-1;++y<i.getHeight();)i.setRGB(x,y,i.getRGB(x,y)+1118481);return i;}

সবার আগে পিপিসিজিতে স্বাগতম! আপনার কোড-গল্ফ কোডটি iপ্যারামিটার হিসাবে এবং লুপের জন্য উভয়ই ব্যবহার করে , তাই আমি প্যারামিটারটিকে অন্য কোনও মতো পরিবর্তন করব a। এছাড়াও, আপনি যা করতে পারেন গলফ এটি কিছু সরানোর দ্বারা আরো int সামনে jএবং এটি যোগ int i। সুতরাং এটি পছন্দ: BufferedImage t(BufferedImage a){for(int i=-1,j;++i<a.getWidth();)for(j=-1;++j<a.getHeight();)a.setRGB(i,j,a.getRGB(i,j)+1118481);return a;}। এছাড়াও, এই পোস্টটি একবার দেখুন: জাভা মধ্যে গল্ফিং জন্য টিপস । :)
কেভিন ক্রুইজসেন

আপনি রঙগুলি সঠিকভাবে সেট করছেন না। আরজিবি মানগুলিতে 0x111111 যুক্ত করে আপনার এক হেক্সাডেসিমাল জায়গা থেকে পরের অংশে ওভারফ্লো হওয়ার সম্ভাবনা রয়েছে। উদাহরণস্বরূপ, # 49de5f # 5aef60 না হয়ে # 5aef60 হওয়ার কথা।
kamoroso94

0

আর, 302 বাইট

নিখুঁত থেকে দূরে, কিন্তু এখানে যায়:

a<-as.raster(imager::load.image(file.choose()));l=letters;n=as.numeric;d=a;f=function(x){if(suppressWarnings(is.na(n(x)))){if(x=="F")"0" else{l[match(x,toupper(l))+1]}}else{if(x==9)"A" else as.character(n(x)+1)}};for(o in 1:90){for(g in 1:200){for(h in 2:7){substr(d[o,g],h,h)<-f(substr(a[o,g],h,h))}}}

ব্যাখ্যা:

a<-as.raster(imager::load.image(file.choose()));  //chooses file
l=letters;n=as.numeric;d=a;                      //shortens some names and creates
                                                   duplicate variable to modify

f=function(x){                                //creates a function that takes in a
   if(suppressWarnings(is.na(n(x)))){            character type and checks whether it is
      if(x=="F")"0"                              a number or letter.
      else{l[match(x,toupper(l))+1]}}            Returns the converted letter or number.                               
   else{                                   
      if(x==9)"A"                         
      else as.character(n(x)+1)}         
};                                      

for(o in 1:90){                       //loops through every single hex digit and applies
   for(g in 1:200){                     the converting function, modifying the duplicate
      for(h in 2:7){                    variable. Now you have 2 images =D

         substr(d[o,g],h,h)<-f(substr(a[o,g],h,h))

      }
   }
}

একটি সুন্দর রংধনু

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