この小さなゲームに触発されました。
チャレンジ
次のように、グリッドの初期位置(常に5x5)を入力として指定します。
-ABCD
-A---
---C-
---BD
--E-E
すべての空の-スペースを削除して、文字(すべて同じ文字)を接続する必要があります。文字は常にになりますA,B,C,D and E。
すべての文字のペアは、直角に曲がる単一の非分岐線で接続する必要があります(まったく同じ文字を使用して線を描きます)。
入力は、各開始文字が正確に2回あることが保証されており、常にすべての開始文字AEを持ちます。
入力は、標準入力、または関数への引数としての唯一の文字列、または文字の配列/行列/リストから読み取ることができ、コーディング言語に最も便利な方法です。
これはコードゴルフなので、バイト単位の最短コードが勝ちます!
例
各問題に対する解決策は1つだけではありませんが、ルールはすべてに適用されます(空白や区切り文字はありません)。そして、入力には少なくとも1つの正しい出力があることが保証されています。
文字Aを接続してみましょう。
AABCD
AA---
AA-C-
AA-BD
AAE-E
次に、文字Bを接続します。
AABCD
AAB--
AABC-
AABBD
AAE-E
次に、文字Cを接続します。
AABCD
AABC-
AABC-
AABBD
AAE-E
次に、文字Dを接続します。
AABCD
AABCD
AABCD
AABBD
AAE-E
そして、最後にE:
AABCD
AABCD
AABCD
AABBD
AAEEE
別のサンプル
input:
E--E-
BB-C-
AD---
---C-
AD---
output:
EEEEE
BBECE
ADECE
ADECE
ADEEE
input:
A----
---B-
-C-C-
-D-D-
BE-EA
output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA
@ Sp3000はdupではありません。このチャレンジでは正しい入力が保証されるためです。
—
Nathan Merrill
入力は、各開始文字が正確に2回あることが保証されていますか?常にすべての開始文字が含まれ
—
Ton Hospel 2016年
A-Eますか?
かなり小さな違いのように見える@NathanMerrill。可解性のチェックがコードの大部分を占めるとは思えません。
—
マーティンエンダー
私の挑戦でMartinBüttner@、可解性のチェックはありません何の必要な接続、挑戦。2つの課題には類似点がありますが、私の心の中で大幅に異なると感じています。
—
Nathan Merrill
このようないくつかの質問に対する私のお気に入りの手法は、乱数を使用して位置を埋め、バックトラックを回避し、解決策を見つけたら停止することです。これは、ソリューションが保証されている場合にのみ機能します。それ以外の場合、プログラムは永久に実行できます(ソリューションが保証されている場合は、長いランタイムが指数関数的に長時間発生する可能性が低くなるようにコードを記述することができます)。この手法の場合、質問は大きく異なります
—
Ton Hospel