Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/02/2013, 16h27   #1
progcyb
Invité de passage
 
En réorientation professionnelle
Inscription : juin 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : En réorientation professionnelle

Informations forums :
Inscription : juin 2011
Messages : 12
Points : 4
Points : 4
Par défaut progra newbie, élever à la puissance sans boucle

Bonjour !

Erf, je débute en programmation, et j'ai une série d'exercices à faire, mais je n'ai pas les solutions.
C'est très bien, parce que ça me fait réfléchir, mais il y a cet exercice auquel... Je ne trouve vraiment pas de solution, et ça me gêne beaucoup...
Si une âme charitable pouvait m'aider, ce serait vraiment très très très gentil...

L'intitulé va sembler hyper facile à beaucoup de gens, j'imagine : il faut élever un nombre entré en input à la puissance 17 sans parcourir de boucle, ni utiliser **, et en utilisant le moins de * possible.
(j'ai bien pensé utiliser pow, mais je suppose que ce n'est pas ça qu'il faut trouver ^^)

-> Je me suis dit que peut-être il y avait quelque chose à chercher du côté des nombres pairs et impairs... ?! Mais j'avoue en fait que je sèche complètement.

Citation:
Écrire un programme qui affiche a17 (a lu sur input) en employant le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.
Merci d'avance à la personne qui pourrait me mettre sur la voie
progcyb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2013, 16h35   #2
mont29
Membre Expert
 
Homme Bastien Montagne
Diverses et multiples
Inscription : mai 2008
Messages : 623
Détails du profil
Informations personnelles :
Nom : Homme Bastien Montagne
Localisation : France

Informations professionnelles :
Activité : Diverses et multiples

Informations forums :
Inscription : mai 2008
Messages : 623
Points : 1 036
Points : 1 036
Allez, juste un petit indice*: x^8 = ((x^2)^2)^2; par ailleurs, 17 = 16+1…
__________________
Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques
mont29 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/02/2013, 16h38   #3
progcyb
Invité de passage
 
En réorientation professionnelle
Inscription : juin 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : En réorientation professionnelle

Informations forums :
Inscription : juin 2011
Messages : 12
Points : 4
Points : 4
Merci pour le coup de main, mon intuition d'aller vers les nombres pairs n'a pas l'air si mauvaise

Sympa, vraiment !
Bonne journée !
progcyb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2013, 16h49   #4
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 739
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 739
Points : 4 581
Points : 4 581
Salut,
Pourquoi ne pas coder en Python l'exemple donné en C ici?
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2013, 17h14   #5
mont29
Membre Expert
 
Homme Bastien Montagne
Diverses et multiples
Inscription : mai 2008
Messages : 623
Détails du profil
Informations personnelles :
Nom : Homme Bastien Montagne
Localisation : France

Informations professionnelles :
Activité : Diverses et multiples

Informations forums :
Inscription : mai 2008
Messages : 623
Points : 1 036
Points : 1 036
@wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
__________________
Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques
mont29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2013, 21h46   #6
progcyb
Invité de passage
 
En réorientation professionnelle
Inscription : juin 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : En réorientation professionnelle

Informations forums :
Inscription : juin 2011
Messages : 12
Points : 4
Points : 4
Oui, justement, voilà pourquoi. Parce qu'avec une boucle, je vois bien, et avec pow, je vois bien aussi
C'est vicieux ces exercices d'ailleurs ! ^^

Bon, j'ai mis "résolu", j'ai pas encore codé, mais je pense avoir compris. Yaplukà...
progcyb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2013, 22h12   #7
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 739
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 739
Points : 4 581
Points : 4 581
Citation:
Envoyé par mont29 Voir le message
@wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
Oops. Désolé, pas facile pour moi d'avoir des réflexes de programmation en assembleur dans un forum Python.
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2013, 19h03   #8
progcyb
Invité de passage
 
En réorientation professionnelle
Inscription : juin 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : En réorientation professionnelle

Informations forums :
Inscription : juin 2011
Messages : 12
Points : 4
Points : 4
Voilà, juste... Je teste la validité de ce que j'ai fait, ça fonctionne, je ne sais pas si c'est "optimal"...

Code :
1
2
3
4
5
6
7
8
9
 
def elevation(a, puissance=17):
    resultat = 1
    if ( puissance == 1 ):
        resultat*=a
 
    elif (puissance//2>=1):
        resultat=a*elevation(a, puissance-1)
    return resultat
?
En tout cas, ça doit correspondre à peu près à ça.
Je suppose que ça, c'est dit "récursif", et qu'il y a moyen de le faire en itératif... ?!
hum... ^^

Merci encore pour le coup de main en tout cas
progcyb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2013, 19h15   #9
mont29
Membre Expert
 
Homme Bastien Montagne
Diverses et multiples
Inscription : mai 2008
Messages : 623
Détails du profil
Informations personnelles :
Nom : Homme Bastien Montagne
Localisation : France

Informations professionnelles :
Activité : Diverses et multiples

Informations forums :
Inscription : mai 2008
Messages : 623
Points : 1 036
Points : 1 036
Moui… d’une certaine façon, tu vas au-delà de ce qui est demandé (ton code est générique), mais je ne sais par si la récursivité ne serait pas considérée comme un genre de boucle…

En fait, je pensais plutôt à ça*:

Code :
1
2
3
4
5
def pow_17(x):
    x2 = x * x
    x4 = x2 * x2
    x8 = x4 * x4
    return x8 * x8 * x
Soit cinq multiplications en tout et pour tout*!
__________________
Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques
mont29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2013, 21h26   #10
progcyb
Invité de passage
 
En réorientation professionnelle
Inscription : juin 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : En réorientation professionnelle

Informations forums :
Inscription : juin 2011
Messages : 12
Points : 4
Points : 4
ah ouais... Effectivement, je vais chercher midi à 14h, moi !
M'étonne pas... ^^

Je pense que ton idée correspond mieux à l'intitulé effectivement.
progcyb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h10.


 
 
 
 
Partenaires

Hébergement Web