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 15/03/2007, à 12:27

yacine1

Chercher un Algo

Bonjours ;
Je travaille actuellement sur un sujet qui me tient à coeur pour un but curatif voilà j'ai une combinaison de 06 chiffres qui est la somme d'un nombre je m'explique :
a partir dur nbr 7 je construit une combinaison de 06 chiffres cad :
211111
221110
222100
311110
321100
322000
411100
421000
430000
511000
520000
610000
700000
de façon que chaque ligne de chiffre a la somme de 7
j'ai essayer de construire un algo corespondant masi sans résultats
aider moi svp
Yacine1
email:harbyac@yahoo.fr
@+

Hors ligne

#2 Le 15/03/2007, à 14:37

Gari

Re : Chercher un Algo

Tu ne veux que ces combinaisons, ou bien tu veux toutes les combinaisons de 6 chiffres font la somme fait 7 ?
Le rang d'un chiffre est-il important dans la suite ?

Hors ligne

#3 Le 15/03/2007, à 18:50

yacine1

Re : Chercher un Algo

Le But est de trouver ces combinaison d'un nombre saisie de 1 a 24 par exemple je saisie le Nombre 7 il me donne la combinaison citée
le rang d'un chiffre est comme indiqué dans la combinaison il s'incrément d'un rang désque la somme des 06 chiffres atteint le nombre saisie dans mon exemple dés que la somme des chiffres atteint le nombre 07 il incrémente le rang -1
@+

Hors ligne

#4 Le 15/03/2007, à 18:59

fde

Re : Chercher un Algo

Ca c'est un travail pour... la programmation logique!

Hors ligne

#5 Le 15/03/2007, à 19:44

manatlan

Re : Chercher un Algo

en python, très rapidement, sans optimisation

    for i in range(0,1000000):
        if sum([int(x) for x in list("%06d"%i)])==7:
            print "%06d" % i

"Oui, oui."
                -- Shakespeare (Richard III, Acte I, Scène IV)

Hors ligne

#6 Le 15/03/2007, à 19:48

Yannick_LM

Re : Chercher un Algo

La brute !!!

@fde : On se le fait en Caml ?


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#7 Le 15/03/2007, à 19:50

qqun

Re : Chercher un Algo

en C bourrin big_smile

void algo(int val){
	
	int i0,i1,i2,i3,i4,i5,somme,ind=0;
	
	for(i0=0;i0<10;i0++){
		
		for(i1=0;i1<10;i1++){
			
			for(i2=0;i2<10;i2++){
				
				for(i3=0;i3<10;i3++){
					
					for(i4=0;i4<10;i4++){
						
						for(i5=0;i5<10;i5++){
							
							somme=i0+i1+i2+i3+i4+i5;
						   
							if(somme==val &&	
                                                           i0>=i1 && i1>=i2 && i2>=i3
                                                            && i3>=i4 && i4>=i5)      
								printf("%d) %d=%d%d%d%d%d%d \n",ind++,val,i0,i1,i2,i3,i4,i5);
							   
						}
					}
				}
			}
		}
	}
		
}

#8 Le 15/03/2007, à 20:02

manatlan

Re : Chercher un Algo

Yannick_LM a écrit :

La brute !!!

mais c très rapide ;-) (10 secondes sur P4 2.6ghz, avec python2.4)


sinon, en méthode qui renvoi la liste:

def algo(val):
    return ["%06d"%i for i in range(0,1000000) if sum([int(x) for x in list("%06d"%i)])==val]

Dernière modification par manatlan (Le 15/03/2007, à 20:04)


"Oui, oui."
                -- Shakespeare (Richard III, Acte I, Scène IV)

Hors ligne

#9 Le 15/03/2007, à 21:45

NicoA380

Re : Chercher un Algo

Arf Manatlan, tu as vu le topic avant moi ^^
Je ne pense pas qu'un autre langage soit aussi simple et court que le python, je kif vraiment ce langage !

Hors ligne

#10 Le 15/03/2007, à 22:01

manatlan

Re : Chercher un Algo

NicoA380 a écrit :

Arf Manatlan, tu as vu le topic avant moi ^^
Je ne pense pas qu'un autre langage soit aussi simple et court que le python, je kif vraiment ce langage !

Chut, il risque d'avoir des ruby'iens qui risquent de faire plus court ;-)

Mais c'est vrai que j'aime aussi ce language (py). Moi il me permet de me concentrer sur l'algo, et pas sur la syntaxe. (d'ailleurs de + en +, au boulot, je code mes "algos complexes" en py, que je traduis en c# après, et je gagne un temps fou)

Cependant, j'ai peur de n'avoir pas tout à fait saisie l'énoncé du problème, vu le code C de "qqun", qui implémente également un ordre décroissant ...

au passage, en python ... plutôt que d'écrire :

... && i0>=i1 && i1>=i2 && i2>=i3 && i3>=i4 && i4>=i5

on peut écrire directement :

... and i0 > i1 > i2 > i3 > i4 > i5

qui est quand même plus lisible ...


"Oui, oui."
                -- Shakespeare (Richard III, Acte I, Scène IV)

Hors ligne

#11 Le 15/03/2007, à 23:20

qqun

Re : Chercher un Algo

ben je sais pas je me suis base sur le 1er poste ,
mais bon on peu se passer de la condition pour eliminer les doublons .

void algo(int val){
	
	int i0,i1,i2,i3,i4,i5,somme,ind=0;
	
	for(i0=0;i0<10;i0++){
		
		for(i1=i0;i1<10;i1++){
			
			for(i2=i1;i2<10;i2++){
				
				for(i3=i2;i3<10;i3++){
					
					for(i4=i3;i4<10;i4++){
						
						for(i5=i4;i5<10;i5++){
							
						  somme=i0+i1+i2+i3+i4+i5;
						  if(somme==val)printf("%d) %d=%d%d%d%d%d%d ",ind++,val,i0,i1,i2,i3,i4,i5);
							   
						}
					}
				}
			}
		}
	}
		
}

#12 Le 16/03/2007, à 10:51

Gari

Re : Chercher un Algo

NicoA380 a écrit :

Arf Manatlan, tu as vu le topic avant moi ^^
Je ne pense pas qu'un autre langage soit aussi simple et court que le python, je kif vraiment ce langage !

C'est vrai, mais je galère pour trouver une *vraie* documentation exhaustive de l'ensemble des fonctionnalités de python et de ses modules intégrés. Et ça, c'est un sacré frein au développement... sad

Hors ligne

#13 Le 16/03/2007, à 11:29

aleph

Re : Chercher un Algo

> Gari
C'est vrai, mais je galère pour trouver une *vraie* documentation exhaustive de l'ensemble des fonctionnalités de python et de ses modules intégrés. Et ça, c'est un sacré frein au développement...

---

???

http://www.python.org/doc/

Existe depuis les origines de Python, cad à peu près 15 ans. A lire absolument, le tutorial écrit par GvR lui-même.

#14 Le 16/03/2007, à 11:51

Gari

Re : Chercher un Algo

Oui c'est là que je vais, je vais même sur pydoc pour essayer de trouver des infos en glanant dans les docs des versions antérieures.
Ce n'est pas un tutorial que je cherche, mais une bible exhaustive, décrivant l'ensemble des comportements & fonctionnalités.
Exemples :
- Quand je fais un dir(modulequelconque), j'obtiens plein de réponse. Plein de fonctions, noms,etc. Une très faible partie d'entre eux sont documentés. Et les autres ?
- Je n'ai pas trouvé d'endroit où les exceptions sont décrites. On connait en général les deux ou trois exceptions de base les plus habituelles, mais impossible d'avoir l'ensemble des exceptions.

Je trouve une foule de tutoriaux, de guides permettant d'apprendre à faire un truc de base. Le problème, c'est que je suis à l'étape supérieure, et franchement l'aide de python.org est carrément trop réduite. Plein de "Quick References", sauf que j'ai besoin d'un "Greatly Documented Reference".

Les pages "man" pour le C sont mille fois mieux !

Ceci dit, j'espère me tromper et avoir de la merde la yeux, et qu'en fait tout est là. Dans ce cas, je veux bien un petit lien, avec toutes mes excuses smile

Dernière modification par Gari (Le 16/03/2007, à 11:54)

Hors ligne

#15 Le 16/03/2007, à 12:35

aleph

Re : Chercher un Algo

> Gari

Franchement, je ne comprends pas. Toute la documentation officielle est à trouver dans les liens allant de Tutorial à Python/C API. C'est la documentation complète. Elle est aussi disponible en différents formats téléchargeables pour une utilisation locale : http://docs.python.org/download.html.
Les autres liens de la page sont plutôt des essais et/ou quelques compléments sur des problèmes très spécifiques à Python, par ex. New Style Classe.

> Les pages "man" pour le C sont mille fois mieux !
Sous Windows tout est dans un document chm. Très pratique pour une recherche par mot clé. La version en html pur est aussi très fonctionnelle.

> ..., mais impossible d'avoir l'ensemble des exceptions.
Voici le lien pour les exceptions http://docs.python.org/lib/module-exceptions.html. C'est exactement la même page que tu as dans la version locale, (A titre d'exemple).

> Ceci dit, j'espère me tromper et avoir de la merde la yeux...
Disons que tu n'a pas bien lavé la frimousse ce matin...

#16 Le 16/03/2007, à 13:19

Gari

Re : Chercher un Algo

Je prends un exemple simple : la commande socket.bind.
Elle permet de lier un socket créé à une adresse de type (IP,port) (en AF_INET).

Voici l'information tirée de http://docs.python.org/lib/socket-objects.html, qui me semble être l'endroit où il faut aller pour trouver des infos sur bind.

bind(address)
    Bind the socket to address. The socket must not already be bound. (The format of address depends on the address family -- see above.) Note: This method has historically accepted a pair of parameters for AF_INET addresses instead of only a tuple. This was never intentional and is no longer available in Python 2.0 and later.

En lançant python en mode interactif, je peux aussi obtenir ça :

>>> print socket.socket.bind.__doc__
bind(address)

Bind the socket to a local address.  For IP sockets, the address is a
pair (host, port); the host must refer to the local host. For raw packet
sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])

Bon c'est à peu près la même chose, et c'est très succint. Fais un "man 2 bind" en comparaison (trouvable ici : http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/bind.2.html), qui fournit la page de documentation pour bind en C. Rien à voir. Notamment, toutes les erreurs possibles sont décrites.

Dans la documentation en Python, ils disent "The socket must not already be bound". Ils ne disent pas ce qu'il se passe si le socket est déjà bindé ! Que se passe-t-il dans ce cas ? La fonction bind bloque infiniment ? Elle se termine en renvoyant une certaine valeur ? Elle provoque la levée d'une exception ? Si oui laquelle ?
Je n'ai rien trouvé dans http://docs.python.org/lib/module-exceptions.html qui en parlerait (quand bien même, cela devrait se trouver dans la description de la fonction).

Je ne me vois *clairement* pas écrire un programme intégrant la fonction bind sans pouvoir un minimum gérer les erreurs (mettre des "except:" sans donner le nom de l'exception ne me plait pas ; le programme ne peut rien en faire à part arrêter brutalement).

Ce n'est qu'un exemple parmi tant d'autres, à chaque fois que je cherche des infos je suis frustré de ne trouver que des trucs "basiques", que des résumés (et j'insiste sur le terme) de fonctionnement de la fonction.

Encore une fois, je ne regarde peut-être pas au bon endroit...

J'espère que j'ai mieux exprimé mes petits soucis de documentation, et je te remercie d'essayer de me montrer la voie smile

Dernière modification par Gari (Le 16/03/2007, à 13:21)

Hors ligne

#17 Le 16/03/2007, à 13:25

aleph

Re : Chercher un Algo

Alors, je ne sais pas. Désolé.

#18 Le 16/03/2007, à 14:48

Gari

Re : Chercher un Algo

C'était juste un exemple hein. Juste pour montrer que la documentation est (de ce que j'ai pu en trouver) plutôt légère.

Hors ligne

#19 Le 16/03/2007, à 14:52

manatlan

Re : Chercher un Algo

@gari

Pour ton cas, quand même "très avancé" ...
tu vas voir directement dans le code de bind, dans les libs de ton poste.
et tu recherches tous les "raise", et t'auras ta réponse ...

Je comprends "un peu" ce que tu dis au niveau de la doc. Mais comme tu as l'air d'être un "utilisateur avancé", tu n'auras aucun soucis à aller matter le code source, et trouver tes infos ... (ça sert à ça aussi, le code source python qui reste lisible)


"Oui, oui."
                -- Shakespeare (Richard III, Acte I, Scène IV)

Hors ligne

#20 Le 16/03/2007, à 15:30

Gari

Re : Chercher un Algo

Ben oui, mais bon passer des heures à mater du code pour essayer de faire du reverse engineering, c'est un peu violent quand même...
Je trouve le Python génial, ça permet d'écrire en beaucoup moins de lignes que le C, mais s'il faut passer 10h à chercher des infos sur une pauvre fonction, ben le gain est tout de suite moins perceptible.

Je suis persuadé que le genre de documentation dont je parle existe pour Python, mais j'ai pas encore trouvé, c'est tout.

Hors ligne

#21 Le 16/03/2007, à 15:58

aleph

Re : Chercher un Algo

Franchement, est-ce que tu as lu la documentation du module socket de l'aide Python ?

#22 Le 16/03/2007, à 16:16

Gari

Re : Chercher un Algo

Je l'avais lue en diagonale, mais je viens de la relire plus en détail. Je suis pas habitué à ce que les informations relatives à une fonction se retrouvent décrite dans la doc du module en fait.
Donc effectivement, ils disent clairement que les erreurs lèvent des exceptions.
En sachant A L'AVANCE quel genre d'erreur on peut avoir, et en allant voir du côté de os.error (pour une exception de type ERROR), on peut trouver EADDRINUSE (pour mon exemple de socket bindé).

Donc effectivement, les informations y sont, mais pas présentées pareil (il faut aller sur 3 pages au moins (page de fonction, page du module, page des erreurs) et ensuite il faut faire le tri des erreurs pour déterminer celle qui peut arriver).

Bref, je sens que je vais utiliser le man des fonction C pour avoir des infos sur ce qui peut arriver, puis utiliser la doc python pour essayer de trouver les infos correspondantes pour python.

Bon ben ça me semble résolu. C'était juste une histoire de philosophie de présentation des infos (ça me fait penser aux différences Windows/Linux ça... Et pour l'instant, je préfère la philosophie "man", mais bon avec un peu d'habitude je vais sûrement réussir à m'en sortir tongue).

Merci de m'avoir ouvert la voie smile

Dernière modification par Gari (Le 16/03/2007, à 16:34)

Hors ligne