Problème mathématique
Fermé
benbenx9
Messages postés
1
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
16 février 2017
-
16 févr. 2017 à 19:33
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 23 févr. 2017 à 10:39
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 23 févr. 2017 à 10:39
A voir également:
- Problème mathématique
- Formule mathématique 3ème pdf - Télécharger - Études & Formations
- Logiciel mathématique gratuit - Télécharger - Sciences & Techniques
- Editeur mathématique - Télécharger - Vie quotidienne
- Symbole mathématique en français - Guide
- Clavier mathématique mac - Guide
1 réponse
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
Modifié par mamiemando le 23/02/2017 à 10:53
Modifié par mamiemando le 23/02/2017 à 10:53
Bonjour,
J'aurais dit un truc dans ce genre
Note que dans ce code, si le nombre de valeurs dans la liste est impair, la dernière valeur est ignorée.
Résultat :
Note aussi que la complexité peut être améliorée. Ici le programme est en O(n^2) si n est la taille de la liste, or tu peux réaliser la même chose en juste deux passes (donc en O(n)).
https://fr.wikipedia.org/wiki/Th%C3%A9orie_de_la_complexit%C3%A9_(informatique_th%C3%A9orique)
Il suffit lors de la première passe de repérer les doublons, puis dans la seconde de reconstruire
Bonne chance
J'aurais dit un truc dans ce genre
#!/usr/bin/env python
def pairs_from_values(values):
pairs = list()
for i in range(len(values) / 2):
if 2 * i + 1 < len(values):
pairs.append((int(values[2 * i]), int(values[2 * i + 1])))
return pairs
content = "1 2 1 3 2 3 4 2 4 5 2 5 3 2 3 4 2 4 6 7 6 8 7 8 5 2 5 8 2 8 5 7 5 4 7 4 2 6 2 8 6 8 7 5 7 8 5 8 7 3 7 4 3 4 1 6 1 2 6 2 3 6 3 1 6 1 3 7 3 6 7 6"
values = content.split()
pairs = pairs_from_values(values)
sanitized_pairs = [(i, j) for (i, j) in pairs if (j, i) not in pairs]
print(sanitized_pairs)
Note que dans ce code, si le nombre de valeurs dans la liste est impair, la dernière valeur est ignorée.
Résultat :
(mando@velvet) (~) $ ./pair.py
[(1, 2), (3, 4), (6, 8), (7, 8), (5, 8), (2, 8), (7, 4), (2, 8), (6, 8), (7, 8), (5, 8), (7, 4), (3, 4), (1, 2), (3, 6), (3, 6)]
Note aussi que la complexité peut être améliorée. Ici le programme est en O(n^2) si n est la taille de la liste, or tu peux réaliser la même chose en juste deux passes (donc en O(n)).
https://fr.wikipedia.org/wiki/Th%C3%A9orie_de_la_complexit%C3%A9_(informatique_th%C3%A9orique)
Il suffit lors de la première passe de repérer les doublons, puis dans la seconde de reconstruire
sanitized_pairs. Note enfin qu'en programmation itérer sur un container (ici la liste) qu'on supprime/ajoute des éléments est une mauvaise idée, car en général les itérateurs sont invalidés. C'est pour cela qu'une seconde passe est a priori nécessaire.
Bonne chance