あなたは農民であり、羊の群れが逃げ出した!大野!
それらを収容するフェンスを構築することにより、それらの羊を切り上げます。予算上の農家として、可能な限り最小のフェンスを使用したいと考えています。幸いなことに、彼らは世界で最も賢い羊ではなく、逃げた後も気にしないでください。
仕事
座標のリストを指定して、羊を収容するのに必要なフェンスセグメントの最小量を出力します。
ルール
- 羊が歩き回ることができない場合(フェンスに穴がない場合)は収容されます。
- フェンスの1つのブロックにすべての羊を入れる必要はありません-互いに独立した複数のフェンスで囲まれたエリアが存在する可能性があります。
- フェンスセグメントは基本方向に向けられています。
- 各座標タプルは単一の羊を表します。
- 入力は正の整数ペア
x>0&y>0でなければなりませんが、言語に合わせて適切にフォーマットできます。- すなわち:
{{1,1},{2,1},{3,7}, .. }または[1,2],[2,1],[3,7], ..
- すなわち:
- フェンスで囲まれたエリア内の空きスペースは問題ありません。
- 座標が特定の順序で入力されていると想定することはできません。
たとえば、1頭の羊には4フェンスセグメントを完全に収容する必要があります。
テストケース
[1,1]
4
[1,1],[1,2],[2,2]
8
[2,1],[3,1],[2,3],[1,1],[1,3],[3,2],[1,2],[3,3]
12
[1,1],[1,2],[2,2],[3,7],[4,9],[4,10],[4,11],[5,10]
22
[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]
36
[1,1],[2,2],[3,3],[4,4],[6,6],[7,7],[8,8],[9,9]
32
[2,1],[8,3],[8,4]
10
ノート
- 入力座標が有効であると想定できます。
- アルゴリズムは、合理的に大きな整数座標(言語の最大サポート値まで)に対して理論的に機能するはずです。
- プログラムまたは機能の完全な答えは大丈夫です。
これはcode-golfなので、バイト単位の最短回答が勝ちです!
@Phoenixいいえ、各
—
CzarMatt
x,y入力は一緒でなければなりません。いい考えですが、私は自分でそれを考えていませんでした。
座標の境界は何ですか?0とネガは可能ですか?
—
AGourd
これは驚くほど難しいです。すべてのケースを処理するヒューリスティックがあると思うたびに、見落としていることがあります。
—
xnor
うわー、なんて挑戦だ。私は自分の損失を認めます。これを05AB1Eでねじ止めします。
—
魔法のタコUr
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}