IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Un Docteur décrit un procédé utilisé par un shaman pour faire une multiplication


Sujet :

Algorithmes et structures de données

  1. #21
    Membre éclairé

    Homme Profil pro
    Architecture logiciel
    Inscrit en
    Janvier 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecture logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 103
    Points : 713
    Points
    713
    Par défaut
    Arf c'est pas beau les boucles pour rien. Voici la version récursive terminale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function algo_rec(a, b, res) {
        if (a === 1) return b + res;
        var tmp = ~~ (a / 2);
        if (a % 2 === 1) res += b;
        return algo_rec(tmp, b * 2, res);
    }
    Pour tester : http://jsfiddle.net/64uqz/1/

  2. #22
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Un Docteur décrit un procédé utilisé par un shaman pour faire une multiplication
    A mon sens, il a surtout décrit un procédé pour faire un changement de base par division successive...

    34/2 = 17 reste 0
    17/2 = 8 reste 1
    8/2 = 4 reste 0
    4/2 = 2 reste 0
    2/2 = 1 reste 0
    1/2 = 0 reste 1
    --> 34 en binaire (LSB first) = 010001

    D'où 34 * 7 = (010001)b * 7 = (0+2+0+0+0+2^5) * 7

    Ca fonctionne avec n'importe quels nombres dans n'importe quelle base. C'est juste plus simple/pratique a faire manuellement en base 2.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    C'est juste l'algorithme d'exponentiation rapide (http://fr.wikipedia.org/wiki/Exponentiation_rapide) adapté à la multiplication : on a remplacé les opérations "mise au carré" par "doublement", et multiplication par addition.
    Rien de nouveau dans le monde de l'algorithmique, mais quand même très ingénieux de la part d'un shaman perdu au fin fond de l'Ethiopie (si toutefois l'histoire est vraie )

  4. #24
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Chaque peuple avait sa méthode de faire la multiplication et utilisait le matériel a porté de main (doigts, pierre, graines, bâtonnets...etc). Je connaissait une méthode japonaise (ou peut être chinoise) pour multiplier deux nombres qui utilise des bâtonnets en les croisant. Regardez plutôt
    , c'est plus simple a expliquer visuellement.

  5. #25
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par FrankieSong Voir le message
    Je commente pour bien faire prendre conscience à tous qu'un algorithme, ce n'est pas seulement de l'astuce pour représenter les données et de l'algèbre appliqué dessus, mais l'histoire posée en équations passée à une méthode de math appliquée à un contexte, histoire qui se répète dans sa partie automatisable et qui réémerge dans le monde lent des cas particuliers humains...
    Sauf que tes commentaires n'expliquent pas l'algorithme. Tu as décrit ce que fait chaque ligne de code, indépendamment les unes des autres. Pour commenter l'algorithme, il faut décrire pourquoi ces lignes de codes ont été choisies, et pourquoi elles sont enchainées de cette manière.

    Personnellement, ca m'étonnerait que le Chaman ait compté des demi-chèvres.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #26
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    Il me semble que c'est un algorithme vieux comme le monde !
    a.b = 2a.b/2
    avec la "retenue" quand b est impair.
    Je me souviens avoir coder ça en cours d'algorithmique il y a 25 ans

  7. #27
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par dborscia Voir le message
    Il me semble que c'est un algorithme vieux comme le monde !
    a.b = 2a.b/2
    avec la "retenue" quand b est impair.
    Je me souviens avoir coder ça en cours d'algorithmique il y a 25 ans
    C'est exactement cela, et c'est encore plus visuel en binaire ou les multiplications/divisions par 2 sont des décalages.

    100010 * 111
    10001  * 1110
    1000   * 11100    + 1110
    100    * 111000   + 1110
    10     * 1110000  + 1110
    1      * 11100000 + 1110
    100010 * 111 = 11101110
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #28
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Comme je l'avais dit dans mon premier post, ce truc est qquelque chose d'idiot, et où tous les dejunzs s'engouffrent en pensant avoir re-découvert la fil à couper le beurre... (suffit de voir le nombre des posts des intervenants !!! Sans doute un prof qui leur en parlé)

    Aucun intérêt..

    Je pense qu'on devrait fermer ce topic...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. TAILS, l’OS Linux utilisé par Edward Snowden pour échapper à la NSA
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 8
    Dernier message: 25/04/2014, 11h33
  2. [J2EE] Par où commencer pour développer une application ?
    Par nihalm dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 18/07/2011, 11h11
  3. Réponses: 2
    Dernier message: 27/08/2010, 09h54
  4. Réponses: 1
    Dernier message: 04/11/2007, 02h27
  5. Réponses: 3
    Dernier message: 13/04/2006, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo