任务:
考虑一下问题:“给一个棋盘一个正方形不见了的棋子,切成21个L-三聚氰胺”。有一个众所周知的建设性证明,即可以对任何大小为2的幂的方形棋盘进行此操作。它的工作原理是将棋盘分割成一个较小的棋盘,棋盘上有一个孔和一个大的Triomino,然后观察该Triomino可以递归地切成四个Triomino。
在此任务中,您需要将8x8棋盘切成L形的三角骨,然后用四种颜色着色,以使两个相邻的三角骨都不具有相同的颜色。
规格:
您输入的是孔的位置,以一对整数形式给出。您可以选择哪一个是列索引,哪个是行索引。您可以选择是从0还是从1开始,然后从哪个角开始增加。您可能需要A..H作为第一个坐标,而不是0..7或1..8。您也可以接受按字典顺序打包成单个整数0..63或1..64(行主要或列主要,从左到右或从右到左,从上到下或从上到下)的两个坐标。您可以编写完整的程序或函数。
您可以将图块输出为ASCII,彩色ASCII或图形图元。如果选择ASCII输出,则可以选择任何四个可打印的ASCII字符来表示四种颜色。如果选择彩色ASCII,则可以选择任何四个可打印ASCII字符,或者仅选择一个空格以外的字符。孔必须用空格字符表示。如果您的角色之一是空格字符,则靠近该孔或棋chess边缘的三聚氰胺可能不是这种颜色。
如果选择彩色ASCII或图形输出,则可以从环境中可用的#000,#00F,#0F0,#0FF,#F00,#F0F,#FF0,#FFF中选择任意四种颜色。如果选择图形输出,则您的图形基元必须以至少32x32像素的正方形填充,并以不超过两个其他颜色的像素分隔。如果以上超出您的环境的屏幕分辨率,则将最小尺寸要求放宽到仍然适合屏幕的最大正方形尺寸。
您可以选择给定棋盘的任何有效平铺。您可以选择任意四种平铺颜色。您在所有输出中选择的四种颜色必须相同,但是并不需要在每个输出中使用每种颜色。
例子:
输入的可能输出= [0,0](左上角)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
同一程序的另一个可能的输出(输入= [0,7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
对于输入“ D1”(注意非标准但允许的棋盘方向),也可能会产生不同的程序,
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA