画像のすべての色に「1つ追加」


23

この画像を取得して、すべての色をすべての16進数に1つずつ追加します。例えば、#49de5fとなる#5aef60(と9にループa、およびfにループ0)。

カラー#49de5fカラー#5aef60

これはまた、すべてのループがに戻るため、すべての白(#ffffff)が黒(#000000)になることを意味しますが、すべての黒は黒の明るい色合い()になります。f0#111111

カラー#000000カラー#111111

これは問題であるため、スコアリングは使用される最小バイト数に基づいています。

以下の画像をコードの入力画像として使用し、コードの出力画像を回答に入れます。

入力画像

必要に応じて、この他の虹の画像を使用することもできます。

別のオプションの入力画像


ハードウェア/ FPGA設計用に設計されたプログラミング言語を使用したい場合、入力/出力形式についてどのような仮定ができますか?
モニカの復活-ζ--16年

@hexafractionデフォルトでは、ファイルまたは16進コードiircとして使用できます。
Rɪᴋᴇʀ


5
@Peanut、efバイトを含むテストケースを作成するとよいでしょう(17を追加してmod 256を取得する場合とf0は対照的になり00ます)。
マーティンエンダー

2
サンプル入力を提供するだけでなく、サンプル出力用の画像を投稿する必要があります。それ以外は、これは非常に素晴らしい最初の投稿です!サイトへようこそ!
DJMcMayhem

回答:


5

Pyke、17 13バイト

.Fh16j%ijcjs 8{

ここで試してみてください!

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

入力をピクセルの3D整数配列として受け取り、同じ形式で出力します

レインボーズ(ユニコーンなし:()


出力画像を提供できますか?
haykam

7

Mathematica、78バイト

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

画像オブジェクトを取得して返します(画像オブジェクトを作成するには、画像をMathematicaに貼り付けるだけです)。

テストケースの結果:

ここに画像の説明を入力してください

入力を取得し出力を整数チャネル値の3D配列として返すと、これは51バイトに減少します

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

しかし、これらのメタ投稿にはまだ圧倒的な量のサポートがありませんので、今のところ78バイトバージョンを使用します。


4

Verilog、220バイト:

  • プログラムは、入力をRGBピクセル値の配列として次元で取ることができます
  • プログラムは、寸法のあるRGBピクセル値の配列を介して出力できます

現在、ディメンションの提供方法と、配列を一度にストリーミングまたは提供するかどうかは明確ではありません。クロック信号(画像全体が処理された後にLowになる有効データフラグ)を使用して一度に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

Python、226バイト

今、それは有効です!

Pillowライブラリを使用します。

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バイトを節約してくれた@TuukkaXに感謝します!
18バイトを節約してくれた@ mbomb007に感謝します!


0xFF代わりに使用する必要があり255ますか?
Yytsi

@TuukkaXうーん、ありがとうございました
-TuxCrafting

もう一つがあり0xFF、そこに:D
Yytsi

と言うことでより多くのバイトを節約できると思いますfrom PIL import*。それImage.openopenその後すぐに変更できると思います。
Yytsi

@TuukkaXはい、変更できますが、変更from PIL import*できませんImage.open
-TuxCrafting

1

Dyalog APL21 15 バイト

プログラムは、RGBピクセル値のマトリックスとして出力できます。

出力は同じ形式である可能性があります。

新しい解は、値の行列[[ rgbrgb ]、[ rgb、…

16⊥16|1+16 16⊤⎕

説明

数値入力を取得
16 16⊤し、2桁の基数16に変換
1+1を加算、つまり0→1、1→
16|2、15 →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バイトのソリューションは、[["" RRGGBB "、" RRGGBB "]、[" RRGGBB "、…のマトリックスを取ります

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

Needs ⎕IO←0、これは多くのシステムでデフォルトです。

説明

{... 各RGB 6文字列を、として表し:そして行う
n←⎕D,⎕A割当「0 ... 9を... Zを」にn個
⍵⍳⍨の個々の文字のインデックスを見つけるN
1+、インデックスに1を加える、すなわち0→1,1→2、15→ 16
16|モジュラス16、つまり16→0
n[…これを]使用して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

C - 114 113 70 66 61の 72の 67バイト

コードは次のとおりです(Martin Enderのテストケースをサポートしています(60bなし))。

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

Java 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;
}

ゴルフ:

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;}

まずはPPCGにようこそ!あなたのコードゴルフのコードは、iパラメーターとforループの両方を使用するため、パラメーターをのようなものに変更します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;}。また、この投稿をご覧くださいJavaでのゴルフのヒント。:)
ケビンクルイッセン16

色を正しく設定していません。RGB値に0x111111を追加すると、ある16進数から次の桁にオーバーフローする可能性があります。たとえば、#49de5fは#5aef70ではなく#5aef60になるはずです。
kamoroso94

0

R、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.