古代ローマの王は、魔方陣が有効かどうかを判断するのに苦労しています。彼がチェックしている魔方陣には、数字の間にセパレータが含まれていないためです。彼はソフトウェアエンジニアを雇って、魔法陣が有効かどうかを判断する手助けをしました。
入力の説明
入力はSTDINまたはコマンドライン引数で受け取ります。変数で入力を事前に初期化することはできません(たとえば、「このプログラムは変数への入力を想定していますx
」)。入力は次の形式です。
<top>,<middle>,<bottom>
それぞれ<top>
、<middle>
、と<bottom>
しか大文字の文字を含む文字列ですI
、V
とX
。スペースやその他の文字は含まれません。各文字列は3つのローマ数字を表すため、3x3の数値行列になります。ただし、これらのローマ数字はあいまいである可能性があります(ただし、そうである必要はありません)。これを例を使って説明します。次の3つのローマ数字の行の例を考えてみます。各数字の間にスペースはありません。
IVIIIIX
文字の間にスペースがないため、ここの数字には2つの可能性があります。
- 1、8、9(
I VIII IX
) - 4、3、9(
IV III IX
)
マトリックスの3行すべてが不明確である可能性があると考える場合、単一の入力から多くの異なる3x3マトリックスが存在する可能性があります。
I VII I IX
各行は常に3つのローマ数字を表すため、1、7、1、9()などのシーケンスは使用できないことに注意してください。また、ローマ数字は有効でなければならないため、1、7、8(I VII IIX
)などのシーケンスも使用できないことに注意してください。
出力の説明
出力:
- 整数
A
。ここでA
、あいまいな入力から形成できる一意の3x3行列の数。 - ユニークな3x3マトリックスのいずれかが魔方陣を形成する場合の真実値、または:
- falsy値ならばどれもユニークな3×3の行列のは、魔方陣を形成していません。
真実で偽りの値は一貫している必要があります。それらはコンマで区切られます。
ユニークと見なされるものについて、いくつかの説明が必要です。マトリックスが以前に見つかったマトリックスと正確に同じ位置に正確に同じ数を持たない限り、それは一意としてカウントされます。これは、以前に見つかったマトリックスの反射などが一意としてカウントされることを意味します。
入力と出力の例
これらの例では、私はtrue
私の真実の値と私の偽りの値として使用していfalse
ます。
入力:VIIIIVI,IIIVVII,IVIXII
出力:(24,true
魔法の三角形は8-1-6、3-5-7、4-9-2です。)
入力:IIIXVIII,IVIII,VIIII
出力:210,false
エクストラ
- 選択した言語に含まれている場合、組み込みのローマ数字変換関数を使用することはできません。