Du bist ein Bauer und deine Schafherde ist geflohen! Ach nein!
Runden Sie diese Schafe auf, indem Sie Zäune bauen, um sie einzudämmen. Als Landwirt mit kleinem Budget möchten Sie möglichst wenig Zaun verwenden. Glücklicherweise sind sie nicht die klügsten Schafe der Welt und bewegen sich nicht, nachdem sie entkommen sind.
Aufgabe
Geben Sie anhand einer Koordinatenliste die geringste Anzahl von Zaunsegmenten aus, die zur Aufnahme der Schafe erforderlich sind.
Regeln
- Schafe sind enthalten, wenn sie nicht abwandern können (keine Löcher im Zaun).
- Sie müssen nicht alle Schafe in einem Block Zaun enthalten - es können mehrere voneinander unabhängige, umzäunte Bereiche vorhanden sein.
- Zaunsegmente sind in Hauptrichtungen ausgerichtet.
- Jedes Koordinatentupel repräsentiert ein einzelnes Schaf.
- Die Eingabe muss aus positiven Ganzzahlpaaren
x>0& besteheny>0, kann jedoch für Ihre Sprache entsprechend formatiert werden.- dh:
{{1,1},{2,1},{3,7}, .. }oder[1,2],[2,1],[3,7], ..
- dh:
- Leerstellen in einem abgegrenzten Bereich sind in Ordnung.
- Sie können nicht davon ausgehen, dass Koordinaten in einer bestimmten Reihenfolge eingegeben werden.
Zum Beispiel erfordert ein einzelnes Schaf, dass 4Zaunsegmente vollständig eingeschlossen sind.
Testfälle
[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
Anmerkungen
- Sie können davon ausgehen, dass die eingegebenen Koordinaten gültig sind.
- Ihr Algorithmus sollte theoretisch für alle relativ großen Ganzzahlkoordinaten (bis zum maximal unterstützten Wert Ihrer Sprache) funktionieren.
- Entweder vollständige Programm- oder Funktionsantworten sind in Ordnung.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
x,yEingang muss zusammen sein. Netter Gedanke, daran hatte ich selbst nicht gedacht.
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}