ジョーンズ氏は自転車で往復したいと考えています。彼は複数の都市を任意の順序で訪れたいと考えていますが、休日に同じ場所に2度いるのが嫌いなので、自分のルートを自分自身に渡ってはいけません。彼はサイクリングが大好きなので、ルートの長さはまったく関係ありませんが、ターゲットなしで風景を走り回るのは嫌です。彼が好むルートは、迂回することなく、市内から直線で他の都市へのルートです。
ジョーンズ氏は情熱的なコードゴルファーであるため、一連の都市を考慮して、彼のために往復旅行を計画するプログラムを見つけてもらいたいと考えています。入力の形式はA (B|C)
です。A
は都市の名前でB
ありC
、その座標です。座標は正で、1000未満であると想定できます。都市のデータセットは行区切りです。次に、入力例がどのように見えるかの例を示します。
SomeTown(1 | 10) ACity(3 | 4) どこでも(7 | 7) ホーム(5 | 1)
ジョーンズ氏はつまらないものではなく、有用なプログラムを持ちたいだけです。したがって、これらの基準を満たす限り、出力がどのように見えるかを自分で決めることができます。
- 出力は都市の地図であり、それらの間にルートが描かれています。何かが正しい場合、ルートはそれ自体と重ならないようにし、開始した場所で終了する
- 座標は通常のプログラミングのようです:(1 | 1)はNWコーナーにあります。読みやすいように、マップの境界線に一種の定規を追加します
- 都市名は地図上に書き留める必要がありますが、地図上のどこかで説明されている略語を自由に使用してください
- マップはASCIIアートまたは画像の両方にすることができます
- 出力を読みやすくする
出力は次のようになります。
1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * 10A ** A:SomeTown B:ACity C:どこでも D:ホーム
文字数が最小のプログラムが勝ちです。コンパイルに必要な場合、コンパイラ/インタープリターへのパラメーターはカウントしませんが、このルールを乱用しないでください。通常のゴルフ規則が適用されます。
ここに別のテストケースがあります。出力は私のものと一致する必要はなく、私と同じパスを選択する必要もありません。出力は手で描かれ、可能な出力を示しています。入力:
ホーム(5 | 7) スーパーマーケット(13 | 12) 公園(15 | 5) 新しい広場(9 | 16) 友達の家(20 | 11) 古城(14 | 21) リバーサイド(1 | 20) ビーチ(10 | 1) 映画(21 | 18) 森(23 | 7) 小さな島(21 | 1) コードゴルフ博物館(6 | 25) 空港(18 | 25) ティーショップ(24 | 14) レストラン(24 | 22) グレートブリッジ(3 | 12) SOビル(25 | 9)
そして、これは出力例です:
1111111111222222 1234567890123456789012345 1 H * * K 2 * * * * 3 * * * * 4 * * ** * 5 * C * 6 * * 7 AJ 8 * * 9 * Q 10 * * 11 * *** E * 12 PB *** * * 13 * * * * 14 * * * N 15 * * * * 16 * D * * 17 * * * * 18 * * I * 19 * * * * 20G * * * 21 * F * * 22 * ** * O 23 * ** * ** 24 * ** * * 25 L ** M ** A:ホーム B:スーパーマーケット C:公園 D:新しい広場 E:友達の家 F:古いお城 G:リバーサイド H:ビーチ I:映画 J:森 K:小さな島 L:コードゴルフ博物館 M:空港 N:ティーショップ O:レストラン P:素晴らしい橋 Q:SOビル
私は英語のネイティブスピーカーではありません。必要に応じて、言語や文法を修正してください。