CJam, 61 59 43 40 38 36 ไบต์
{{_N/eeSf.*:sW%zsS-\{_' >{;(}&+}/}*}
นี่เป็นฟังก์ชันที่ไม่ระบุชื่อซึ่งคาดว่าสตริงและจำนวนเต็มบนสแต็ก
ขอบคุณ @ jimmy23013 สำหรับการเล่นกอล์ฟขนาด 19 ไบต์
ลองใช้ออนไลน์ในล่าม 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
ตามลำดับ
เราสามารถหาลำดับที่สองในกระดานหมากรุกตัวแรกโดยอ่านตัวอักษรในภาคตะวันออกเฉียงเหนือจากนั้นก็ไปทางตะวันออกเฉียงใต้
เพื่อให้บรรลุนี้ในรหัสเราเริ่มต้นด้วยการ prepending n - 1ช่องว่างกับn THแถวของตารางหมากรุก (แสดงทางด้านซ้าย) จากนั้นเรากลับคำสั่งของแถว (แสดงทางด้านขวา)
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 THตัวอักษรที่พิมพ์ของหมากรุกเดิมโดยn THตัวอักษรที่พิมพ์ได้ของการปรับเปลี่ยนที่ผ่านมา
รหัส
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_
.