2日目 問題3(マジック)

            ---------------------------
           | 1 | 2 | 3 | 4 |
            ---------------------------
           | 8 | 7 | 6 | 5 |
            ---------------------------

図1:初期配置

 マジックキューブ(magic cube)の成功に続いて、ルービック氏はマジック スクエア(magic square)と呼ばれる、マジックキューブの平面版を発明した。 これは大きさが同じ8つの正方形からなる1枚のシートである (図1参照)。この問題では、我々は各正方形が異なる色を持つ ようなバージョンを考える。各色を1〜8の整数で表わす(図1参照)。 シートの"配置"(各色がどこに置かれているか)は、左上から始めて 時計回りの順に各正方形の色を読んでいったときの数字の列で与える。 例えば、図1の配置は列 (1, 2, 3, 4, 5, 6, 7, 8) である。 この配置を初期配置とする。
文字 'A','B','C' で表わされる3つの基本変換をシートに適用することが できる:

 'A' : 上と下の行を交換する。
 'B' : シート全体に対して1つだけ右に巡回シフトする。
 'C' : 中央の4つの正方形に対して時計回りの回転を1回施す。

 すべての配置は、この3つの基本変換を用いることによって得ることができる。 初期配置に基本変換を適用するとどのようになるかを図2に示した。
初期配置を、ある特定の目標の配置に変えるために基本変換をどんな順序で 適用したらよいかを求めるプログラムを書け (Subtask A)。もし、基本変換の 適用回数が300を越えなければ、2点が加算される (Subtask B)。

      基本変換A 
            ---------------------------  
           | 8 | 7 | 6 | 5 | 
            ---------------------------  
           | 1 | 2 | 3 | 4 | 
            ---------------------------  

基本変換B --------------------------- | 4 | 1 | 2 | 3 | --------------------------- | 5 | 8 | 7 | 6 | ---------------------------
基本変換C --------------------------- | 1 | 7 | 2 | 4 | --------------------------- | 8 | 6 | 3 | 5 | ---------------------------

図2:3つの基本変換

入力データ

 ファイル INPUT.TXT には、第1行に目標の配置を表わす8つの正整数が 書いてある。

出力データ

 ファイル OUTPUT.TXT の最初の行に、基本変換の適用回数 L を書き出す プログラムを書け。それに続く L 行には、基本変換を適用順に出力せよ。 各基本変換は、それを表わす文字 (A, B, C)1つを1行に1つずつ書くこと。

ツール

 MTOOL.EXE はタスクディレクトリ(この問題のタスクディレクトリは MAGIC で ある)に置いてある実行形式であるが、あなたがマジックスクエアを試しに プレイしてみることができるようになっている。
 "mtool input.txt output.txt"
を実行することによって、目標の配置と、それにを実現する基本 変換の適用順序とを求めることができる。

入出力例

 図3は入力ファイルと、それに対応する出力ファイルの例である。

    INPUT.TXT 
    --------------- 
    2 6 8 4 5 7 3 1 

    OUTPUT.TXT     --------     7     B     C     A     B     C     C     B

図3