Das Problem:
Suchen Sie bei einer nicht leeren Menge von Punkten in der kartesischen Ebene den kleinsten Kreis, der sie alle einschließt ( Wikipedia-Link ).
Dieses Problem ist trivial, wenn die Anzahl der Punkte drei oder weniger beträgt (wenn es einen Punkt gibt, hat der Kreis einen Radius von Null; wenn es zwei Punkte gibt, ist das Liniensegment, das die Punkte verbindet, der Durchmesser des Kreises; wenn es solche gibt) Bei drei (nicht-kolinearen) Punkten ist es möglich, die Gleichung eines Kreises zu erhalten, der sie alle berührt, wenn sie ein nicht-stumpfes Dreieck bilden, oder eines Kreises, der nur zwei Punkte berührt und den dritten einschließt, wenn das Dreieck stumpf ist. Aus diesem Grund sollte die Anzahl der Punkte mehr als drei betragen.
Die Herausforderung:
- Eingabe: Eine Liste von 4 oder mehr nicht-kolinearen Punkten. Die Punkte sollten X- und Y-Koordinaten haben. Koordinaten können Floats sein. Um die Herausforderung zu erleichtern, sollten keine zwei Punkte dieselbe X-Koordinate haben.
Beispielsweise:[(0,0), (2,1), (5,3), (-1,-1)] - Ausgabe: Ein Tupel von Werten,
(h,k,r)so dass die Gleichung des kleinsten Kreises ist, der alle Punkte einschließt.
Regeln:
- Sie können die für Ihr Programm geeignete Eingabemethode auswählen.
- Die Ausgabe sollte auf
STDOUTeine Funktion gedruckt oder von dieser zurückgegeben werden. - "Normale" Mehrzwecksprachen werden bevorzugt, es ist jedoch jede andere Sprache akzeptabel.
- Sie können davon ausgehen, dass die Punkte nicht kollinear sind.
- Das ist Code-Golf, also gewinnt das kleinste Programm in Bytes. Der Gewinner wird eine Woche nach dem Absenden der Challenge ermittelt.
- Bitte geben Sie die von Ihnen verwendete Sprache und die Länge in Bytes als Überschrift in der ersten Zeile Ihrer Antwort an:
# Language: n bytes
- Bitte geben Sie die von Ihnen verwendete Sprache und die Länge in Bytes als Überschrift in der ersten Zeile Ihrer Antwort an:
Testfälle:
- 1:
- Eingang:
[(-8,0), (3,1), (-6.2,-8), (3,9.5)] - Ausgabe:
[-1.6, 0.75, 9.89]
- Eingang:
- 2:
- Eingang:
[(7.1,-6.9), (-7,-9), (5,10), (-9.5,-8)] - Ausgabe:
[-1.73, 0.58, 11.58]
- Eingang:
- 3:
- Eingang:
[(0,0), (1,2), (3,-4), (4,-5), (10,-10)] - Ausgabe:
[5.5, -4, 7.5]
- Eingang:
- 4:
- Eingang:
[(6,6), (-6,7), (-7,-6), (6,-8)] - Ausgabe:
[0, -0.5, 9.60]
- Eingang:
Viel Spaß beim Golfen !!!