• [^] # Re: Hash ?

    Posté par . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 1.

    Ah, ça me plait d'autant plus comme solution que c'est ce que j'avais essayé de mettre en place... mais sans succès.
    Outre le fait qu'avec les objets BigInt, il faut passer par les méthodes ad-hoc pour les opérations arithmétiques ($x->badd($y), $x->bmul($y)...), même en décomposant, je n'y arrive pas.

    Dans la fonction, il y a deux opérations : une multiplication par 31 et une addition.
    Pour la multiplication, j'essaye pourtant de gérer les deux bornes inférieure et supérieure, mais même en la décomposant en une série de 30 additions, et en vérifiant qu'on est bien dans les bornes et en corrigeant par (2*MAX - 1), je ne retrouve pas la sortie attendue, même pour le cas d'une chaîne courte.

    Je me demande sur le fond comment, dans un cas de multiplication, un langage qui code sur 64 bits opère : est-ce qu'il décompose en une série d'additions ou de soustractions (qui devrait être gérable) ou fait-il une seule transformation qui nécessiterait de travailler en Perl non plus avec BigInt mais plutôt au niveau des bits ?