「エンドビュー」としても知られるEasy As ABCは、周りに文字が入った空のグリッドが表示されるパズルです。各文字の正確に1文字がすべての行と列に含まれるように、グリッドを部分的に埋める必要があります。さらに、行(または列)の最後の文字は、その行(または列)でその方向から見える最初の文字でなければなりません。このコードゴルフの目標は、Easy As ABCパズルを解くことです。
たとえば、MICの文字を使用した今年のMITミステリーハントの Easy As ABCパズルは次のとおりです。
解決策は次のとおりです。
(Csのアーティファクトについては申し訳ありません。パズルの残りの部分から無関係な情報を編集してみました。)
I / O
入力は、文字列の配列または場合によっては区切り文字を含む文字列になります。左上隅から始まり、時計回りに進みます。たとえば、上記のパズルは次のように入力できます。
".CMM.M|....IM|.....I|C.ICI."
出力は、境界線の有無にかかわらず、解決されたグリッドである必要があります。文字の配列、文字列の配列、またはその他の便利な形式として使用できます。同じ「空白」文字を入力として受け入れ、出力として表示する必要がありますが、その空白文字は何でもかまいません。それらが単一の文字列である場合、入力と出力の両方に同じセパレーター(入力の両側と出力の行の間)があるか、セパレーターがまったくない必要があります。
解決不可能なパズルの場合、ソリューションと間違えられないものを出力する必要があります。パズルには複数の解決策があるとは思わないでしょう。
任意の数の文字と任意のサイズのグリッドを許可する必要があります。使用されたすべての文字がグリッドの境界線に表示されます。
これはコードゴルフです:いつものように、最短のコードが勝ちます!
テストケース
"T.AA..|.T.TSS|..TST.|A...SS"
"R.RU..|B.B..B|.UR.UB|UR..B."
"N...NK|E.NK.K|..KK..|....EK"
"CA..DBD|.B..CC.|.D.DEB.|DB.A..A"
"...DDEBE|DC..EBBD|BA..ABF.|E..FECDE"