FR EN DE ES IT PT
Naviguer dans les forums 
Trackers Ankama

Les zaaps ou le moyen d'économiser des kamas

Par Vlidiimort - ABONNÉ - 13 Novembre 2017 - 18:40:06

Bonjour,

Je me baladais gaiement dans le monde des douzes à la recherche de bois d'Orme. Ainsi donc, j'utilisais fréquemment mon havre sac pour voyager plus rapidement à travers les différents spot évitant ainsi des retours aux zaaps pouvant être compliqués (petit coucou aux mignons koalak qui n'ont qu'une seule envie, celle de vous faire des câlins si vous avez le malheur de les approcher de trop près). Et je me suis demandé, de la manière le plus naturellement possible, comment était calculé le prix à dépenser pour voyager d'un zaap à l'autre et s'il y avait moyen de payer moins cher les voyages. (j'écrirai sans doute quelque chose sur le fonctionnement intriguant de ces zaaps, mais une autre fois :p)

Bon, donc j'ai fait mes petits tests. C'était pas bien compliqué d'ailleurs, je me suis juste baladé de map en map en fouillant à chaque fois dans mon havre sac pour savoir de combien j'allais casquer pour aller à un zaap de référence. Et j'en suis arrivé au point que le prix est tout simplement la partie entière de la distance minimale. (Fort heureusement le monde des douzes est un univers plat, ce qui me simplifie beaucoup les calculs ! Imaginez si ça avait été une sphère ! Il aurait fallu parler de géodésique et tralalala, quelle plaie ces mondes non plat ! #DiscipleDeLaTerrePlate )
Bref, en d'autres termes cela revient juste à calculer  ⌊ sqrt( x^2 + y^2 ) ⌋ (ces symboles de part et d'autre symbolisent la partie entière, par exemple ⌊ 3.14 ⌋ = 3 ).

Et maintenant la question soulevée par un tel résultat est : existe-t-il deux couples (x1,y1) et (x2,y2) tels que x1+x2=x et y1+y2=y et dont la somme des parties entières des distances minimales vaut moins que pour le couple (x,y). Dis en d'autres termes, est ce qu'il y a un trajet non direct (c'est à dire avec au moins une étape intermédiaire) qui me permet d'économiser de l'argent ? (L'argent ça parle tout de suite plus n'est ce pas ? wink )
Et bien la réponse est ... oui ! 
Je vous prie d'excuser ma flemmardise, je n'ai pas cherché à le démontrer mathématiquement, j'ai préféré à cela coder un petit programme se chargeant comme un grand de trouver ces couples à ma place ! Et il y en a eu ! 
Dites vous bien que depuis le début, vous payez le zaap pour faire le chemin le plus court mais qu'en faisant un chemin un poil plus long, cela vous reviendrait à moins cher ! Imaginez un peu toutes les mignonnes petites escales que vous auriez pu faire et qui vous auraient permis de payer moins cher ! Imaginez un peu, c'est comme si vous faisiez France-Mexique en avion alors que France-Haiti Haiti-Mexique serait moins cher, franchement ce serait bien bête de s'en priver ! (Hein quoi ? Bah quoi ? Comment ça la Terre est ronde ? Vous avez déjà vu la carte du monde ? Oui ? Et bien alors ! Elle est plate cette carte ? Oui ? Bon et bien ça montre bien qu'elle est plate cette Terre m'enfin ! Allez nous emmerder ailleurs avec vos géodésiques !). 

Bref tout ça pour dire, qu'en optimisant un peu les trajets, ie en faisant quelques étapes, il y a moyen de payer moins cher le transport via ces zaaps ! C'est tout simplement INCROYABLE non ? Ça c'est une sacré astuce pour économiser ces kamas. Parce que faut voir le prix que ça coûte ces foutus zaap hein, un véritable gouffre à pièces d'or !

Voila vous savez tout ! Pardon ? De combien ? Ah ... Est ce vraiment la peine de ... Oui ? Bon d'accord ... Alors d'après mes calculs, vous pourriez économiser la somme colossale de 10 kamas à chaque fois ! Enfin ... bon ... quand je dis à chaque fois ... c'est à dire qu'il ne faut pas choisir ses "zaap étape" au hasard non plus ... il faut avoir les bonnes étapes à la map près pour qu'il y ait économie ... Quoi ? Comment ça, ça sert à rien ? Bon j'vous l'accorde ça casse pas des briques et ça n'en rapporte pas non plus mais au moins vous pourrez vous la péter à votre prochaine soirée mondaine et ça, ça n'a pas de prix ! 

Ps: J'espère que ma formule est bonne sinon et bien, tout tombe à l'eau ^^ Et aussi les calculs ont été effectués pour une seule étape (par flemmardise encore une fois héhéhé). Peut être donc qu'en ajoutant une ou deux étapes supplémentaire y'aurait moyen de grappiller 20 kamas ! (Mais pour le coup j'en doute fortement :p ) 

Pps : Désolé pour le titre un peu aguicheur wink

    4 0
    Réactions 11
    Score : 79
    Coucou,

    En effet, ton raisonnement sur le prix du zaap est correct! Le prix du zaap est en effet directement proportionnel à la norme du vecteur défini entre tes deux zaaps (à un facteur 10 près).biggrin
    En effet, le fait de ne payer que la partie ENTIÈRE de cette norme implique que la division de ces trajets pourrait nous faire faire des économies! Je n'ai pas fait non plus la démonstration mathématique (surement par fainéantise aussi tongue) mais je pense que la seule façon pour arriver dans ce cas de figure est que la pause soit faite:
    - Dans l'axe même entre le point de départ et le zaap d'arrivé;
    - A une distance (ou norme) non entière (Ce deuxième point implique donc que les coordonnées en X  et en Y du zaap de départ et du zaap d'arrivé ne sont pas égales.. Autrement dit, ces zaaps ne sont pas alignés suivant un axe vertical ou horizontal).
    Au niveau des économies, nous économiserions 20k à employer cette technique! Deux fois plus qu’annoncé initialement: en effet nous économiserons 10k sur l’arrondi de la norme du zaap A à B mais aussi 10k sur l'arrondi de la norme du zaap B à C.

    Enfin, je ne sais pas si c'est intentionnel, de la part d'ankama, pour éviter que les joueurs utilisent cette faille à kamas monstrueuse (biggrin) mais après vérification, aucun zaap n'a son reflet existant avec tout autre zaap comme centre de symétrie.. Autrement dit, cette technique ne fonctionne nul part dans le monde des douze de zaap à zaap.
    Mais c’était sans compter sur les havres-sacs! Puisque nous somme capables de créer des zaap portable partout sur la map, il nous suffi alors de nous placer en symétrie central par rapport à un zaap quelconque du zaap au quel on veut arriver et faire le trajet en deux fois!
    Cette technique nous fera économiser 20 kamas!

    Je ne suis pas sur du tout de l'utilité de ce post et encore moins de ce commentaire, mais, après ça, il ne nous reste plus qu'a faire de la géométrie pour faire des économies! 
    Et dire que tous les élèves au collège disent encore que leurs cours de maths et de géométries ne leurs serviront jamais à rien dans leur vie..!! :wacko:
     
    1 0
    Score : 625

    Alors je viens de vérifier, avec cette technique et en ne considérant qu'une seule étape (et sauf erreur dans l'implémentation de mon code), le gain est de 10 kamas dans le meilleurs des cas ! J'ai fait tourner le programme jusqu'aux coordonnées (1000,1000) et il n'y a à priori aucune étape permettant un gain de 20k (comment as tu fait pour obtenir ce résultat ?). Je vais illustrer cela par quelques exemples, dans ces exemples, le but est de faire le trajet le moins cher de (x,y) à (0,0) (j'ai pris (0,0) comme référence pour simplifier les calculs mais il n'est pas nécessaire d'aller qu'à Amakna pour économiser le prix des zaaps je vous rassure wink )
    Empiriquement, je suis arrivé à plusieurs hypothèses qui permettent d'expliquer ce résultats :

    • Si la somme de deux nombres au carré est un nombre au carré.
     Prenons un exemple, mettons que je sois en (3,4). Alors j'ai 3²+4²=5². Donc le zaap direct me coûterait 50k. Mais si je vais d'abord en (1,1) puis en (0,0), le coût est de ⌊ sqrt( 2² + 3² ) ⌋ + ⌊ sqrt( 1² + 1² ) ⌋= 4, soit donc 40kamas ! Ainsi, on économise bien 10kamas.
    Et cela se généralise pour n'importe quel jeu de coordonnée de la forme (x,y) tel que x²+y²=z². Il sera plus rentable de faire (x,y) puis (1,1) et pour finir (0,0) (bon à ce niveau j'suis d'accord, vaut mieux finir à pied, et d'ailleurs en parlant de ça, si l'on finit à pied, on économise 10 kamas supplémentaire ! Et vous savez quoi ? Si on fait l'intégralité du chemin à pied, on ne dépense RIEN ! Si si j'vous jure ! )  que directement (x,y) vers (0,0).
    • Si ⌊ sqrt( x² + y² ) ⌋ est très proche en valeur inférieur de z².
    L'idée est de se dire, tiens si sqrt( x² + y² ) est très proche d'un entier, par exemple sqrt( 14² + 98² )=98.9949, alors on "optimise" la valeur entière car ⌊98.9949 ⌋=98. Et on a donc plus de chance d'avoir 2*⌊ sqrt( x² + y² ) ⌋ < ⌊ sqrt( (2x)² + (2y)² ) ⌋.  Cela revient un peu à ce que tu disais lorsque tu parlais de " l'axe même entre le point de départ et le zaap d'arrivé". Dans ce cas précis, pour certains couples (2x,2y), il faut passer d'abord par (x,y). En reprenant cet exemple on a 2*⌊ sqrt( 14² + 98² ) ⌋=196 et ⌊ sqrt( 28² + 196² ) ⌋=197, ce qui nous fait bien un gain de 10 kamas si l'on procède au trajet (28,196)->(14,98)->(0,0) plutot que (28,196)->(0,0)
    J'ai parlé de "très proche d'un entier" mais qu'est ce que ça veut dire ? Quel est l'ordre de grandeur ? Et bien cela revient à trouver ε tel que ⌊ sqrt( x² + y² ) ⌋ = z-ε avec z entier. D'après mon petit programme, et avec des coordonnées maximales de (100,100) on a  ε<0.047. Ainsi pour tous les couples (x,y) tels que  ⌊ sqrt( x² + y² ) ⌋ = z-0.0047, si l'on part de (2x,2y), il vaut mieux passer par (x,y). Mais évidemment cette valeur de ε dépend des coordonnées maximales de départ (par exemple pour (300,300) le ε minimal est de 0.0014) et il y aura également des couples avec un ε plus élevé qui marcheront, car le ε choisi est le plus petit tel que ça marche.

    Bref, évidemment il y a plein d'autres possibilités qui feront que cela marche. Il faudrait démontrer ça rigoureusement mais bon... la flemme. La je voulais juste illustrer par quelques exemples des cas pour lesquels ça fonctionne.
    Et pis au final il serait tout de même plus facile de remettre en cause l’intérêt de ce topic plutôt que de résoudre ce problème ! 

    Franchement ce topic n'est pas digne d’intérêt on paie et pis c'est MARRE ! 
    1 0
    Score : 417

    Qui a dit que la comu Dofus était bête et immature ... On a encore des gens pour se creuser la tête, pondre un pavé quasi scientifique mais ultra drôle , sur un sujet complètement lambda mais néanmoins intriguant et d'autres pour leur répondre sur le même ton ! 
    C'est parfait ! biggrin
    Bon en revanche, les mignonnes petites escales, ça dépend où hein ... Si c'est pour reverser les 20 kamas épargnés dans un déodorant après être passé chez les bworks ... (amis bworks je vous respecte mais celui qui vous a dit que la douche, c'était une fois l'année,  bah il vous a menti !) Bon je divague ... Je terminerai par une 'tite chanson pour les disciples de la terre plate : https://www.youtube.com/watch?v=yb_uI5iLesQ   tongue
     

    1 0
    Score : 79

    Bonjour Vlidiimort,

    En effet, tu as raison, je ne sais pas comment j'ai réussi à me tromper.. Nous économisons bien seulement 10 kamas. Les 10 autres kamas que je pensais économiser sont une erreur due au fait que les deux arrondis appartiennent à la norme de la même map et non de map différente. Donc nous arrondissons deux valeurs mais qui correspondent au saut d'une map, donc 10 kamas d'économie!

    Ouiiiiii! Je n'avais pas pensé a ça, mais nous pourrions en effet trouver une valeur max de l'angle, Zaap départ/Zaap final/Zaap intermédiaire, tel que la somme des entiers des racines de la somme des carrés des coordonnées en X et Y des trajets intermédiaires soient plus petit que l'entier de la racine de la somme au carré des coordonnées en X et Y du trajet initial.

    Je serrai très curieux de pouvoir jeter un coup d'oeil a ton programme,

    Merci,
    Bi-Noclar
     
    0 0
    Score : 625

    Le programme que j'ai fait est le programme le plus naïf que l'on puisse faire ! J'ai presque honte de poster un tel programme qui causerait un véritable ravage capillaire chez n'importe quel amateur de programmation :p

    Le programme tourne sur matlab mais bon, il est tellement simple qu'il est facilement transposable à tout autre langage !

    for x=1:1:100
        for y=1:1:100
            for x1=0:1:x
                for y1=0:1:y
                    z=floor((x^2+y^2)^0.5);
                    z1=floor((x1^2+y1^2)^0.5)+floor(((x-x1)^2+(y-y1)^2)^0.5);
                    if (z>z1)
                        disp(['x1 = ', num2str(x1) ,' y1 = ', num2str(y1) ' x = ', num2str(x) ,' y = ', num2str(y) ' z = ', num2str(z) ,' z1 = ', num2str(z1)]);
                    end
                end
            end
        end
    end

    Ici (x,y) est la position de départ. Moi j'ai fait une boucle sur les positions de départ mais ce n'est pas très utile et ça rajoute une grosse complexité xp 
    L'idée est juste de faire balader un couple (x1,y1) de manière à ce qu'il prenne toutes les étapes possibles entre le point de départ (x,y) et le point d'arrivée (0,0). Ensuite, il suffit de faire le calcul de la distance, ce qui correspond à z pour la distance directe et z1 pour la distance avec une étape. Enfin, il affiche le résultat si la distance z1 est plus petite strictement que z.
     

    0 0
    Score : 1142

    Inutile... Donc indispensable !

    0 0
    Score : 100

    *lis le charabia mathématique* .... *exploses en courant comme une sacrifiée*

    1 0
    Score : 470

    Bon maintenant que ceux en prépa maths, école d'ingé, fac de maths, ou info on fait péter leur science, on en parle du vocabulaire médical dans Dofus ?  Qui n'a jamais rêver de savoir pourquoi ça serait illogique de droper plus de deux scapula du comte ? ce que sont vraiment les stapes de frimar ? Où se trouve le fameux sphénoïde du Kimbo ? Dr Dofousse est là pour vous réponde tongue

    0 0
    Score : 625

    Il n'est pas question ici de se la péter ou de se vanter de quoi que ce soit. Et puis bon se vanter sur du "Oulalala je sais manipuler la partie entière de la norme d'un vecteur" c'est comme se la péter sur du "Oulalala j'arrive à faire l'hélicobite pendant 92 secondes tout en sautant à cloche pied", y'a pas trop de quoi le crier sur tous les toits :p
    Non l'idée ici est juste de se poser des questions, de faire des remarques et d'essayer d'y répondre ! Alors effectivement comme tu l'as souligné, j'ai un bagage plutôt scientifique, ce qui fait que je me poserai plus naturellement ce genre de questions et que ça m'amuse comme un petit fou en fait biggrin  
    Mais tes questions sont tout aussi légitime et je ne peux que t'inviter et t'encourager à essayer d'y répondre. C'est un exercice extrêmement stimulant, gratifiant et apportant beaucoup joie et bonheur rien que ça ! wink

    Au final, l’intérêt n'est pas vraiment dans la question, mais surtout dans la réponse proposée. Je suis persuadé que certains génies du verbe pourrait faire passer le sujet de l'influence de la popularité des enclos sur la reproduction des dragodindes (Parce que bon, se faire mater par bon nombres de ses confrères et par d'autre bipèdes vous faisant des prouts et bisous et ça doit pas bien aider) que l'on pourrait qualifier de sans intérêt à première vue, en une véritable pépite !  

    0 0
    Score : 5

    C'est du génie, il faut le reconnaître, j'avais toujours eu la flemme de le vérifier, bon je te dis merci ? Allez, merci !

    0 0
    Réagir à ce sujet