introduction
Imaginez que vous êtes sur un plan cartésien bidimensionnel et que vous souhaitez déterminer votre position sur celui-ci. Vous connaissez 3 points sur cet avion et votre distance à chacun d'eux. Bien qu'il soit toujours possible de calculer votre position à partir de cela, faire cela dans votre tête est assez difficile. Vous décidez donc d'écrire un programme pour cela.
Le défi
Étant donné 3 points et votre distance par rapport à eux, sortez les coordonnées de votre position.
- L'entrée et la sortie peuvent être dans n'importe quel format pratique, y compris en utilisant des nombres complexes au lieu de vrais. Veuillez préciser dans votre réponse le format que vous utilisez.
- Vous obtiendrez toujours exactement 3 points distincts avec leur distance à vous.
- Les coordonnées et les distances seront flottantes avec une précision arbitraire. Votre sortie doit être correcte avec 3 décimales. L'arrondi dépend de vous. Veuillez préciser dans votre réponse.
- Vous pouvez supposer que les trois points ne sont pas colinéaires, il y aura donc toujours une solution unique.
- Vous n'êtes pas autorisé à renforcer brutalement la solution.
- Vous ne pouvez pas utiliser de modules internes qui banalisent ce problème particulier. Les extensions pour les normes vectorielles, etc. sont cependant autorisées.
Astuce pour commencer:
Pensez à un cercle autour de chacun de ces 3 points avec leur distance à vous comme rayon.
Règles
- Fonction ou programme complet autorisé.
- Règles par défaut pour les entrées / sorties.
- Des échappatoires standard s'appliquent.
- Il s'agit de code-golf , donc le nombre d'octets le plus bas l'emporte. Tiebreaker est une soumission antérieure.
Cas de test
Le format d'entrée pour un point ici est [[x,y],d]
avec x
et y
étant les coordonnées et d
étant la distance à ce point. Les 3 de ces points sont classés dans une liste. La sortie sera x
puis y
dans une liste.
[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3] [[[24.234, -13.902], 31.46], [[12.3242, 234.12], 229.953], [[23.983, 0.321], 25.572]] -> [-1.234, 4.567] [[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]
Vous pouvez générer des cas de test supplémentaires avec ce programme Pyth . L'emplacement va sur la première ligne de l'entrée et les 3 points sont sur les 3 lignes suivantes.
Codage heureux!
solve
(étant donné trois équations de cercle) banaliser le problème? Je pensais que c'était le cas, mais si vous êtes d'accord avec de telles choses, je vais aller de l'avant et l'afficher.