灰色の50の色合い


92

銀色のスクリーンに灰色の50の色合いが表示されるのを見て、男の子と女の子は興奮しています。わずらわずにコーディングしたいので、ここで脳を選ぶのが挑戦です。

必ず:

  • それぞれが異なるグレーの陰影で満たされた50個の正方形を画面に印刷します
  • 選択した言語に画像処理機能がない場合、画像ファイルを出力できます
  • 少なくとも20 x 20ピクセルの正方形が表示されている必要があります
  • 各シェードが一意であることを確認しない限り、乱数を使用できません
  • ネットワーク経由でサービスに接続することはできません
  • プログラム内のファイルを読み取ることはできません。
  • 選択した言語の標準ライブラリ以外のライブラリを使用することはできません。

これはコードゴルフなので、最短のコードが勝ちます。


21
彼らは私たちを悩ませていましたか?
カルビンの趣味

6
異論:誤解を招くタイトル!
ジョージチャローブ

23
Pietの提出を確認できますか?
randomra

8
50階調のグレーコンテスト用に生成すると思っていた写真ではありません。
corsiKa

3
@randomraに尋ねると、次のメッセージが表示されます。codegolf.stackexchange.com
45736

回答:


24

MATLAB、24バイト

2回目の試行。現在は実際にルールに準拠しています。

imshow(0:1/49:1,'I',2e3)

「I」は「InitialMagnification」の略ですが、Matlabは名前と値のペアの名前をオートコンプリートするようです。確かに良いゴルフトリックです!

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


59

Mathematica、30バイト

以下は別のMathematicaアプローチです:

ArrayPlot[#+5#2&~Array~{5,10}]

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

または

ArrayPlot[5#+#2&~Array~{10,5}]

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

最初のものは単に配列を作成します

{{6, 11, 16, 21, 26, 31, 36, 41, 46, 51}, 
 {7, 12, 17, 22, 27, 32, 37, 42, 47, 52}, 
 {8, 13, 18, 23, 28, 33, 38, 43, 48, 53}, 
 {9, 14, 19, 24, 29, 34, 39, 44, 49, 54}, 
 {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}}

そして2つ目

{{6, 7, 8, 9, 10},
 {11, 12, 13, 14, 15},
 {16, 17, 18, 19, 20},
 {21, 22, 23, 24, 25},
 {26, 27, 28, 29, 30},
 {31, 32, 33, 34, 35},
 {36, 37, 38, 39, 40},
 {41, 42, 43, 44, 45},
 {46, 47, 48, 49, 50},
 {51, 52, 53, 54, 55}}

次に、ArrayPlotそれらをグリッドとしてプロットし、デフォルトでグレースケールを使用して値を視覚化します。


の素敵な使用ArrayPlot
DavidC

4
それは面白いです、MatrixPlotはデフォルトで色を使用しているようです。ArrayPlotがグレースケールを使用し、MatrixPlotより1文字短いことがこの挑戦にとって幸運です。
オマー

できますがArrayPlot@{Range@50}、これはわずか20バイトです。
チップハースト

@ChipHurstを実行すると、デフォルトのサイズが20x20ピクセルの要件を満たすには小さすぎます。
マーティンエンダー

36

CJam-23(実際のグラフィック出力なし)

CJamは画面上に描画できないので(まだ?)、プレーンpgm形式で画像を出力するプログラムを作成しました。
出力を50.pgmというファイルに保存し、画像ビューアー/エディターで開きます。

"P2"1e3K51_,1>K*$K*~]N*

オンラインで試す

結果は次のようになります。

50.png

説明:

"P2"     push "P2" (netpbm magic number)
1e3K     push 1000 and K=20 (image size)
51       push 51 (value of white)
_,       duplicate 51 and convert to an array [0 1 2 ... 50]
1>       remove 0 (slice from 1)
K*       repeat the array 20 times
$        sort, to get [(20 1's) (20 2's) ... (20 50's)]
K*       repeat the array 20 times
~        dump the elements on the stack
]        put everything from the stack in an array
N*       join with newlines

3
幸せになると要素が増えます!?
Caridorc

7
数値を含む配列の@Caridorc、はい。そして、悲しいことはそれらを減少させます:p
aditsu

PGMの仕様に従っていません:No line should be longer than 70 characters.
kiwixz

@iKiWiXz更新
aditsu

1
@iKiWiXzするべきではない 行はそれよりも長くなる可能性がありますが、PGMイメージを生成するプログラムは、それらを70文字未満に維持しようとする必要があります。
FUZxxl

30

Mathematica 72 61 59 43 35 34バイト

現在のバージョン(34バイト)

GrayLevel[#/50]~Style~50 &~Array~50    

grid2


以前のバージョン(59バイト)、MartinBüttnerに感謝します。

Graphics[{GrayLevel[#/50],Cuboid@{#~Mod~9,#/9}}&/@Range@50]

正方形の位置を強調するために追加された青い境界線

Graphics[{EdgeForm[Blue], GrayLevel[#/50], Cuboid@{#~Mod~9, #/9}} & /@Range@50]

青

正方形の数:

    Length[%[[1]]]

50


最初の試行(72バイト)

正方形が重なる可能性がある場合。Zgarbが指摘しているように、ある正方形が別の正方形を隠す可能性はほとんどありません。

  Graphics@Table[{GrayLevel@k,Cuboid[{0,15}~RandomReal~2]},{k,.4,.89,.01}]

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


原則として、1つの正方形が別の正方形を完全に覆い、50未満しか見えないのではないかと推測しています。
ズガルブ

2
間違いなく最も審美的に楽しい答え。
ダン

30

セイジ- 26の 24 35 29文字

matrix(5,10,range(50)).plot()

次のようになります。

グレーの5x10シェード

以前の試み:最初にしてMatrix([range(50)]).plot()、それからmatrix_plot([range(50)])。これらは次のように見えました。

グレーの50階調

ユーザー@flawrは、デフォルト設定で作成された正方形が小さすぎることを指摘しました。figsizeオプションを追加すると修正されますが、この回答の上部にある5x10バージョンよりも6文字長くなります。

matrix_plot([range(50)],figsize=20)

51の陰影のように見え、正方形は20x20pxより小さいように見えますが、プログラムで作成したときに大きくなりますか?
フレイ

余分な出力が禁止されているとは思わない、@ flawr、フレーム、目盛り、数字の削除も気にしませんでした。あなたは正方形が小さすぎることについて正しいかもしれません、私はチェックします。
オマー

ああ!@flawrが正しいのは、正方形が20px x 20pxより小さいことです。
オマー

余分な出力は禁止されるべきだと思います。質問は「50以上」ではなく「50」を指定します。
ジョー

1
@Joe、あなたはフレームとフレームの外側の数字に反対ではなく、正方形の数にだけ反対していることを正しく理解していますか?その場合は、50を49に置き換えてください。-
オマー

23

R、47 42 39 38 37 36 35バイト

それらが重複することが許可されていると仮定すると、これは機能します。Symbols各正方形のサイズを保持するベクトルが必要です。すべての関数パラメーターに同じベクトルを再利用することでスペースを節約しています。最大の正方形の幅は常に1インチです。整数の範囲が50:99の場合、最小の正方形の幅は約0.5インチになるため、72 dpiで36ピクセルになります。

symbols(x,,,x<-50:99,bg=gray(x/99))

コメントと提案をしてくれたみんなに感謝します、私はRにかなり新しいので、これはすべて非常に教育的です。

新しくなり改善された?

以前のバージョン:

symbols(x,sq=x<-50:99,bg=gray(x/99))            #36
x=50:99;symbols(x,sq=x,bg=gray(x/99))           #37
x<-50:99;symbols(x,sq=x,bg=gray(x/99))          #38
x<-1:50;symbols(x,sq=x/x,bg=gray(x/50))         #39
x<-1:50/50;symbols(x,sq=x/x,bg=rgb(x,x,x))      #42
x<-1:50/50;symbols(x,squares=x/x,bg=rgb(x,x,x)) #47

前の画像: Rの50の色合い


いくつかのより多くを救うことができるsymbols(x<-50:99,sq=x,bg=gray(x/99))
MickyT

マイナス2!@MickyTに感謝します。すでに完了していると思いました。
freekvd

1
@freekvd一般的には、関数内で引数にアクセスする順序に依存します(引数は遅延評価されるため)。これをテストするにはf = function (a, b) { a; b}、を呼び出してから呼び出しf(x <- 5, x)ます。これは期待どおりに機能します。fの定義(およびrm(x))の引数を逆にすると、機能しなくなります。
コンラッドルドルフ

1
評価はsq = xから始まるように見えるので、これで別の文字を削除できます。ありがとう@KonradRudolph
freekvd

1
1バイトsymbols(x,,,x<-50:99,bg=gray(x/99))
削減-Vlo

21

Java-180

とても簡単で、ボックスを描くだけです。

import java.awt.*;void f(){new Frame(){public void paint(Graphics g){for(int i=1;i<51;g.setColor(new Color(328965*i)),g.fillRect(i%8*20,i++/8*20,20,20))setSize(600,600);}}.show();}

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

改行あり:

import java.awt.*;
    void f(){
        new Frame(){
            public void paint(Graphics g){
                for(int i=1;
                    i<51;
                    g.setColor(new Color(328965*i)),
                    g.fillRect(i%8*20,i++/8*20,20,20))
                    setSize(600,600);
            }
        }.show();
    }

最後のボックスが技術的に白であることに反対する人がいる場合は、色の乗数を263172に変更するだけです。同じバイト数であれば、このように見えると思います。
ジオビット

私はあなたにも使うことができると思うint i;の代わりにint i=1が、その後使用++iの最初の使用でiはなく、i++最後の出現で、2つのバイトを保存します。ところで:私はあなたがなくてもJavaプログラム 作成できることを知りませんでしたclass MyClass ... public static void main(...
flawr

@flawrいや、Javaはローカル変数をデフォルト値に初期化しません。関数の外に移動するとうまくいくかもしれません。代わりに完全なプログラムを提供している場合は、そのようにしてみます(これは単なる機能であり、必要なインポートです)。ありがとう、:)
Geobits

2
@flawrそれが完全なプログラムである場合、はい、あなたはそれを必要とするでしょう。質問では指定されていないため、これは単なる関数です。
ジオビット

1
@AJMansfield私は知っていますが、別の言語の処理を検討しており、Java Javaでゴルフをするのが好きです。
ジオビット

17

BBC BASIC、57

FORn=51TO2STEP-1VDU19;-1,n,n,n:RECTANGLEFILL0,0,n*20NEXT

正方形は少なくとも 20ピクセルである必要がありますが、同じサイズでなければならないということはありません。

より低レベルのVDUコードを使用することで、これを短縮できる場合があります。ただし、このパターンからあまり面白くないものに変更しても、短くなることはありません。

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


2
BBC Basicの略語を覚えていますか?F.、N.、S.、V。-> F.n=51TO2S.-1V.19;-1,n,n,n:RECTANGLEFILL0,0,n*20N.
SeanC

@SeanCheshire bbcbasic.co.uk/bbcwin/bbcwin.htmlはこれらの略語をサポートしているので、チェックするつもりはありませんでした!方法は50としてカウントされます。トークン化されたファイルサイズは41バイトです(各キーワードはASCII範囲外の単一バイトにトークン化されます)が、その方法はあまりカウントしません。今後もあなたのヒントを使用します!
レベルリバーセント

17

ipython 2、54バイト

私ができる最善のことは、ipythonプログラムでした。ipython -pylabこのプログラムでipythonを起動して実行すると、50個の正方形に50個の灰色の陰影を持つグラフが表示されます。

t=arange(50);c=t/50.;scatter(t%5,t,500,zip(c,c,c),'s')

出力:

grey50

解決策2:

別のプログラム(61バイト)は次のとおりです。

imshow(arange(50).reshape(5,10)*.02,'Greys',None,1,'nearest')

次のウィンドウが表示されます。

grey50b


1
ただし、ipythonは言語ではなく、使用したのは外部ライブラリであるPythonライブラリmatplotlibです。
ステファノサンフィリッポ

15

JavaScriptを(7270、67バイト)

72:オリジナル(Sphinxxxの答え&#9632;から巧妙な使用法を借りる):

for(i=90;i>40;)document.write('<font color=#'+i+i+i--+' size=7>&#9632;')

70:Ismael Miguel(投票に値する)から恥知らずに盗み、短いforループを使用して、ブラウザが#のカラーコードを進めないことを修正できるようにします...

for(i=60;--i>9;)document.write('<font color='+i+i+i+' size=7>&#9632;')

67バイト(65文字):ユニコード文字のエンティティを交換します:

for(i=60;--i>9;)document.write('<font color='+i+i+i+' size=7>■')


から始めるべきだと思いますi=51。正しく数えた場合、49マスしかありませんか?
flawr

1
私はあなたの答えが本当に好きです!親愛なる主よ、なぜ私はそれについて知らなかったのですか?これで+1!これをこれにfor(i=0;i++<50;)document.write('<font color=#'+i+i+i+' size=7>&#9632;')似たものに減らします。未テストですが、動作する可能性があります!
イスマエルミゲル

1
あなたは私から盗んでいるので、少なくとも適切に盗んでください。#文字を削除して、長さ70バイトのソリューションにします。
イスマエルミゲル

1
私はちょうどそれをお勧めしようとしていました。デフォルトではバイトをカウントしますが、Unicode文字はバイト数が少ないため使用する必要があります。
NinjaBearMonkey

1
質問はちょうど 50個の正方形を言っていましたか?:)(他のソリューションも余分なものを描画します。)それとUnicodeリテラル、for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')最小65バイト(63文字):-しかし、少なくとも私のブラウザーのデフォルト設定(OSX / Chrome)では、ボックスは20x20より少し小さいですとにかくピクセルなので、これらのベースのソリューションは疑わしいです。
tuomassalo

13

C ++、98 83文字

さて、本当の色をサポートするターミナルエミュレータが必要になります。Mac OSの場合、たとえばiTerm2のナイトリービルドがあります。UNIXの場合、konsoleがサポートしていると思います。念のためリストを次に示しますhttps : //gist.github.com/XVilka/8346728#now-supporting-truecolor

g ++でコンパイルします(\ eはコンパイラに依存します)。

正方形に十分な領域を確保するには、端末のフォントサイズを変更する必要があります。

#include <cstdio>
int main(){for(int i=51;i--;)printf("\e[48;2;%i;%i;%im ",i,i,i);}

C ++の代わりにCライブラリを使用すると、一部の文字を削ることができます。

C、61 58文字

これは同じプログラムですが、Cでは、型指定されていない関数宣言がintを返すことを前提とし、この場合のprintfなどの標準ライブラリ関数の一部を含める必要はありません。@cartographerによって提案されました。@ user3601420のおかげで3文字少ない

main(i){for(i=51;i--;)printf("\e[48;2;%i;%i;%im ",i,i,i);}

いくつかの警告を伴ってコンパイルします(mainの戻り値の型がintであると想定し、printfの宣言を暗黙的に含めるため)。


2
これをCに切り替えると、include intをmainの前にドロップし、gccで警告を2、3回出してコンパイルすることができます。
地図製作者

はい、しかしそれは別の言語になります。とにかく、追加します、ありがとう!
ロルク

1
次のようにi、mainの最初の引数を作成すると、Cバージョンからいくつかの文字を削除できますmain(i){for(i=51;i--;)printf(...
。– Functino

標準にするために追加する文字は1つだけです。\e\33
Holger

これはコードゴルフです!
ロルク

11

Python 2、125 115 104バイト

from turtle import*
shape("square")
bk(500)
ht()
pu()
exec'color((xcor()/2e3+.5,)*3);stamp();fd(21);'*50

サンプル出力:

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

古き良きカメ。これは、標準ライブラリのみを使用して画像を画面に出力するPythonで考えられる唯一の方法でした。

角カメの形はたまたま21 x 21であり、非常に便利です。これは、以下を掘り下げることで確認できますturtle.py

"square" : Shape("polygon", ((10,-10), (10,10), (-10,10), (-10,-10)))

高解像度モニターを使用している場合、またはいくつかの正方形が画面外にあることを気にしない場合、これは93バイトです

from turtle import*
shape("square")
ht()
pu()
exec'color((xcor()/2e3,)*3);stamp();fd(21);'*50

デモ

(このデモでは、ここにあるスニペットを調整してSkulptを使用します。これは、コードが何をするのかを理解するためにのみ含まれています。


ああ、skulptが更新されたことに気付いた。このおかげで、おそらくスニペットを更新するために使用します。
ArtOfCode

11

J(43 41 40 38 33 29文字)

randomraからの提案の後。

1!:2&4'P2 ',":(,*:,],*:#?~)50

Jの標準ライブラリにはGUIルーチンが含まれていないため、このソリューションでは何も表示されません。代わりに、イメージを生成して標準出力に書き込みます。出力はランダム化され、すべてのシェードが明確になります。いくつかのサンプル出力と、画像をpngに変換し、見やすくするために90°回転したものを次に示します

グレーの50階調


5050 * 50の正方形を使用してヘッダーから生成されたパーツにプッシュすると、1バイトを節約できます1!:2&4'P2 50 2500 ',":(,*:#i.)50
randomra

それはきちんとしたアイデアです。
-FUZxxl

さらに:すべての数字1!:2&4'P2 ',":(,*:,],*:#i.)50を29文字でプッシュします!Btw plotは標準のJライブラリの一部ではありませんか?
-randomra

@randomra plotは、パッケージマネージャーからダウンロードできる補助パッケージの1つです。私はそれを標準ライブラリの一部とはほとんど思わないだろう。
-FUZxxl

10

Excel vba、81

イミディエイトウィンドウで:

for i=1 to 9:for j=1 to 9:k=i+j*10:cells(i,j).interior.color=rgb(k,k,k):next:next

アクティブシート上:

81の色合いは50と同じくらい多くのコードです

{81色合いは50と同じくらいのコードです}


さて、「50」を正確に50と解釈する人もいます。その場合、81 = 9 * 9を取得するよりも50 = 10 * 5を取得する方がおそらくもう1文字多くなります。
オマー

@Omar、5から9まで0と1が正確に50文字の同じ数のを生成します....また、これは私が同じバイト数では、あまりにも続編を書くことができることを意味- 0〜9倍
SeanC

1
ああ、0から9!私はのためにと思ったcells(i,j)あなたが必要i>0j>0
オマー

@Omar、いまいましい、あなたは正しい。ゼロを使​​用できませんでした
SeanC

1
少し短く(61)For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
OldCurmudgeon

8

R3732文字1

image(t(1:50),c=gray.colors(50))

ただし、これの表示は…meh(テキストに合わせて90°回転した画像、圧縮された元の正方形の辺の長さ> 20px)に見えます。

退屈な

これは、マトリックス(50文字)内にランダムな順序で正方形をプロットするより良いバージョンです。

image(matrix(sample(1:50),10),c=gray.colors(50))

エキサイティング!

(そして、はい、一見同一の色の3つの隣接する正方形は、実際には3つの異なる灰色の色合いです。)

1はい、別のRの回答、最短でもない(現在Rの最短)–謝罪。Rのきれいなレンダリングがありませんでした。


1
アスペクト比をどのように修正しましたか?
koekenbakker

?基本的に2番目のバージョン@ 37image(matrix(1:50,5),c=gray(1:50/51))
Vlo

@koekenbakker修正されていません。出力ウィンドウを手動で調整しています。それは完全ではありませんが、コード特定のウィンドウに対して正方形を生成します。また、他のコードには同様の問題があります。
コンラッドルドルフ

8

Matlab 35、sanchisesに感謝

imshow(int8(ones(20,1)*(0:.05:51)))

Matlab 36

imshow(uint8(ones(20,1)*(0:.05:51)))

グレー値1〜50で塗りつぶされた50の正方形と、グレー値0と51で塗りつぶされた2つの追加の四角形を表示します。

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

Matlab、45

imshow(uint8(ones(20,1)*floor(1:0.05:50.95)))

uint8の代わりにint8を使用することで、なんと1バイトを削ることができます。
-Sanchises

sanchisesのソリューションの方が優れています!
Memming

@Memmingそれはいくつかのあいまいな(文書化されていない?)機能に依存します。
ステフェンの功績を称えて

@TheBestOne / JaBe:あなたの答えは、正方形を表示しないため実際には機能しません。Steffenはint8を使用して、1000程度の値を50平方に丸めます。
-Sanchises

7

JavaScript、87 90バイト

for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')

これは実際にはJavaScriptのグラフィカル出力の唯一の方法であるため、HTMLに正方形を出力します。3バイトを削るedc65に感謝します。


1
3バイトを保存:for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')。グレーは一意ではないため、1桁の数字を使用できません(#111#111111と同じ色)
-edc65

他のユニットを使用できます。1cmまたは、1 9mmがより適切で、より広くサポートされます。バイト数を変更せずに。
イスマエルミゲル

7

PHP、96 88 74バイト

22バイトを節約してくれたIsmael Miguelに感謝します!

for($i=60;--$i>9;)echo"<p style=background:#$i$i$i;height:9mm;width:9mm>";

<p>高さと幅が9mmで50 秒(ほとんどの画面で20pxより大きくする必要があります)を書き込み、互いに積み上げます。すべて日陰がわずかに異なります。

生成された結果(画像はズームアウトされ、90°回転されます):

結果


7

Matlab-33バイト

surf(meshgrid(1:7)),colormap gray

詳細なコマンドにもかかわらず、結果は依然として非常にコンパクトです。に置き換えるsurfと少し良くなりますsurfaceが、3文字かかります。

あなたが50番目の灰色の正方形に気づかないなら、それは他のものより少し大きいからです!


使用してくださいndgrid!(2バイト少ない)。そして、各正方形は異なる灰色ですか?
ルイスメンドー

7

Javascript(77 71バイト):

この回答はIE11ベースではなくなりました。これは、ブラウザが不良な色コードを使用可能なものに変換するためです(#番号に追加することにより)。

コードは次のとおりです。

for(i=59;i-->9;)document.write("<hr color="+i+i+i+" size=20 width=20>")

Firefoxにはまだ輪を作るという癖があります。

(小さな編集:52個の正方形を生成for(i=61;i-->9;)するfor(i=59;i-->9;)ために変更されました)


古い答え:

これは私のPHPの回答に基づいておりほぼ同じ方法で正方形を作成します:

for(i=51;i--;)document.write("<hr color=rgb("+[i,i,i]+") size=20 width=20>");

最短の答えではありませんが、ここに追加する価値があります。


このソリューション、Chrome(複数の緑の色を生成する)およびFirefox(同じ結果ですが、円を生成しますか?oO WTH?)と互換性がありません

これはコードゴルフであるため、特定のバージョンまたは特定のソフトウェアで動作するソリューションは受け入れられます。


2
私だけかもしれませんが、このコードスニペットを実行すると、ほとんどが緑と青の円になります。@MartinBüttnerがこのコメントに私を打ち負かしたので、私だけではありません...
MrLemon

@MrLemonクロムはRGBを好まないと思います-.-しかしIE11では動作します。私はクロスブラウザソリューションを作成しようとしていないので、これは受け入れられます。これを答えに追加します。
イスマエルミゲル

@IsmaelMiguelそれは大丈夫だと思います。しかし、わかりやすくするために、私は今FFにいます。IE11でも動作することを確認できます。
MrLemon

@MrLemon IE11で動作します。家で試したので。必要に応じて、印刷画面を提供できます。Firefoxはそれで円を描きます。どのようにf#$%ingのアイデアがありません。元に戻す方法はありません。IEにはFirefoxではなく癖があると思っていました。
イスマエルミゲル

Firefoxは<hr>、おそらくより滑らかに見えるように、の両端に半円を配置しているようです。色がどうなるかについての手がかりはありません。とにかく私を困惑させるために私の+1を持っています。
MrLemon

7

ピート-2 * 103 = 206

これは、ソースコードと出力が課題を満たすという点でユニークです。

ピート

ほとんどは装飾的なものなので、上から2行だけを数えました。他のいくつかが行ったようなグレースケールppmを出力します。


6

JavaScript-70バイト

for(i=51;i-=1;)document.write('<a style=opacity:'+i/50+'>&#9632;</a>')


6
ボックスサイズが20ピクセルより小さい
-edc65

1
次に、ブラウザのフォントサイズを調整する必要があります;)
Sphinxxx

1
font:3em aまたはを使用する必要がありfont-size:3emます。私は箱の大きさのためにこれを支持しています。あなたが修正するまで。
イスマエルミゲル

3
i--代わりに使用できますi-=1
flawr

1
<b>タグを使用できます。テキストが黒であることを確認する以外は、コードを変更しません。これは必須ではありませんが、良いアイデアかもしれません。
イスマエルミゲル


6

PHP(62 60 63 72 71 62 59バイト):

私は見つけることができる最短を作りました:

for($i=59;$i-->9;)echo"<hr color=$i$i$i size=20 width=20>";

これは、Javascriptの回答まったく同じコード(71バイト)です。

しかし、とても短い!

これは、Firefoxに癖があります:正方形の代わりに、Firefoxは円を作ります!(狂気に
なろう!)それ以外の場合、すべてのブラウザーは正しい属性を生成します(属性が欠落#してcolorいても)。


無効な送信と変更ログ

62バイトの古い答え。

while($i++<51)echo"<hr color=rgb($i,$i,$i) size=20 width=20>";

すべての色合いは完全に揃っています。

このソリューションは、(はいオブジェクト指向、円を作るクローム(複数の色で四角形を生成します)とFirefoxのために動作しません<hr>!水平ルーラーは、Firefoxの円です!)。
IE11でテストでき、問題ないはずです。


(上から単に削除)

私はひどいことに気づきました:それはいくつかの色の#111代わりに出力#010101していました。

これは、いくつかの色が繰り返されることを意味しました。

したがって、数バイトを犠牲にしなければなりませんでした。

<?while(f>$c=dechex(65-$i++))echo"<hr color=#$c$c$c size=20 width=20>";

明るいものから暗いものまで完璧な順序で50の色合いを出力します。

@ edc65によって作成された正しい点のwidth=20ため、完全な正方形を作成するために追加する必要がありました。

に置き換えることf!=$cでもう1バイト削減されf>$c、完全に機能します。


最終バージョン、なしwidth=20

<?while(f!=$c=dechex(65-$i++))echo"<hr color=#$c$c$c size=20>";

これは、正方形を出力する必要があるため無効です。
これは、明るい色から暗い色へのシェードを出力します。


次のwhileように、ループに切り替えることで1バイトを削減しました。

<?while($c=dechex(50-$i++))echo"<hr color=#$c$c$c size=20>";

最初の解決策:

<?for($i=50;$c=dechex($i--);)echo"<hr color=#$c$c$c size=20>";

これにはきちんと順序付けられた色合いはありませんが、50種類あります。

それらを注文する必要があることを示すものは何もありませんが、サイズには要件があります。

もっともっと減らすことができるといいのですが。

http://writecodeonline.com/php/でテストできます(「HTMLとして表示」をクリックします)。


5

CSS(87文字)

アニメーションを使用します;)

:after{content:'\25A0';font:9em z;animation:g 8s steps(50)}@keyframes g{to{color:#fff}}

Webkitはまだベンダープレフィックスを必要とするため、実行可能なバージョンはより長くなります。:(

:after{content:'\25A0';font:9em z;-webkit-animation:g 8s steps(50);animation:g 8s steps(50)}@-webkit-keyframes g{to{color:#fff}}@keyframes g{to{color:#fff}}

ランダムな空の<a>要素が許可されている場合、72文字まで取得できます。

a{padding:3em;animation:g 8s steps(50)}@keyframes g{to{background:#000}}

見る?CSSは合法的なプログラミング言語です!


4

R、36バイト

freekvdの答えを簡単に短くすることができます。

x=9:59/59;symbols(x,sq=x,bg=gray(x))

出力

(彼のソリューションの下でコメントをしていないことをごめんなさい。Stackexchangeはまだコメント、投票などをすることを許可していません)。


これは51個の正方形を生成しませんか?
MickyT

これにより、最小の正方形の幅が20ピクセル未満になりますか?dpiに依存しますが、最大の正方形は1インチなので、72 dpiの画像には11ピクセルの小さな正方形が含まれます。
freekvd

ただし、1:99にすると、最大50個の正方形が基準を満たしていると主張できます。
freekvd

4

PostScript、34バイト

ISO-Latin-1エンコーディングの場合:

20’›‡üˆì0{’81e3’6’–10’k0ˆ                   (note, this is a Line Feed)
’c’§}’H

これは、次と同等のバイナリです。

20 setlinewidth 1020 -20 0 { dup 1e3 div setgray 10 moveto 0 10 lineto stroke } for

(これは、少なくとも1000ポイント[= 10インチ= 25.4 cm]幅のデバイスで使用することを前提としています。)


一連の16進数でエンコードされたオクテットを提供します(例:)0f 4e 75 a3 ...
ハネフムバラク

@haneefmubarakゴルファーのプログラムを使えるように、家に帰る必要があります。(オンラインポストスクリプトコンパクターは機能しないようです。)
AJMansfield

@haneefmubarak OK、ファイルの直接表現で更新されましたが、16進数オクテットではありません。(実際のコンバータープログラムを使用できるようになったら、後で追加します。)
AJMansfield

4

DrRacket-83

「体系的プログラム設計入門」の1年後にDrRacketを起動するためだけに。

編集

(require htdp/image)(map(λ(i)(rectangle 50 50'solid(make-color i i i)))(range 50))

いくつかの文字を保存します。から2htdp/imagehtdp/image切り替え、文字列"solid"を記号に変更します'solid。大きな節約のため、変更(range 9 209 4)する(range 50)グレーの色合いは、ちょうど人間の目のために離れて言うことは容易ではない、明確なであることが要求されています!
オマー

あなたは使用していくつかの文字を保存することができますfor/set(require htdp/image)(for/set([i 50])(rectangle 50 50'solid(make-color i i i)))
アレクシスキング

4

C#-173

LINQPADの使用

var b=new Bitmap(1000,20);var g=Graphics.FromImage(b);for(int i=0;i<50;i++)g.FillRectangle(new SolidBrush(Color.FromArgb(i*5,i*5,i*5)),new Rectangle(i*20,0,20,20));b.Dump();

展開

var b = new Bitmap(1000, 20);
var g = Graphics.FromImage(b);
for (int i = 0; i < 50; i++)
    g.FillRectangle(new SolidBrush(Color.FromArgb(i * 5, i * 5, i * 5)), new Rectangle(i * 20, 0, 20, 20));
b.Dump();

出力

出力


提案:for(int i=0;i<250;i+=5)そして168 FromArgb(i,i,i)Rectangle(i*4,0,20,20)与える
トーマスウェラー

さらに、FillRectangle()長方形の座標を直接new Rectangle()取得するオーバーロードがあるため、153を削除して逃げることができます
Thomas Weller

4

JavaScript、152バイト。

さて、これは最善の解決策ではないかもしれませんが、ここに私の解決策があります。

function b(a){c=document
e=c.createElement('p')
with(e.style){background="rgb("+[a,a,a]+")"
width=height="20px"}c.body.appendChild(e)
a<245&&b(a+5)}b(0)

css floatが左にある(正方形を数えるのが簡単になる)場合とない場合の出力を次に示します。

CSSフロート付き

CSSフロートなし


2
1文字の変数名を使用して、すべてのvarキーワードを削除し、不要な空白を削除することにより、いくつかのバイトを節約できます。また、回答に言語名とバイト数を含めてください。
ProgramFOX

入力いただきありがとうございます。空白を減らしてバイトカウントを追加しましたが、varキーワードを削除することの意味がわかりません。
デボンテイラー

気にしないで。バカだ
デボンテイラー

c+=5代わりに使用しますc=c+5。また、n=c.toString()前の行の最後に置くことで2文字を保存し、その行を前の行の最後に再び置くことができます。したがって、2行目は次のようになりますfunction w(){if(c<250){n=c.toString()
mbomb007

また、私はあなたがpx高さと幅を省略することができると確信しています。
mbomb007
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.