그레이의 50 가지 그림자


92

소년들과 소녀들은 은색 화면에서 그레이의 50 가지 그림자 를 보게되어 매우 기쁩니다 . 우리는 귀찮게하지 않고 코딩하고 싶기 때문에 두뇌를 선택하는 데 어려움이 있습니다.

당신은해야합니다 :

  • 50 개의 정사각형이 각각 다른 회색 음영으로 채워진 화면에 인쇄
  • 선택한 언어에 이미지 처리 기능이 없으면 이미지 파일을 출력 할 수 있습니다
  • 정사각형은 20 x 20 픽셀 이상 이어야합니다.
  • 각 음영이 고유하지 않으면 난수를 사용할 수 없습니다 .
  • 당신은 어떤 네트워크를 통해 모든 서비스에 연결할 수 없습니다
  • 당신은 당신의 프로그램에서 파일을 읽을 수 없습니다.
  • 선택한 표준 라이브러리에서 라이브러리를 사용할 수 없습니다.

이것은 코드 골프이므로 가장 짧은 코드가 승리합니다.


21
그들이 우리를 귀찮게 했습니까?
Calvin 's Hobbies

6
이의 제기 : 오해의 소지가있는 제목!
George Chalhoub

23
Piet 제출물 을 볼 수 있습니까?
randomra

8
회색 음영 컨테스트 50 회를 위해 생성 할 것이라고 생각한 사진이 아닙니다.
corsiKa

답변:


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

1
@iKiWiXz하지 않아야합니다. 줄은 길이보다 길 수 있지만 PGM 이미지를 생성하는 프로그램은 70 자 미만으로 유지해야합니다.
FUZxxl

30

Mathematica 72 61 59 43 35 34 바이트

현재 버전 (34 바이트)

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

grid2


Martin Büttner 덕분에 이전 버전 (59 바이트).

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

여기에 이미지 설명을 입력하십시오


나는 한 정사각형이 원칙적으로 다른 정사각형을 완전히 덮을 수 있다고 추측하고 있습니다.
Zgarb

2
확실히 가장 미적으로 유쾌한 답변.
Dan

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, 프레임, 눈금 및 숫자를 제거하지 않아도됩니다. 사각형이 너무 작아서 옳을 지 모릅니다. 확인하겠습니다.
Omar

아아! @flawr은 정사각형이 20x20px보다 작습니다.
Omar

여분의 출력은 금지되어야한다고 말하고 싶습니다. 질문은 '50 이상 '이 아닌'50 '을 지정합니다.
Joe

1
@Joe, 프레임과 프레임 외부의 숫자에 반대하지 않고 제곱 수에만 반대한다는 것을 올바르게 이해하고 있습니까? 그렇다면 50을 49로 바꾸십시오.
Omar

23

R, 47 42 39 38 37 36 35 바이트

그들이 겹쳐 질 수 있다고 가정하면, 이것은 효과가 있습니다. Symbols각 사각형의 크기를 유지하는 벡터가 필요하며 모든 함수 매개 변수에 동일한 벡터를 재사용하여 공간을 절약합니다. 가장 큰 사각형의 너비는 항상 1 인치입니다. 정수 범위가 50:99 인 경우 가장 작은 사각형의 너비는 약 0.5 인치이므로 72dpi에서 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)) 에서 인수를 되 돌리면 더 이상 작동하지 않습니다.
Konrad Rudolph

1
sq = x에서 평가가 시작되는 것처럼 보이므로 다른 문자를 제거 할 수 있습니다. 감사합니다 @KonradRudolph
freekvd

1
1 바이트 삭감symbols(x,,,x<-50:99,bg=gray(x/99))
Vlo

21

자바-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

나는 당신이 int i;대신 사용할 수 있다고 생각 int i=1하지만 마지막 ++ii대신에 처음 사용 i++하면 2 바이트를 절약 할 수 있다고 생각합니다 . BTW : 나는 당신이 없이 자바 프로그램 만들 수 있다는 것을 몰랐습니다 class MyClass ... public static void main(...!
flawr

@flawr 아냐, Java는 로컬 변수를 기본값으로 초기화하지 않습니다. 함수 외부로 이동하면 작동 할 수 있습니다. 대신 전체 프로그램을 제공했다면 그런 식으로 시도해보십시오 (이것은 함수에 필요한 가져 오기입니다). 그래도 감사합니다 :)
Geobits

2
@flawr 만약 그것이 전체 프로그램이라면, 당신은 그것을 필요로 할 것입니다. 질문이 지정하지 않았기 때문에 이것은 단지 함수 입니다.
Geobits

1
@AJMansfield 알고 있지만 다른 언어 처리를 고려하고 Java Java로 골프를 즐기고 싶습니다.
Geobits

17

BBC 베이직, 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 범위를 벗어난 단일 바이트로 토큰 화됩니다). 나는 종종 그렇게 계산하지 않습니다. 그래도 앞으로 당신의 팁을 사용할 것입니다!
Level River St

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

다음 창이 표시됩니다.

회색


1
그러나 ipython은 언어가 아니며 사용하는 것은 외부 라이브러리 인 Python 라이브러리 matplotlib입니다.
Stefano Sanfilippo

15

자바 스크립트 ( 72 , 70 , 67 바이트)

72 : 원본 ( Sphinxxx의 답변&#9632; 에서 영리한 사용을 차용 ) :

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

70 : Ismael Miguel (투표를받을 자격이 있음) 에서 뻔뻔스럽게 도둑질 을하고 루프를 짧게하고 브라우저가 색상 코드를 진행하지 않는 것을 수정할 수 있습니다 ...

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;')나 비슷하게 테스트되지 않았지만 작동 할 수 있습니다!
Ismael Miguel

1
당신이 나에게서 훔치고 있기 때문에, 적어도 제대로 도둑질하십시오. #70 바이트 길이의 솔루션을 갖도록 문자를 제거하십시오 .
Ismael Miguel

1
나는 단지 그것을 추천하려고했다. 기본값은 바이트 수이지만, 여전히 더 적은 바이트이므로 유니 코드 문자를 사용해야합니다.
NinjaBearMonkey

1
질문에 정확히 50 제곱이 표시 되었습니까? :) (다른 솔루션도 추가 항목을 가져옵니다.) 그와 유니 코드 리터럴을 사용하면 65 바이트 (63 자)까지 줄일 수 있습니다. for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')하지만 적어도 브라우저의 기본 설정 (OSX / Chrome)에서 상자는 20x20보다 약간 작습니다. 어쨌든 이러한 기반 솔루션은 의문의 여지가 있습니다.
tuomassalo

13

C ++, 98 83 자

이제 트루 컬러를 지원하는 터미널 에뮬레이터가 필요합니다. Mac OS의 경우 iTerm2의 야간 빌드가 있습니다. 유닉스의 경우 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);}

몇 가지 경고와 함께 컴파일합니다 (메인의 반환 유형이 int이고 암시 적으로 printf 선언 포함).


2
이것을 C로 전환하면 include와 intin을 main 앞에 놓고 gcc와 함께 몇 가지 경고로 컴파일 할 수 있습니다.
지도 제작자

네,하지만 그것은 다른 언어 일 것입니다. 어쨌든 추가하겠습니다 감사합니다!
rorlork

1
다음 i과 같이 main에 대한 첫 번째 인수를 작성하면 C 버전에서 몇 개의 문자를 제거 할 수 있습니다 .main(i){for(i=51;i--;)printf(...
Functino

하나의 추가 문자 만 표준으로 설정 : \e\33
Holger

이것은 코드 골프입니다!
rorlork

11

파이썬 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 를 사용 합니다 . 코드의 기능에 대한 아이디어를 제공하기 위해서만 포함되어 있습니다 . 작동하려면 몇 비트를 수정해야했습니다.)


아 스쿨 트가 어떻게 업데이트되었는지 깨달았습니다. 감사합니다. 스 니펫을 업데이트하는 데 사용할 것입니다.
ArtOfCode 1

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.)5029자를 위해 모든 숫자를 입력하십시오 ! Btw plot는 표준 J 라이브러리에 속하지 않습니까?
randomra

@randomra plot는 패키지 관리자에서 다운로드 할 수있는 보조 패키지 중 하나입니다. 나는 그것을 표준 라이브러리 의 일부로 보지 않을 것이다 .
FUZxxl

10

엑셀 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를 얻는 것이 하나 이상의 문자 일 것입니다.
Omar

@Omar, 0 ~ 9 및 1 ~ 5는 같은 수의 문자로 정확히 50을 생성합니다 .... 또한 동일한 바이트 수 (0 ~ 9 회 두 번)로 속편도 쓸 수 있습니다.
SeanC

1
아, 0 ~ 9! 나는에 대한 생각 cells(i,j)이 필요 i>0하고 j>0.
Omar

@Omar, 젠장, 네 말이 맞아. 나는 0을 사용할 수 없었다
SeanC

1
약간 짧음 (61)For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
OldCurmudgeon

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

? 기본적으로 두 번째 버전 @ 37과 동일image(matrix(1:50,5),c=gray(1:50/51))
Vlo

@koekenbakker 고정되어 있지 않습니다. 출력 창을 수동으로 조정하고 있습니다. 완벽하지는 않지만 코드 주어진 창에 대해 사각형을 생성하며 여기의 다른 코드에는 비슷한 문제가 있습니다.
Konrad Rudolph

8

Sanchises 덕분에 Matlab 35

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 그것은 단지 그것을 위해 그것을 시도함으로써 발견 된 모호한 (언급되지 않은?) 기능에 달려 있습니다. Steffen의 신용이 기한이되었습니다 :)
Sanchises

@TheBestOne / JaBe : 정사각형이 표시되지 않기 때문에 실제로 답변이 작동하지 않습니다. Steffen은 int8을 사용하여 1000 정도 값을 50 제곱으로 반올림합니다.
Sanchises

7

자바 스크립트, 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>'). 회색이 고유하지 않기 때문에 단일 숫자를 사용할 수 없습니다 (# 111111과 동일한 색상 # 111111)
edc65

다른 단위를 사용할 수 있습니다. 1cm또는 1 9mm이 더 좋고 광범위하게 지원됩니다. 바이트 수를 변경하지 않고
Ismael Miguel

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 바이트 이하) 그리고 각 사각형은 다른 회색입니까?
Luis Mendo

7

자바 스크립트 (77 71 바이트) :

이 답변은 더 이상 IE11 기반이 아닙니다. 브라우저가 잘못된 색상 코드를 사용 가능한 색상 코드로 변환하기 때문에 ( #숫자 를 추가 하여) 작동합니다.

코드는 다음과 같습니다.

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

파이어 폭스는 여전히 서클을 만드는 데 어려움이 있습니다.

(작은 편집 : 변경 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 (동일한 결과이지만 원을 생성합니까? WO WTH?)와 호환되지 않습니다.

이것은 코드 골프이기 때문에 특정 버전 또는 특정 소프트웨어로 작업하는 솔루션이 허용됩니다.


2
나일지도 모르지만이 코드 스 니펫을 실행하면 대부분 녹색과 파란색 원이 생성됩니다. MartinBüttner이 댓글에 나를 이길 @ 그것은 나 ... 그냥 그래서 내가 볼
MrLemon

@MrLemon 크롬이 RGB를 좋아하지 않는다고 생각합니다 .- 그러나 IE11에서는 작동합니다. 크로스 브라우저 솔루션을 만들려고하지 않기 때문에 이것이 허용됩니다. 이것을 답변에 추가하겠습니다.
Ismael Miguel

@IsmaelMiguel 그건 그렇습니다. 그러나 명확히하기 위해, 나는 지금 FF에 있습니다. IE11에서 작동하는지 확인할 수 있습니다.
MrLemon

@MrLemon 집에서 시도한 이후 IE11에서 작동합니다. 필요한 경우 인쇄 화면을 제공 할 수 있습니다. 파이어 폭스는 그것으로 동그라미를 만든다. f # $ % ing 아이디어가 없습니다. 되돌릴 방법이 없습니다. 나는 IE가 Firefox가 아닌 기발한 것을 가질 것으로 기대했다.
Ismael Miguel

Firefox는의 끝에 반원을 넣은 것 같습니다 <hr>. 아마도 더 매끄럽게 보일 것입니다. 색상이 어떻게되는지에 대한 단서가 없습니다. 어쨌든 나를 당황시키기 위해 내 +1이 있습니다.
MrLemon

7

Piet- 2 * 103 = 206

이는 소스 코드와 출력이 문제를 해결한다는 점에서 고유합니다.

피에트

그것의 대부분은 장식 적이므로, 나는 두 줄로만 세어 보았습니다. 다른 사람들처럼 회색조 ppm을 출력합니다.


6

자바 스크립트-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합니다. 상자 크기로 인해이 중 하나를 하향 투표하고 있습니다. 고칠 때까지
Ismael Miguel

3
i--대신 사용할 수 있습니다 i-=1.
flawr

1
<b>태그 를 사용할 수 있습니다 . 텍스트가 검은 색으로 표시되는 것을 제외하고는 어떤 식 으로든 코드를 변경하지 않습니다. 이것은 필수 사항은 아니지만 좋은 생각 일 수 있습니다.
Ismael Miguel


6

PHP (62 60 63 72 71 62 59 바이트) :

나는 내가 찾을 수있는 가장 짧은 만들었습니다 :

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

이것은 내 자바 스크립트 응답 (71 바이트)과 정확히 동일한 코드 입니다.

그러나 훨씬 짧습니다!

파이어 폭스에는 기발한 것이 있습니다 : 사각형 대신에 파이어 폭스는 원을 만듭니다 ! (광기를 이동!)
보다 Othen, 모든 브라우저 (심지어 누락 된 권리 색상을 만들어 #color속성).


잘못된 제출 및 변경 로그 :

62 바이트의 이전 답변.

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

모든 음영이 완벽하게 정렬됩니다.

이 크롬에 대해 작동하지 않습니다 솔루션 (여러 색상으로 사각형을 생산할 예정)와 파이어 폭스 (원하게 예 OO, 과 함께 <hr>! 가로 눈금자가 파이어 폭스에 원입니다!).
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와 함께 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 인치이므로 72dpi 이미지에는 11 픽셀의 작은 사각형이 있습니다.
freekvd

1:99로 만들면 50 개의 가장 큰 사각형이 기준을 충족한다고 주장 할 수 있습니다.
freekvd

4

포스트 스크립트, 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.4cm] 인 장치에서 사용한다고 가정합니다.)


일련의 16 진수로 인코딩 된 옥텟 (예 :)을 제공하십시오 0f 4e 75 a3 ....
haneefmubarak

@haneefmubarak 저는 골퍼 프로그램을 사용할 수 있도록 집에 가야합니다. (온라인 포스트 스크립트 압축기는 작동하지 않는 것 같습니다.)
AJMansfield

@haneefmubarak OK, 16 진수 8 진수는 아니지만 파일의 직접 표현으로 업데이트되었습니다. (실제 변환기 프로그램을 사용할 수있게되면 나중에 추가하겠습니다.)
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)다음과 같이 변경하십시오 . 회색 음영은 사람의 눈을 구별하기 쉽지 않고 명확해야합니다!
Omar

다음을 사용하여 몇 개의 문자를 저장할 수 있습니다 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을 제거하고 도망 갈 수 있습니다
Thomas Weller

4

자바 스크립트, 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
한 글자 변수 이름을 사용하여 모든 var키워드를 삭제하고 불필요한 공백을 제거 하여 바이트를 절약 할 수 있습니다 . 또한 답변에 언어 이름과 바이트 수를 포함하십시오.
ProgramFOX 2019

입력 해 주셔서 감사합니다. 공백을 줄이고 바이트 수를 추가했지만 var키워드 를 삭제하여 무슨 의미인지 확실하지 않습니다 .
데본 테일러

신경 쓰지 마. 바보 같아
데본 테일러

c+=5대신에 사용하십시오 c=c+5. 또한 n=c.toString()이전 줄의 끝 부분 에 두어 이전 줄 끝에 다시 그 줄을 두어 2 개의 문자를 저장할 수 있습니다 . 그래서 두번째 줄은 것function w(){if(c<250){n=c.toString()
mbomb007

또한 px높이와 너비를 생략 할 수 있다고 확신합니다 .
mbomb007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.