仕事:
問題を考えてみましょう:「チェス盤に1つの正方形が欠けている場合、それを21個のL-トリオミノにカットします」。これは、2の累乗である任意の正方形のチェス盤サイズで実行できるというよく知られた建設的な証拠があります。チェス盤を、穴のある小さなチェス盤と1つの大きなトリオミノに分割し、そのトリオミノを4つのトリオミノに再帰的に切断できることを確認します。
このタスクでは、8x8のチェス盤をL字型のトリオミノにカットし、隣接する2つのトリオミノが同じ色にならないように4色で着色する必要があります。
仕様:
入力は、穴の位置であり、整数のペアとして指定されます。列インデックスと行インデックスを選択できます。それぞれが0から開始するか、1から開始し、どのコーナーから増加するかを選択できます。0..7または1..8の代わりに、最初の座標としてA..Hが必要な場合があります。また、両方の座標を辞書式順序(行優先または列優先、左から右または右から左、上から下または下から上)で単一の整数0..63または1..64にパックすることもできます。完全なプログラムまたは関数を記述できます。
タイルをASCII、色付きASCII、またはグラフィックプリミティブとして出力できます。ASCII出力を選択した場合、4色を表す印刷可能なASCII文字を4つ選択できます。色付きのASCIIを選択した場合、任意の4つの印刷可能なASCII文字またはスペース以外の1文字のみを選択できます。穴はスペース文字で表す必要があります。キャラクターの1つがスペースキャラクターである場合、穴に隣接するまたはチェス盤の端にあるトリオミノは、この色ではありません。
色付きASCIIまたはグラフィック出力を選択する場合、#000、#00F、#0F0、#0FF、#F00、#F0F、#FF0、#FFF、またはご使用の環境で利用可能な最も近いものから任意の4色を選択できます。グラフィカル出力を選択する場合、グラフィカルプリミティブは、サイズが少なくとも32x32ピクセルの正方形で塗りつぶされ、他の色の2ピクセル以下で区切られている必要があります。上記が環境の画面解像度を超える場合、最小サイズ要件は、画面に収まる最大の正方形サイズに緩和されます。
指定されたチェスボードの有効なタイルを選択できます。選択したタイルの4色を選択できます。4色の選択はすべての出力で同じでなければなりませんが、すべての出力ですべての色を使用する必要はありません。
例:
入力の可能な出力= [0、0](左上隅)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
同じプログラムの別の可能な出力(入力= [0、7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
「D1」の入力用に別のプログラムが生成される場合もあります(非標準ですが、チェスボードの向きに注意してください)。
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA