[R] Qui aime les maths ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

[R] Qui aime les maths ?

#1

Message par cutprod »

Bonjour a tous.
Je cherche a faire un srcipt qui a pour but d'identifier des variables en fonctions de la valeur d'une autre (une seule!)
La valeur de la variable de mesure ($var) varie en fonction de 6 autre variable de valeures fixe=

A = 10
B = 50
C = 100
D = 200
E = 500
F = 1000

Je voudrais savoir si je dois me lister a la main chaque combinaisons possible ou si il existe une equation plus rapide ou une fonction...
Pour l'instant et pour vous aider a comprendre ça donne cela =
► Afficher le texte
Voila!!
Moi j'aime pas, non disons que j'ame mais je suis pas fort en math :lol:
Modifié en dernier par cutprod le lun. 20 déc. 2010 21:12, modifié 1 fois.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Qui aime les maths ?

#2

Message par sylvanie »

il faut passer par un tableau à double entrée de type lettre;valeur et surtout le classer par ordre décroissant pour pouvoir décomposer la valeur facilement
ici, un exple retournant en plus le code @error à 1 si la valeur passée n'est pas entièrement décomposable :

Code : Tout sélectionner

Dim $tab_zone[6][2]=[["F",1000],["E",500],["D",200],["C",100],["B",50],["A",10]]

$zoneret=indentify_zone(1250)
$err=@error
MsgBox(0,"découpage de zone de 1250 : ",$zoneret&" erreur="&$err)

$zoneret=indentify_zone(1255)
$err=@error
MsgBox(0,"découpage de zone de 1255 : ",$zoneret&" erreur="&$err)



Func indentify_zone($val)
    Local $zone=""
    Local $first_ind=0
    While ($val >= 10)
        For $ind=$first_ind to 6
            If ($tab_zone[$ind][1]<=$val) Then
                $val-=$tab_zone[$ind][1]
                $first_ind=$ind
                $zone&=$tab_zone[$ind][0]&"+"
                ExitLoop
            EndIf
        Next
    WEnd
    ;on supprime le dernier "+" en fin de chaîne
    $zone=StringRegExpReplace($zone,"\+\Z","")
    If ($val<> 0) Then
        SetError(1)
        Return $zone
    EndIf
    SetError(0)
    Return $zone
EndFunc


 
NB : le $firstind est une petite optimisation pour ne pas reparcourir le tableau depuis le début. En théorie on devrai mettre +1, mais si vous avez par exple comme valeur 20, alors on va faire 10, puis l'indice passe à 6, et là erreur d'index. Ceci permet de traîter les cas où une zone est déclarée 2 fois
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Qui aime les maths ?

#3

Message par Iste »

moi j'aurai plutot parlé de BitAND() mais je suis pas bien sur d'avoir saisie le probleme
Signez ici
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Qui aime les maths ?

#4

Message par bloodwolff »

Voilà , tu peux changer les lettres de remplacement et les chiffres voulu
Tu peux même modifier la grosseur des tableaux en autant qu'il soit de la même taille

Code : Tout sélectionner

#include <Array.au3>
dim $chiffre[4] = [60,360,810,1100]
Dim $aArray[6] = [10, 50, 100, 200, 500, 1000]
Dim $bArray[6] = ["A","B","C","D","E","F"]
$Array = Combinaison_plus($aArray, $bArray)
_ArrayDisplay($Array)
For $i=0 to 3
    MsgBox(0,"", $chiffre[$i] & " = " & $Array[_ArraySearch($Array,$chiffre[$i],1)][1])
Next


Func Combinaison_plus($aArray, $bArray)
    If UBound($aArray) <> UBound($bArray) Then Return SetError(1)
    Dim $Array_final[1][2]
    For $i = 1 To UBound($aArray)
        $aArrayCombo = _ArrayCombinations($aArray, $i, "+")
        For $ii = 1 to $aArrayCombo[0]
            $Array_final[0][0] += 1
            ReDim $Array_final[$Array_final[0][0]+1][2]
            $Array_final[$Array_final[0][0]][1] = $aArrayCombo[$ii]
        Next
    Next
    For $i=1 To $Array_final[0][0]
        $Array_final[$i][0] = Execute($Array_final[$i][1])
        For $ii=0 To UBound($aArray)-1
            $Array_final[$i][1] = StringRegExpReplace($Array_final[$i][1], "\A("  & $aArray[$ii] & ")\z", $bArray[$ii])
            $Array_final[$i][1] = StringRegExpReplace($Array_final[$i][1], "\+("  & $aArray[$ii] & ")\+", "+" & $bArray[$ii] & "+")
            $Array_final[$i][1] = StringRegExpReplace($Array_final[$i][1], "\+("  & $aArray[$ii] & ")\z", "+" & $bArray[$ii])
            $Array_final[$i][1] = StringRegExpReplace($Array_final[$i][1], "\A("  & $aArray[$ii] & ")\+", $bArray[$ii] & "+")
        Next
    Next
    _ArraySort($Array_final,0,1)
    Return $Array_final
EndFunc
Modifié en dernier par bloodwolff le lun. 20 déc. 2010 19:23, modifié 1 fois.
Compte skype : bloodwolfff
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Qui aime les maths ?

#5

Message par sylvanie »

le soucis ici concernant le Bitand, c'est qu'on n'a pas de puissance de deux disctinctes pour dicerner les différents cas.
Par contre si on avait eu 1 2 4 8 16 ... pour A B C ... c'est clair que Bitand est la meilleure solution
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Qui aime les maths ?

#6

Message par cutprod »

Merci pour vos réponses, je regarde tout ca et je vous répond tout a l'heure.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Qui aime les maths ?

#7

Message par zeshrek »

Ouh la la !!!! que de complications !
En fait c'est le même principe qu'une extraction de facteurs premiers sauf que la il faut juste extraire les valeurs qu'il cherche.
Allez hop, en moins de 20 lignes :
► Afficher le texte
Si vis pacem para bellum
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Qui aime les maths ?

#8

Message par cutprod »

Alors la chapeau!!
Merci a tous mais c'est pépé shrek qui remporte la "palme", simple, efficace, beau propre, ca sent bon même!! :lol: :lol:
Dis tu sais que quand je t' appel pépé c'est plus affectueux et taquin qu'autre chose! Et aussi (j'en suis pas sur, Tlem pourrait le confirmer) tu es le doyen du forum...
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Qui aime les maths ?

#9

Message par Jerome »

cutprod a écrit : efficace, beau propre, ca sent bon même
Tout le contraire d'un ogre :lol:
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Qui aime les maths ?

#10

Message par cutprod »

Houla!!excuse moi mais je me trompe c'est pas toi qui a 65 ans!! Depuis l'autre jour je t' appel pépé mais pas du tout!!Je confond avec un autre membre :oops:
Tu as vu comme je suis attentif et perspicace: j'ai regarder en bas de ton avatar, et j'ai découvert ton age 8)
Merci as toi pour la solution du problème. :D
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] Qui aime les maths ?

#11

Message par cutprod »

Mais alors c'est qui ce mec de 65 ans?? :?:
Quelqu'un connais un membre de cet age vénérable?
Si tu me lis, manifeste toi (parce que la je me fais peur :lol: )
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Qui aime les maths ?

#12

Message par Tlem »

Hé bien, il s'agit de OldChapZ, qui soit dit en passant, a fêté ses 65 bougies très ressemant ... http://www.autoitscript.fr/forum/viewto ... f=9&t=6490
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [R] Qui aime les maths ?

#13

Message par bloodwolff »

OWII je corrige le big boss
Ce n'est pas "ressemant " mais "récemment"
Compte skype : bloodwolfff
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Qui aime les maths ?

#14

Message par Tlem »

Humpffff
Allez, je vais me coucher, je suis trop crevé pour réfléchir correctement. :oops:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Qui aime les maths ?

#15

Message par matwachich »

Tu dis que Shrek est le doyen, et t'as même pas remarquer que Tlem est plus agé d'un an!!!
PS: Ils vont pas être content, pépé à 40 piges...
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Qui aime les maths ?

#16

Message par zeshrek »

C'qui vous faudrait a vous les p'tits jeunes c'est une bonne guerre ! Vous faire tuer, ca vous apprendrait a vivre ! Ah ca, d'mon temps on avait le respect des anciens nous ! Mais tout se perd ma bonne dame. Y a qu'a voir la météo, y a plus d'saison !

Bon, maintenant que pépé a fini de radoter, il voudrait juste faire remarquer qu'il lui reste quand même assez de neurones pour faire de bons p'tits scripts...
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Qui aime les maths ?

#17

Message par Tlem »

Dit moi zeshrek, puisque nous sommes considéré comme des ptits vieux, je me permet de montrer une petite photo de nous deux afin de ce présenter au forum. :lol:

Image
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Qui aime les maths ?

#18

Message par zeshrek »

"Oh bravo !"
(Dr Beckett / Scott Bakula - Code Quantum)
Si vis pacem para bellum
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] Qui aime les maths ?

#19

Message par cutprod »

Mais non! a 65 ok pour "pépé" mais pas a la quarantaine!! Il y a eu confusion!
Vous etes dans la "fleur" de l'age et je suis pas loin derriere vous:)
Cut, srcipteur du dimanche...désolé !-)
Répondre