Pages : 1
#1 Le 16/02/2013, à 15:18
- bmzoom
[RESOLU] Python algorithme
bonjour ,
En partant d'une chaine ou liste , comment extraire les n-uplets ?
Exemple : ABCD
A , B , C , D
AB , AC , AD , BC , BD , CD
ABC , ABD , ACD , BCD
ABCD
Total : 15 éléments ( 2^4 -1 = 15 )
A+
Dernière modification par bmzoom (Le 16/02/2013, à 17:59)
Hors ligne
#2 Le 16/02/2013, à 17:31
- pingouinux
Re : [RESOLU] Python algorithme
Bonjour,
#! /usr/bin/python
# -*- coding: utf-8 -*-
from itertools import combinations
txt='ABCD'; resul=''
for n in range(1,len(txt)+1) :
for i in combinations(txt,n) : resul+=''.join(i) + ','
resul=resul[:-1]+'\n'
print(resul[:-1])
Résultat
A,B,C,D
AB,AC,AD,BC,BD,CD
ABC,ABD,ACD,BCD
ABCD
Dernière modification par pingouinux (Le 16/02/2013, à 17:42)
Hors ligne
#3 Le 16/02/2013, à 17:59
- bmzoom
Re : [RESOLU] Python algorithme
OK - combinations est une fonction ( ou object ) du package itertools
Faut aller voir où , pour trouver les objets internes au pack python ?
Je veux avec 4 nombres : 12 ,4 , 9 ,35 , sortir une liste des 15 sommes partielles et totale
Dernière modification par bmzoom (Le 16/02/2013, à 18:08)
Hors ligne
#4 Le 16/02/2013, à 18:11
- pingouinux
Re : [RESOLU] Python algorithme
itertools est un module. Voici un index des modules python.
Hors ligne
#5 Le 16/02/2013, à 18:22
- pingouinux
Re : [RESOLU] Python algorithme
Je veux avec 4 nombres : 12 ,4 , 9 ,35 , sortir une liste des 15 sommes partielles et totale
C'est encore plus simple, voici un indice : tu peux utiliser la fonction sum(iterable).
Exemple :
>>> sum( (1,2,3) )
6
Hors ligne
#6 Le 16/02/2013, à 18:37
- bmzoom
Re : [RESOLU] Python algorithme
>>> sum( (1,2,3) )
6
C'est différent
4 nombres : 12 ,4 , 9 ,35 >>
12 +4 =16
12+9 = 21
...
les 15 combin avec A=12 , B=4 , C=9 , D= 35
ABD devient A+B+D
Dernière modification par bmzoom (Le 16/02/2013, à 18:40)
Hors ligne
#7 Le 16/02/2013, à 20:39
- pingouinux
Re : [RESOLU] Python algorithme
#! /usr/bin/python
# -*- coding: utf-8 -*-
from itertools import combinations
A,B,C,D=12,4,9,35
tup=(A,B,C,D)
# ou bien => tup=(12,4,9,35)
for n in range(1,len(tup)+1) :
for i in combinations(tup,n) : print("%-20s => %3d"%(i,sum(i)))
Résultat
(12,) => 12
(4,) => 4
(9,) => 9
(35,) => 35
(12, 4) => 16
(12, 9) => 21
(12, 35) => 47
(4, 9) => 13
(4, 35) => 39
(9, 35) => 44
(12, 4, 9) => 25
(12, 4, 35) => 51
(12, 9, 35) => 56
(4, 9, 35) => 48
(12, 4, 9, 35) => 60
Hors ligne
#8 Le 16/02/2013, à 22:04
- bmzoom
Re : [RESOLU] Python algorithme
ok - le tuple est le n-uplet numérique
ca va plus vite sur un forum que ds un livre, bien écrit , mais plein de détails qui mélangent tout
Dernière modification par bmzoom (Le 16/02/2013, à 22:04)
Hors ligne
Pages : 1