Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ?

smile

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

bmzoom a écrit :

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