그레이의 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하지만 마지막 ++i에 i대신에 처음 사용 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/image로 htdp/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.