Calculer distance euclidienne
jj1k
Messages postés
32
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour
j'ai un fichier txt qui contient une liste des villes à partir des coordonées X et Y je veux calculer la distance euclidiene entre tou les ville

comment je peux le faire ?
Merci
j'ai un fichier txt qui contient une liste des villes à partir des coordonées X et Y je veux calculer la distance euclidiene entre tou les ville

comment je peux le faire ?
Merci
A voir également:
- Distance euclidienne java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Allumer pc à distance - Guide
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
Bonjour,
Rien de nouveau par rapport à tes autres discussions, tu lis ton fichier texte ligne par ligne, tu map avec des objets représentant chaque ligne et tu agrèges les résultats...
Ce qui donne (en considérant les 3 premières villes du fichier)
On peut éventuellement supprimer les couples inutiles en rajoutant un
Rien de nouveau par rapport à tes autres discussions, tu lis ton fichier texte ligne par ligne, tu map avec des objets représentant chaque ligne et tu agrèges les résultats...
import java.awt.Point;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
class Ville {
final int id;
final double x, y;
Ville(String str) {
String[] tab = str.split(",");
id = Integer.parseInt(tab[0]);
x = Double.parseDouble(tab[1]);
y = Double.parseDouble(tab[2]);
}
}
class Parcours {
final int a, b;
final double distance;
Parcours(Ville a, Ville b) {
this.a = a.id;
this.b = b.id;
distance = Point.distance(a.x, a.y, b.x, b.y);
}
public String toString() {
return String.format("(%d,%d)=%f", a, b, distance);
}
}
public class Test{
public static void main(String[] args) throws Exception {
List<Ville> villes = Files.lines(Paths.get("C:/test.txt")).skip(1)
.map(Ville::new).collect(Collectors.toList());
List<Parcours> parcours = villes.stream().flatMap(a ->
villes.stream().map(b -> new Parcours(a, b)))
.collect(Collectors.toList());
System.out.println(parcours);
}
}
Ce qui donne (en considérant les 3 premières villes du fichier)
[(0,0)=0,000000, (0,1)=5,301141, (0,2)=9,036998,
(1,0)=5,301141, (1,1)=0,000000, (1,2)=14,021260,
(2,0)=9,036998, (2,1)=14,02126, (2,2)=0,000000]
On peut éventuellement supprimer les couples inutiles en rajoutant un
filter(b -> a.id < b.id)pour obtenir :
[(0,1)=5,301141, (0,2)=9,036998, (1,2)=14,021260]
mais comment je peux récupérer les résultats (les distances) dans un fichier txt ?
try (PrintWriter pw = new PrintWriter("C:/result.txt")) { parcours.forEach(pw::println); }