펄 6 , 98 바이트
{map(&min,[X] map (($_='#'x$^d~'+'x$^c)~'X'x*~.flip).comb,$^a,$^b).rotor($b+2*($c+$d)).join("\n")}
온라인으로 사용해보십시오!
이것은 포트입니다 xnor의 Python answer .
펄 6 , 115 바이트
->\a,\b,\c,\d{$_=['#'xx$!*2+a]xx($!=c+d)*2+b;.[d..^*-d;d..^a+$!+c]='+'xx*;.[$!..^*-$!;$!..^a+$!]='X'xx*;.join("
")}
온라인으로 사용해보십시오!
Perl 6의 다차원 목록 할당을 사용하는 대략적인 익명의 코드 블록. 예를 들어 목록에서 색인 2가있는 요소에 색인 1 @a[1;2] = 'X';
이 할당 'X'
되고 @a[1,2,3;3,4,5]='X'xx 9;
모든 요소가 색인으로 바뀝니다.3,4,5
이있는 이있는 색인 1,2,3
으로 바뀝니다 'X'
.
설명:
첫째, 우리는 같은리스트를 초기화 a+2*(c+d)
로 b+2*(c+d)
의 사각형 #
의.
$_=['#'xx$!*2+a]xx($!=c+d)*2+a;
State:
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
그런 다음 +
s 의 내부 사각형을 할당합니다
.[d..^*-d;d..^a+$!+c]='+'xx*;
State:
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + + + + + # #
# # + + + + + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #
마지막으로 X
s 의 가장 안쪽 사각형입니다 .
.[$!..^*-$!;$!..^a+$!]='X'xx*;
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #