영국 국기를 인쇄하십시오!


10

Print the American Flag에서 영감을 받았습니다 ! 이것은 직접 사본이지만 영국 국기와 함께 대칭이 있지만 여전히 복잡합니다!

가능한 적은 수의 바이트로 다음 ASCII 아트를 제작해야합니다! 머리 / 화면 (둘다는 아님)을 90도 돌려서 제대로보십시오.

 __________________________________________ 
|\  \XXXXXXXXXXXX  000000  XXXXXXXXXXXX//0/|
|0\  \XXXXXXXXXXX  000000  XXXXXXXXXXX//0/ |
|\0\  \XXXXXXXXXX  000000  XXXXXXXXXX//0/  |
|\\0\  \XXXXXXXXX  000000  XXXXXXXXX//0/  /|
|X\\0\  \XXXXXXXX  000000  XXXXXXXX//0/  /X|
|XX\\0\  \XXXXXXX  000000  XXXXXXX//0/  /XX|
|XXX\\0\  \XXXXXX  000000  XXXXXX//0/  /XXX|
|XXXX\\0\  \XXXXX  000000  XXXXX//0/  /XXXX|
|XXXXX\\0\  \XXXX  000000  XXXX//0/  /XXXXX|
|XXXXXX\\0\  \XXX  000000  XXX//0/  /XXXXXX|
|XXXXXXX\\0\  \XX  000000  XX//0/  /XXXXXXX|
|XXXXXXXX\\0\  \X  000000  X//0/  /XXXXXXXX|
|XXXXXXXXX\\0\  \  000000  //0/  /XXXXXXXXX|
|XXXXXXXXXX\\0\    000000  /0/  /XXXXXXXXXX|
|XXXXXXXXXXX\\0\   000000  0/  /XXXXXXXXXXX|
|XXXXXXXXXXXX\\0\  000000  /  /XXXXXXXXXXXX|
|XXXXXXXXXXXXX\\0  000000    /XXXXXXXXXXXXX|
|XXXXXXXXXXXXXX\\  000000   /XXXXXXXXXXXXXX|
|                  000000                  |
|000000000000000000000000000000000000000000|
|000000000000000000000000000000000000000000|
|000000000000000000000000000000000000000000|
|                  000000                  |
|XXXXXXXXXXXXXX/   000000  \\XXXXXXXXXXXXXX|
|XXXXXXXXXXXXX/    000000  0\\XXXXXXXXXXXXX|
|XXXXXXXXXXXX/  /  000000  \0\\XXXXXXXXXXXX|
|XXXXXXXXXXX/  /0  000000   \0\\XXXXXXXXXXX|
|XXXXXXXXXX/  /0/  000000    \0\\XXXXXXXXXX|
|XXXXXXXXX/  /0//  000000  \  \0\\XXXXXXXXX|
|XXXXXXXX/  /0//X  000000  X\  \0\\XXXXXXXX|
|XXXXXXX/  /0//XX  000000  XX\  \0\\XXXXXXX|
|XXXXXX/  /0//XXX  000000  XXX\  \0\\XXXXXX|
|XXXXX/  /0//XXXX  000000  XXXX\  \0\\XXXXX|
|XXXX/  /0//XXXXX  000000  XXXXX\  \0\\XXXX|
|XXX/  /0//XXXXXX  000000  XXXXXX\  \0\\XXX|
|XX/  /0//XXXXXXX  000000  XXXXXXX\  \0\\XX|
|X/  /0//XXXXXXXX  000000  XXXXXXXX\  \0\\X|
|/  /0//XXXXXXXXX  000000  XXXXXXXXX\  \0\\|
|  /0//XXXXXXXXXX  000000  XXXXXXXXXX\  \0\|
| /0//XXXXXXXXXXX  000000  XXXXXXXXXXX\  \0|
|/0//XXXXXXXXXXXX__000000__XXXXXXXXXXXX\__\|

블록은 44 x 42 자입니다. 첫 번째 줄은 단일 공백으로 끝납니다! 다른 후행 공백은 허용되지 않지만 마지막 줄에는 후행 줄 바꿈이 허용됩니다.

나는 현재 영국에 대한 날짜의 중요성을 모른다.


21
프랑스 인으로서, 나의 영광은 내가이 도전을하는 것을 방해합니다
Fatalize

3
@Fatalize 나는 바스티유 데이에 프랑스 국기 도전을 게시 할 것이지만 색상을 올바르게 가져와야합니다!
CJ 데니스

3
뉴턴의 Principia Mathematica는 1687 년 7 월 5 일에 출판되었지만, 그것이 중요한지 잘 모르겠습니다. 한편으로는 율리우스 력 아래 있었다. 다른 한편으로 우리의 전체 날짜 체계는 어쨌든 어느 정도 임의적이므로, 같은 날이라고 부르면 왜 축하하지 않습니까?
lirtosiast

1
@ThomasKwa 글쎄요, 샬럿 공주님은 오늘 세례를 받았지만 뉴턴의 업적이 더 중요하다고 생각합니다. 오늘은 알제리, 카보 베르데, 베네수엘라의 독립 기념일이며, 모두 깃발에 별이 있습니다.
Level River St

9
@Fatalize이 도전의 색 구성표에 따라 당신을 위해 프랑스 국기가 있습니다 : X 0. 작은 토큰이 귀하의 이의 제기를 극복하는 데 도움이되기를 바랍니다.
Level River St

답변:


10

SpecBAS-1137 바이트

당연히 캐릭터를 이길 희망은 없지만 출력은 컬러입니다 ...

1 PAPER 15: CLS 
2 PRINT AT 1,2;("_"*42): FOR y=2 TO 42: PRINT AT y,1;"|";AT y,44;"|": NEXT y
3 FOR y=4 TO 18: PRINT AT y,y-2;"\";AT y+1,y-2;"\": NEXT y: PRINT AT 19,17;"\"
4 FOR y=2 TO 14: PRINT AT y,y;"\  \";AT y+28,y+26;"\  \": NEXT y: FOR y=15 TO 17: PRINT AT y,y;"\";AT y+12,y+13;"\": NEXT y
5 FOR y=25 TO 39: PRINT AT y,y+3;"\\": NEXT y: PRINT AT 40,43;"\"
6 FOR y=2 TO 14: PRINT AT y,42-y;"/";AT y+1,42-y;"/": NEXT y: PRINT AT 2,41;"/"
7 FOR y=2 TO 17: PRINT AT y,45-y;"/";AT y+3,45-y;"/": NEXT y
8 FOR y=2 TO 16: PRINT AT y+23,18-y;"/";AT y+26,18-y;"/": NEXT y: PRINT AT 27,17;"/"
9 FOR y=1 TO 13: PRINT AT y+29,17-y;"//": NEXT y: PRINT AT 29,17;"/"
10 PRINT AT 42,18;"__";AT 42,26;"__";AT 42,41;"__"
11 INK 2
12 FOR y=2 TO 42: PRINT AT y,20;"0"*6: NEXT y
13 FOR y=21 TO 23: PRINT AT y,2;"0"*42: NEXT y
14 FOR y=3 TO 18: PRINT AT y,y-1;"0";AT y+23,y+25;"0": NEXT y
15 FOR y=2 TO 16: PRINT AT y,44-y;"0";AT y+26,19-y;"0": NEXT y
16 INK 1
17 FOR y=2 TO 13: LET l$="x"*(14-y): PRINT AT y,4+y;l$;AT y,28;l$;AT 44-y,4+y;l$;AT 44-y,28;l$: NEXT y
18 FOR y=6 TO 19: LET l$="x"*(y-5): PRINT AT y,2;l$;AT y,49-y;l$;AT 44-y,2;l$;AT 44-y,44-LEN l$;l$: NEXT y

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


색상이 없으면 얼마나 짧습니까?
Beta Decay

12 자 미만 (INK 문) 이것이 대부분의 항목보다 1000 개 이상의 문자보다 많다는 점을 고려할 때 나는 그것에 대해 떨리지 않을 것입니다. :-)
Brian

1
하하 당신은 아마도 BBC BASIC에서 이것을 훨씬 더 짧게 얻을 수 있다는 것을 알고 있습니다
Beta Decay

나는 1554 바이트를 계산
TuxCrafting

4

파이썬 2, 223 바이트

o=""
x="X"*15
s=x+r"\  \0\\%s//0/  /"%x
exec'o+="|%s  000000  %s|\\n"%(s[18:2:-1],s[25:41]);s=s[1:]+s[0];'*18
print" "+"_"*42+" \n"+o+"\n".join("|%s000000%s|"%(c*18,c*18)for c in" 000 ")+o[:43:-1]+o[43::-1].replace(" ","_")

아직도 골프를 많이.

외형에도 불구하고 뒷면은 앞면이 반전 된 것과 같으며 (밑줄 제외) 슬래시가있는 패턴에는 비정상적으로 좋습니다.


2

파이썬 3 361 331

p=print
p("","_"*42,"")
r='|'
w="X"*16
s="\\  \\0\\\\"
z="//0/  /"
O=" 000000 "
m=r+" "*18+"0"*3
o=w+s+w
e=w+z+w
T=e[::-1]
f=o[::-1]
R=range(18)
for i in R:p(r+o[i+19:i+3:-1],O,e[i+4:i+20]+r)
B="p(m+m[::-1]);"
exec(B+"p(r+'0'*42+r);"*3+B)
for i in R[1:]:p(r+T[i+1:i+17],O,f[i+16:i:-1]+r)
p(r+T[19:35]+"__000000__"+o[4:17]+"__\\|")

이 프로그램은 파이썬의 멋진 문자열 슬라이싱 기능을 사용하여 줄무늬를 나타내는 문자열을 만듭니다.

o = "XXXXXXXXXXXXXXX\  \0\\XXXXXXXXXXXXXXX" 

그런 다음 문자열 슬라이스의 시작과 끝을 늘려 오른쪽으로 이동하면서 반복적으로 거꾸로 인쇄하여 이것을 얻으십시오.

\  \XXXXXXXXXXX
0\  \XXXXXXXXXX
\0\  \XXXXXXXXX
\\0\  \XXXXXXXX
X\\0\  \XXXXXXX
XX\\0\  \XXXXXX
XXX\\0\  \XXXXX
XXXX\\0\  \XXXX
XXXXX\\0\  \XXX
XXXXXX\\0\  \XX
XXXXXXX\\0\  \X
XXXXXXXX\\0\  \
XXXXXXXXX\\0\  
XXXXXXXXXX\\0\ 
XXXXXXXXXXX\\0\  
XXXXXXXXXXXX\\0  
XXXXXXXXXXXXX\\ 

왼쪽 상단입니다.

다른 네 모퉁이를 얻기 위해 원래 문자열의 변형을 사용 하여이 네 번 반복합니다 (중간 비트를 뒤집는 것과 같이).


@ Sp3000 더 낫습니까?
James

지금은 너무 얇은 것 같아요
Sp3000

btw 나는 당신이 과장된 것이라고 생각한다 – 2 개의 문자 (예를 들어, -1, 17)의 경우, 당신은 아무것도 저장하기 전에 그것을 6 번 사용해야한다
Sp3000

@ Sp3000 당신이 맞아, 나는 그것이 각각 2를 절약 할 것이라고 생각했습니다.
James

btw 첫 줄에는 후행 공백도 있습니다. 인쇄하지 않을 것입니다
Sp3000

2

CJam, 131 (126) 102 99 바이트

S'_42*SK,'XE*"//0/  /"+2*f>Gf<_2>
\W%2>.{"\/"_W%er" 000 ":_@}" 0 0"
[I6I63].*+s_W%+42/{N"||"@*}/S'_er

가로 스크롤을 방지하기 위해 두 개의 줄 바꿈이 포함되어 있습니다. CJam 통역사 에서 온라인으로 사용해보십시오 .

생각

우리는 문자열을 수정하여 시작

XXXXXXXXXXXXXX//0/  /XXXXXXXXXXXXXX

19 사본을 눌러 n 번째 사본 의 첫 번째 n 문자를 버리고 16 번째 문자 다음의 각 결과를 잘라냅니다 .

XXXXXXXXXXXXXX//
XXXXXXXXXXXXX//0
XXXXXXXXXXXX//0/
XXXXXXXXXXX//0/ 
XXXXXXXXXX//0/  
XXXXXXXXX//0/  /
XXXXXXXX//0/  /X
XXXXXXX//0/  /XX
XXXXXX//0/  /XXX
XXXXX//0/  /XXXX
XXXX//0/  /XXXXX
XXX//0/  /XXXXXX
XX//0/  /XXXXXXX
X//0/  /XXXXXXXX
//0/  /XXXXXXXXX
/0/  /XXXXXXXXXX
0/  /XXXXXXXXXXX
/  /XXXXXXXXXXXX
  /XXXXXXXXXXXXX
 /XXXXXXXXXXXXXX

처음 두 문자열을 버림으로써 플래그의 오른쪽 위 사분면을 얻습니다.

이제 현의 순서를 반대로 바꾸면 처음 두 개를 버리고 슬래시의 경사를 바꾸면 왼쪽 위 사분면을 얻습니다.

해당 문자열을 " 000000 "중간에 연결하고 몇 줄의 공백과 0을 추가하여 다음을 얻습니다.

\  \XXXXXXXXXXXX  000000  XXXXXXXXXXXX//0/
0\  \XXXXXXXXXXX  000000  XXXXXXXXXXX//0/ 
\0\  \XXXXXXXXXX  000000  XXXXXXXXXX//0/  
\\0\  \XXXXXXXXX  000000  XXXXXXXXX//0/  /
X\\0\  \XXXXXXXX  000000  XXXXXXXX//0/  /X
XX\\0\  \XXXXXXX  000000  XXXXXXX//0/  /XX
XXX\\0\  \XXXXXX  000000  XXXXXX//0/  /XXX
XXXX\\0\  \XXXXX  000000  XXXXX//0/  /XXXX
XXXXX\\0\  \XXXX  000000  XXXX//0/  /XXXXX
XXXXXX\\0\  \XXX  000000  XXX//0/  /XXXXXX
XXXXXXX\\0\  \XX  000000  XX//0/  /XXXXXXX
XXXXXXXX\\0\  \X  000000  X//0/  /XXXXXXXX
XXXXXXXXX\\0\  \  000000  //0/  /XXXXXXXXX
XXXXXXXXXX\\0\    000000  /0/  /XXXXXXXXXX
XXXXXXXXXXX\\0\   000000  0/  /XXXXXXXXXXX
XXXXXXXXXXXX\\0\  000000  /  /XXXXXXXXXXXX
XXXXXXXXXXXXX\\0  000000    /XXXXXXXXXXXXX
XXXXXXXXXXXXXX\\  000000   /XXXXXXXXXXXXXX
                  000000                  
000000000000000000000000000000000000000000
000000000000000000000

깃발의 후반에는 거의 정확히 동일한 문자가 역순으로 표시됩니다 (오른쪽에서 왼쪽으로, 아래에서 위로).

전체 플래그를 완성하기 위해 남은 것은 첫 번째 줄을 밀어 넣고 마지막에 공백을 밑줄로 바꾸고 세로 막대와 실제 줄 바꿈을 도입하는 것입니다.

암호

S'_42*S   e# Push a space, a string of 42 underscores and another space.
K,        e# Push [0 ... 19].
'XE*      e# Push a string of 14 X's.
"//0/  /" e# Push that string.
+2*       e# Concatenate and repeat the result twice.
f>        e# Push copies with 0, ..., 19 character removed from the left.
Gf<       e# Truncate each result after 16 characters.
_2>       e# Copy the array and discard its first two elements.
\W%2>     e# Reverse the original array and discard its first two elements.

.{        e# For each pair of corresponding strings in the arrays:
  "\/"    e#   Push "\/".
  _W%     e#   Reverse a copy to push "/\\".
  er      e#   Perform transliteration on the string from the right array..
  " 000 " e#   Push that string.
  :_      e#   Duplicate each charcter to push "  000000  ".
  @       e#   Rotate the string from the left array on top.
}         e#

" 0 0"    e# Push that string.
[I6I63]   e# Push [18 6 18 63].
.*        e# Vectorized repetition.
+s        e# Concatenate ad flatten.
_W%+      e# Push a reversed copy and concatenate.
42/       e# Split into chunks of length 42.
{         e# For each chunk:
  N       e#   Push a linefeed.
  "||"@*  e#   Join the string "||", using the chunk as separator.
}/        e#
S'_er     e# Replace spaces with underscores in the last string.

1

자바 스크립트 ES6, 726 725 655 647 643 바이트

a="__";l=" ";b=l+l;c=`|
|`;d="X";e="0";f=b+e[r="repeat"](6)+b;g="\\  \\";h="//0/";i="/  /";Z="\\";A=Z+Z;j=A+0;k=d[r].bind(d);y=c+l[r](16)+f+l[r](16);z=c+e[r](42);B="/";C="\\0";D="0//";E=B+D;q=n=>k(n)+f+k(n);F=n=>g+q(n)+h;G=n=>c+k(n)+j+F(9-n)+k(3+n);H=n=>A+k(n+1)+c+k(n);I=n=>q(n)+g+e+H(8-n)+i+D;console.log(l+a[r](21)+` 
|`+F(12)+c+e+F(11)+d+c+C+F(10)+d+d+c+j+F(9)+k(3)+c+d+j+F(8)+k(4)+G(2)+G(3)+G(4)+G(5)+G(6)+G(7)+G(8)+y+z+z+z+y+c+k(14)+B+l+f+H(13)+B+b+f+e+H(12)+i+f+C+H(11)+i+e+f+l+C+H(10)+i+"0/"+f+b+C+H(9)+i+D+I(0)+I(1)+I(2)+I(3)+I(4)+I(5)+I(6)+I(7)+I(8)+q(9)+g+e+A+c+b+E+q(10)+g+e+Z+c+l+E+q(11)+g+e+c+E+k(12)+a+e[r](6)+a+k(12)+Z+a+Z+"|")

2
ES6을 사용하고 있는데 왜 팻 화살표 기능이 아닌가?
Downgoat

1
또한 템플릿 문자열의 경우 약 2 바이트를 줄일 수 있습니다.\n
Downgoat

1

PHP, 240 바이트

 <?=str_pad(_,42,_)." ";for($o=18;$o--;)$r.="
".($s="|".substr("XXXXXXXXXXXXXX\\\\0\  \\XXXXXXXXXXXX//0/",$o,16)."  000").($v=strrev)(strtr($s,"\\","/"));echo$r;for(;$i<5;)echo"
",$s=str_pad("|",19,$i++%4?0:" ")."000",$v($s);echo"
",$v($r);

여는 태그 앞에 공백을 기록하십시오! 온라인으로 사용해보십시오 .


0

다시 SpecBAS-507 바이트

다음은 Brian의 위와 비슷한 버전입니다 (아직 언급할만한 명성이 없지만). 디스플레이를 생성하기 위해 매우 다른 방법을 사용합니다.

10 DEF FN rr$(r$)=r$(2 TO)+r$(1): DEF FN rl$(r$)=r$(LEN r$)+r$( TO LEN r$-1)
20 a$="\  \"+"x"*14+"\\0",b$="x"*12+"//0/  /xx",c$="x"*14+"/  /0//",d$="\\"+"x"*14+"\  \0",e$="  000000  ": ?" ";"_"*42: DO 18: ?"|";a$( TO 16);e$;b$( TO 16);"|": a$=FN rl$(a$),b$=FN rr$(b$): LOOP: ?"|";TAB 17;e$;TAB 43;"|"'("|"+("0"*42)+"|"+#13)*3;"|";TAB 17;e$;TAB 43;"|": DO 18: ?"|";c$( TO 16);e$;d$( TO 16);"|": c$=FN rr$(c$),d$=FN rl$(d$): LOOP: ?#11;TAB 17;"__";TAB 25;"__";TAB 40;"__"

0

풍선 껌 , 213 바이트

00000000: b5d3 0106 4421 1080 6100 de29 e606 759c  ....D!..a..)..u.
00000010: 105d a4c3 6fdb 461f 030f f607 f019 994c  .]..o.F........L
00000020: 8cd7 c533 7b44 6f14 5177 118d 4aa9 653e  ...3{Do.Qw..J.e>
00000030: b3a2 13d6 c6c2 1d9d b076 6375 c2d8 b270  .........vcu...p
00000040: 5327 8c6d 5fac 4e18 bbb1 3a61 ecc1 6ab1  S'.m_.N...:a..j.
00000050: f662 b518 0b46 83b1 6034 180b 5683 b162  .b...F..`4..V..b
00000060: f5c5 58b1 1a8c 05a3 c158 b1fa 62ac 587d  ..X......X..b.X}
00000070: 3156 ac06 630f 8ed4 c1a9 85eb ebfe 8adf  1V..c...........
00000080: bf39 6da3 803b 67cc eab0 e08a 0663 0b93  .9m..;g......c..
00000090: d160 2c3f 8806 6b99 8c06 6bc1 1d0d c67a  .`,?..k...k....z
000000a0: 2968 3056 8c06 63c5 6830 568c 0663 c5e8  )h0V..c.h0V..c..
000000b0: 8bb5 62f5 c1d8 8cd1 1b6b 3346 2fac cd58  ..b......k3F/..X
000000c0: bdb0 3663 f4c6 da8c d10b 6f4b 63fc f018  ..6c......oKc...
000000d0: 4d3d 469f 1f                             M=F..

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.