programing

SQL로 크리스마스 트리를 인쇄하려면 어떻게 해야 합니까?

kingscode 2023. 7. 20. 22:54
반응형

SQL로 크리스마스 트리를 인쇄하려면 어떻게 해야 합니까?

글쎄요, 이것은 심각한 문제가 아닙니다. 하지만 2020년 이후 우리 대부분은 약간의 여유가 필요했습니다.즐기세요...

다음과 같은 xterm 또는 Windows 10 명령 창을 실행하면 트리가 인쇄되고 조명이 무작위로 분산되며 물론 사랑스러운 전체 색상으로 표시됩니다.

행복한 설날 보내요, 모두들!

set lines 350 pagesize 0
clear screen
select replace(replace(replace(r,'X',chr(27)||'[42m'||chr(27)||'[1;'||to_char(32)||'m'||'X'||chr(27)||'[0m'),
    'T',chr(27)||'[43m'||chr(27)||'[1;'||to_char(33)||'m'||'T'||chr(27)||'[0m'),
    '@',chr(27)||'[33m'||chr(27)||'[1;'||to_char(31)||'m'||'@'||chr(27)||'[0m')
from ( select lpad(' ',20-e-i)|| case when dbms_random.value < 0.3 then substr(s,1,e*2-3+i*2) 
       else substr(substr(s,1,dbms_random.value(1,e*2-3+i*2-1))||'@'||s,1,e*2-3+i*2) end r
from ( select rpad('X',40,'X') s,rpad('T',40,'T') t from dual ) , 
( select level i, level+2 hop from dual connect by level <= 4 ) , lateral
( select level e from dual connect by level <= hop ) union all select lpad(' ',17)||substr(t,1,3)
from ( select rpad('X',40,'X') s,rpad('T',40,'T') t from dual ) connect by level <= 5 );

enter image description here

여기 MSSQL로 크리스마스 트리를 그리는 코드가 있습니다.

DECLARE @g TABLE (g GEOMETRY, ID INT IDENTITY(1,1));



-- Adjust Color

INSERT INTO @g(g) SELECT TOP 29 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

-- Build Christmas Tree

INSERT INTO @g(g) VALUES (CAST('POLYGON((0 0,900 0,450 400, 0 0 ))' as geometry).STUnion(CAST('POLYGON((80 330,820 330,450 640,80 330 ))' as geometry)).STUnion(CAST('POLYGON((210 590,690 590,450 800, 210 590 ))' as geometry)));

-- Adjust Color

INSERT INTO @g(g) SELECT TOP 294 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

-- Build a Star

INSERT INTO @g(g) VALUES (CAST('POLYGON ((450 910, 465.716 861.631, 516.574 861.631, 475.429 831.738, 491.145 783.369, 450 813.262, 408.855 783.369, 424.571 831.738, 383.426 861.631, 434.284 861.631, 450 910))' as geometry));

-- Build Colored Balls

INSERT INTO @g(g) SELECT TOP 2 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (80 290, 110 320, 140 290, 110 260, 80 290))' as geometry));

INSERT INTO @g(g) SELECT TOP 2 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (760 290, 790 320, 820 290, 790 260, 760 290))' as geometry));

INSERT INTO @g(g) SELECT TOP 3 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (210 550, 240 580, 270 550, 240 520, 210 550))' as geometry));

INSERT INTO @g(g) SELECT TOP 46 CAST('POLYGON((0 0, 0 0.0000001, 0.0000001 0.0000001, 0 0))' as geometry) FROM sys.messages;

INSERT INTO @g(g) VALUES (CAST('CURVEPOLYGON (CIRCULARSTRING (630 550, 660 580, 690 550, 660 520, 630 550))' as geometry));



SELECT g FROM @g ORDER BY ID;

GO

공간 결과 출력

enter image description here

이 연습에서는 다음 공간 데이터와 방법을 사용했습니다.

POLYGON - 2-Dimensional표면적("트리", "별" 및 "색상 조정" 영역)

CIRCULARSTRING원형 호 세그먼트 모음(볼 원)

CURVEPOLYGON링("컬러 볼")으로 정의된 2차원 표면적.STUnion - 두 지오메트리 인스턴스를 결합하는 방법입니다.

도면은 다음 단계에 따라 작성되었습니다.

  1. 트리의 색상을 조정했습니다.저는 SSMS 팔레트에서 30번째 색상을 얻기 위해 29개의 더미 삼각형을 그립니다. 이것은 일종의 녹색입니다.
  2. 빌드 3POLYGON삼각형을 조합합니다.
  3. 별의 금색을 얻기 위해 다른 색 조정을 했습니다.
  4. 빌드됨POLYGON별 모양으로
  5. 각각 앞에 색상 조정이 있는 네 개의 색상 원을 작성합니다.
  6. 스크립트를 실행합니다.
  7. 전환"Spatial Result"SSMS의 탭

행복한 설날 보내요, 모두들!

언급URL : https://stackoverflow.com/questions/65434426/how-do-i-print-out-a-christmas-tree-with-sql

반응형