CJam, 61 59 43 40 38 36 바이트
{{_N/eeSf.*:sW%zsS-\{_' >{;(}&+}/}*}
이것은 스택에서 문자열과 정수를 기대하는 익명 함수입니다.
19 바이트의 골프를 즐기신 @ jimmy23013에게 감사드립니다.
CJam 통역사 에서 온라인으로 사용해보십시오 .
생각
바둑판의 인쇄 가능한 문자를 동쪽에서 남쪽으로 읽음으로써 주문을 할당 할 수 있습니다.
이렇게하면 원래의 회전 된 바둑판
G B
. G B B
G G G B B B
G G . G B . B B
B B B B . . Y G . Y . Y Y P P P . . . B . . G G . G
B B B . . G . . . Y Y Y P P P P . . . . . G G G
B . B . . . . . Y . Y P P . . . . . G Y . G
B . . . . . . . . Y P . . . . . . . G G
. . . . . . . . . . . . . . . . . .
. P . . . . . O O . R . . . . . . . . Y
P P . . . . . . . O O R . R R . . . . Y Y .
P P P . . . R . . O O . R R R . . . O . . . Y Y
P P P P . . R . . O O O O R . R R . . . O . Y Y Y Y
R . R R O O O .
R R R O O O
R . O .
R O
지다
G.GGGGGG.GBBBB..YG.Y.YYBBB..G...YYYB.B.....Y.YB........Y..........P.....OO.PP.......OOPPP...R..OO.PPPP..R..OOOOR.RRRRRR.R
과
BBBBBBB.BBPPP...B..GG.GPPPP.....GGGPP.....GY.GP.......GG.........R........YR.RR....YY.RRR...O...YYR.RR...O.YYYYOOO.OOOO.O
각기.
첫 번째 바둑판에서 문자를 북동쪽으로 읽은 다음 남동쪽으로 읽으면 두 번째 시퀀스를 찾을 수 있습니다.
코드에서 이것을 달성하기 위해, 우리는 n-1 공백을 바둑판 의 n 번째 행 앞에 추가 합니다 (왼쪽에 표시됨). 그런 다음 행의 순서를 반대로 바꿉니다 (오른쪽에 표시).
G R
. G R .
G G G R R R
G G . G R . R R
B B B B . . Y G . Y . Y Y P P P P . . R . . O O O O
B B B . . G . . . Y Y Y P P P . . . R . . O O .
B . B . . . . . Y . Y P P . . . . . . . O O
B . . . . . . . . Y . P . . . . . O O .
. . . . . . . . . . . . . . . . . .
. P . . . . . O O . B . . . . . . . . Y
P P . . . . . . . O O B . B . . . . . Y . Y
P P P . . . R . . O O . B B B . . G . . . Y Y Y
P P P P . . R . . O O O O B B B B . . Y G . Y . Y Y
R . R R G G . G
R R R G G G
R . . G
R G
마지막으로 행을 열로 바꿉니다.
B
BB
BBB
B.BB
PPP...B..GG.G
PPPP.....GGG
PP.....GY.G
P.......GG
.........
R........Y
R.RR....YY.
RRR...O...YY
R.RR...O.YYYY
OOO.
OOO
O.
O
공백은 도처에 있지만 인쇄 가능한 문자는 동쪽으로 읽은 다음 남쪽으로 읽으면 올바른 순서입니다.
할 남은 것을 모두는 대체 N을 번째 바이 원래 체크 무늬의 인쇄 가능한 문자 N 일 마지막 수정의 인쇄 가능한 문자.
암호
e# Stack: String B, Integer A
{ }* e# Repeat A times:
_N/ e# Push a copy of B and split it at linefeeds.
ee e# Enumerate the lines of B.
Sf.*:s e# Execute S.*s for each line:
e# [4 "abc"] -> " abc"
W% e# Reverse the order of line lines.
z e# Zip; transpose rows with columns.
s e# Flatten the arrays of strings.
S- e# Remove spaces.
e# This pushes a string L.
\{ }/ e# For each character C in the unmodified B:
_' > e# Check if C is bigger than ' '.
{ }& e# If it is:
;( e# Discard C and shift out a char from L.
+ e# Append a char (C or from L) to L.
e# L is B rotated by 60 degrees. Set L := B.
_,,Sf*\.+W%ze_
.