五十度灰


92

男孩和女孩很高兴在银幕上看到灰色的五十度阴影,我们只想编码而不会被打扰,所以这是挑起大脑的挑战。

你必须:

  • 在屏幕上打印五十个正方形,每个正方形填充不同的灰色阴影
  • 如果您选择的语言缺乏图像处理功能,则可以输出图像文件
  • 正方形必须可见,至少20 x 20像素
  • 除非确保每个阴影都是唯一的,否则不能使用随机数
  • 无法通过任何网络连接到任何服务
  • 无法读取程序中的任何文件。
  • 您不能使用所选语言的标准库中的任何库。

这是代码高尔夫球,所以最短的代码获胜。


21
他们在打扰我们吗?
加尔文的爱好

6
异议:标题误导!
乔治·乔卢布

23
我们会看到Piet提交的内容吗?
randomra

8
不是我以为我们会为50种阴影的灰色比赛生成的图片。
corsiKa

Answers:


24

MATLAB,24字节

第二次尝试,现在实际上符合规则。

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

第二个

{{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短一个字母。
Omar

您可以这样做ArrayPlot@{Range@50},只有20个字节。
Chip Hurst

@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 2015年

1
@iKiWiXz应该,不是必须的。行可能比这更长,但是生成PGM图像的程序应尝试将其保持在70个字符以内。
FUZxxl 2015年

30

Mathematica 72 61 59 43 35 34字节

当前版本(34字节)

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

网格2


早期版本(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}]

在此处输入图片说明


我猜一个正方形原则上可以完全覆盖另一个正方形,因此可以看到少于50个正方形?
Zgarb 2015年

2
绝对是最美观的答案。
2015年

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,我是否正确理解您不反对框架和框架之外的数字,而只是反对平方数?如果是这样,只需将49替换
Omar

23

R,47 42 39 38 37 36 35字节

假设它们可以重叠,则可以正常工作。Symbols需要一个向量来保存每个正方形的大小,并且我通过对所有函数参数重复使用相同的向量来节省空间。最大的正方形始终为1英寸宽。以50:99为整数范围,最小的正方形将为半英寸宽,因此在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 2015年

减两个!谢谢@MickyT,我认为已经完成了。
freekvd

1
@freekvd通常,它取决于在函数内部访问参数的顺序(因为参数是惰性计算的)。您可以先进行测试f = function (a, b) { a; b},然后再致电进行测试f(x <- 5, x)。这按预期工作。一旦您将f的定义(和rm(x))中的参数取反,它就不再起作用。
康拉德·鲁道夫

1
看来评估是从sq = x开始的,所以我可以以此来修剪另一个char。感谢@KonradRudolph
freekvd 2015年

1
减少1个字节symbols(x,,,x<-50:99,bg=gray(x/99))
Vlo 2015年

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。相同的字节数,我只是认为这样看起来更好。
Geobits'2

我认为您也可以使用int i;代替,int i=1但在最后一次++i出现时先使用i代替i++,这样可以节省2个字节。顺便说一句:我什至不知道您可以在没有 class MyClass ... public static void main(... !!!的情况下编写Java程序!
瑕疵的

@flawr不,Java不会将局部变量初始化为默认值。如果我将其移出函数,则可能会起作用。如果要提供完整的程序,则可以尝试这种方式(这只是一个功能,加上必要的导入)。不过谢谢:)
Geobits

2
@flawr如果它是完整程序,那么是的,您将需要它。这只是一个函数,因为问题未指定。
Geobits,2015年

1
我知道@AJMansfield,但是我考虑处理另一种语言,而且我喜欢Java Java。
Geobits,2015年

17

BBC BASIC,57岁

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

正方形必须至少为 20像素,但没有什么要说它们必须具有相同的大小,因此我想这符合条件。

通过使用更多的低级VDU代码,可以缩短此时间。但是,从这种模式更改为不太有趣的模式不太可能使其缩短。

在此处输入图片说明


2
还记得您的BBC基本缩写吗?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 ipython -pylab并执行该程序将显示一个图形,其中包含50个正方形的50个灰度阴影:

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

输出:

灰色50

解决方案2:

这是另一个程序(61字节):

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

显示以下窗口:

灰色50b


1
但是请注意,ipython不是一种语言,您使用的是Python库matplotlib,它是一个外部库。
Stefano Sanfilippo,2015年

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个字符):交换实体为Unicode字符:

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


我认为您应该从开始i=51。如果我计算正确,只有49个正方形吗?
瑕疵的

1
我真的很喜欢你的答案!亲爱的上帝,为什么我没有呢?为此+1!我会将其减少到for(i=0;i++<50;)document.write('<font color=#'+i+i+i+' size=7>&#9632;')或类似。未经测试,但可能有效!
Ismael Miguel 2015年

1
由于您是在偷我,所以至少应该偷。删除#字符以得到70字节长的解决方案。
Ismael Miguel

1
我只是建议。默认值是计数字节,但是您应该使用Unicode字符,因为它仍然更少。
NinjaBearMonkey

1
问题是否恰好是 50平方?:)(其他解决方案也需要额外的资源。)使用它和unicode文字,最小为65个字节(63个字符):for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')-但至少在我的浏览器的默认设置(OSX / Chrome)上,此框小于20x20像素仍然存在,因此这些基于■的解决方案值得怀疑。
tuomassalo 2015年

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少了三个字符

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

编译时带有几个警告(假设main的返回类型为int,并且隐式包括printf的声明)。


2
如果将其切换为C,则可以将include和the int放到main前面,并使用gcc进行一些警告编译。
制图师

是的,但是那是另一种语言。无论如何,我将其追加,谢谢!
rorlork 2015年

1
如果i将main作为第一个参数,则可以从C版本中删除一些字符,例如:main(i){for(i=51;i--;)printf(...
Functino 2015年

仅使它成为标准的一个附加字符:\e\33
Holger 2015年

这是代码高尔夫球!
rorlork 2015年

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乘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。仅包含该代码是为了让您对代码的功能有所了解-我必须修改一些内容才能使其正常工作。)


啊,我知道您是如何了解速写的。谢谢您,我可能会用它来更新代码段。
ArtOfCode

11

J(43 41 40 38 33 29个字符)

经过randomra的建议。

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

该解决方案不显示任何内容,因为J的标准库不包含GUI例程。相反,我生成图像并将其写入标准输出。输出是随机的,确保所有阴影都是不同的。这是一些示例输出,图像转换为png并旋转了90°,以便于观看:

50种灰色阴影


50使用50 * 50的正方形将标题中的从压入生成的部分可节省1个字节:1!:2&4'P2 50 2500 ',":(,*:#i.)50
randomra

那是个好主意。
FUZxxl 2015年

甚至更多:按1!:2&4'P2 ',":(,*:,],*:#i.)5029个字符输入所有数字!顺便说一句,plot它不是标准J库的一部分吗?
randomra 2015年

@randomra plot是可以从程序包管理器中下载的辅助程序包之一。我几乎不会将其视为标准库的一部分。
FUZxxl 2015年

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。在那种情况下,获得50 = 10 * 5比获得81 = 9 * 9多一个字符。
奥马尔2015年

@ Omar,0到9和1到5将在相同数量的字符中产生正好50个字符。...这也意味着我也可以写续集,在相同数量的字节中-两次0到9
SeanC

1
哦,0到9!我以为cells(i,j)你需要i>0j>0
奥马尔2015年

@Omar,该死,你是对的。我不能使用零
SeanC

1
稍短(61)For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
OldCurmudgeon 2015年

8

[R 3732个字符1

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

但是,此显示看起来是…meh(图像旋转了90°以更好地适合文本;压缩后的原始方形边长> 20px):

无聊的

这是一个更好的版本,它在矩阵(50个字符)内以随机顺序绘制正方形:

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

令人兴奋!

(是的,看似相同颜色的三个相邻的正方形实际上是三种不同的灰色阴影。)

1是的,另一个R答案,甚至不是最短的(现在是R的最短)–道歉。我错过了R中的漂亮渲染。


1
您如何确定长宽比?
koekenbakker,2015年

?基本上与第二个版本@ 37image(matrix(1:50,5),c=gray(1:50/51))
Vlo 2015年

@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)))

您可以使用int8而不是uint8来减少多达1个字节。
桑契斯,2015年

sanchises的解决方案更好!
2015年

@Memming它确实依赖于一些晦涩的(未记录的?)功能,我只是通过尝试一下才发现它。给予史蒂芬应有的
荣誉

@TheBestOne / JaBe:您的答案实际上不起作用,因为它不显示正方形。Steffen使用int8将1000左右的值四舍五入到50平方。
桑契斯,2015年

7

JavaScript,87个90字节

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

这将输出平方到HTML,因为它实际上是JavaScript唯一的图形输出方法。感谢edc65削减3个字节。


1
节省3个字节:for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')。无法使用
一位

您可以使用其他单位。1cm或1 9mm会更好,得到更广泛的支持。无需更改字节数。
Ismael Miguel 2015年

7

PHP,96 88 74字节

感谢Ismael Miguel节省了22个字节!

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

写入50 <p>s,高度和宽度为9mm(在大多数屏幕上应该大于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仍有怪圈。

(小编辑:更改for(i=61;i-->9;)为,for(i=59;i-->9;)因为它产生了52个正方形)


旧答案:

这基于我的PHP答案,并使用几乎相同的方法来制作正方形:

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

不是最短的答案,但是值得在这里添加。


此解决方案与Chrome(产生多种绿色)和Firefox(结果相同,但是产生圆圈?还是WTH?)不兼容

由于这是代码高尔夫,因此可以使用使用特定版本或特定软件的解决方案。


2
可能只有我一个人,但是运行此代码段通常会产生绿色和蓝色圆圈。我看到@MartinBüttner击败了我,所以不只是我...
MrLemon

@MrLemon我想Chrome不喜欢RGB -.-但它确实可以在IE11上使用。由于我不打算提出跨浏览器的解决方案,因此可以接受。我将其添加到答案中。
Ismael Miguel

@IsmaelMiguel我猜很好。但是为了清楚起见,我现在在FF。虽然可以确认它在IE11上正常工作。
MrLemon

@MrLemon,因为我在家里尝试过,所以可以在IE11上使用。如果需要,我可以提供打印屏幕。Firefox以此为生。我不知道怎么做。无法还原它。我期望IE具有怪癖,而不是Firefox。
伊斯梅尔·米格尔

Firefox似乎在的末端加上了半圆<hr>,可能会使它看起来更平滑。没有任何关于颜色会发生什么的线索。无论如何,我的+1让我感到困惑。
MrLemon

7

Piet- 2 * 103 = 206

这是独特的,因为源代码和输出可以应对挑战:

皮特

其中大多数是装饰性的,因此我只计算了前两行,仅靠前两行就可以了。像其他输出一样输出灰度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 afont-size:3em。由于包装盒的大小,我对此不满意。直到您解决。
Ismael Miguel 2015年

3
您可以使用i--代替i-=1
瑕疵的

1
您可以使用<b>标签。除了确保文本为黑色之外,它不会以任何方式更改代码。这不是必需的,但可能是一个好主意。
Ismael Miguel

6

处理中,共66个字符:

size(1000,20);for(int i=0;i<981;i+=20){fill(i/4);rect(i,0,20,20);}

处理中的灰色阴影


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的怪癖:而不是正方形的,让火狐!(去疯狂!)
比Othen,所有的浏览器产生正确的颜色(即使缺少#color属性)。


无效的提交和变更日志

旧答案,有62个字节。

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

所有阴影均完美对齐。

该解决方案将不会为Chrome浏览器(将产生多种颜色方块)和Firefox(这使得各界OO是,<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!=$cf>$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 2015年

这会使最小的正方形小于20像素宽吗?这取决于您的dpi,但是最大的正方形是1英寸,因此72 dpi的图像将具有11像素的最小正方形。
freekvd15年

尽管如果您按1:99的比例进行操作,则可以辩称最大的50个正方形符合标准。
freekvd15年

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厘米]宽的设备上使用它。)


给我们一系列十六进制编码的八位位组(即:)0f 4e 75 a3 ...
haneefmubarak

@haneefmubarak我会的,我只需要回家即可使用我的高尔夫球手计划。(在线后记压缩器似乎永远无法工作。)
AJMansfield

@haneefmubarak OK,已更新为文件的直接表示形式,尽管它不是十六进制八位字节。(一旦我可以使用真正的转换器程序,我会在稍后添加。)
AJMansfield

4

DrRacket-83

只是为了在“系统程序设计简介”一年后启动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):只需要使灰色阴影区分开,而不容易让人眼分辨!
奥马尔2015年

您可以使用for/set以下命令保存一些字符:(require htdp/image)(for/set([i 50])(rectangle 50 50'solid(make-color i i i)))
Alexis King

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)然后FromArgb(i,i,i)Rectangle(i*4,0,20,20)给168
托马斯·韦勒

此外,FillRectangle()有一个重载采用矩形直接坐标,这样你就可以删除new Rectangle(),并与153逃脱
托马斯·韦勒

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向左浮动的输出(只是为了更容易计算平方)而没有:

与CSS浮动

没有CSS浮动


2
您可以使用一个字母的变量名称,删除所有var关键字并删除不必要的空格来节省一些字节。另外,请在答案中包括语言名称和字节数。
ProgramFOX

感谢您的输入。我减少了空格并增加了字节数,但是我不确定删除var关键字是什么意思。
德文·泰勒

没关系。我觉得很蠢
德文·泰勒

使用c+=5代替c=c+5。另外,您可以保存2个字符,方法是放在n=c.toString()前一行的末尾,然后再将该行放在前一行的末尾。所以您的第二行是function w(){if(c<250){n=c.toString()
mbomb007

另外,我敢肯定您可以省略px高度和宽度。
mbomb007
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.