|
Résultats du défi du 01/08/03: Calculateur Algébrique
Tout d'abord j'aimerais préciser une petite erreur dans le défi précédent : Toutes les mesures de temps étaient erronées car j'ai bêtement utilisé $ctime au lieu de $ticks. Je m'en excuse.
Ce mois-ci, j'ai l'intension de tester un nouveau type de défi, vous devrez en effet corriger un code et l'optimiser.
Le code en question est un code permettant d'effectuer des calculs algébriques.
Syntaxe : $algebre( calcul , valeurs )
Exemple : $algebre(2a*b/c=r,a=5;b=3;c=2)
Retourne : Valeur de r : 15 L : | Code : | 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 :
11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 :
21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 :
31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 :
|
alias algebre { ;Nom : $algebre ;Syntaxe : $algebre(calcul,valeurs) ;Exemple : $algebre(a+b=c,a=2;b=6) ;Retourne : Valeur de c : 8
var %partiecalculun $gettok($$1,1,61) var %partiecalculdeux $gettok($$1,2,61) var %maximum $len(%partiecalculun) var %index 1 while (%index <= %maximum) { var %lettreactive $mid(%partiecalculun,%index,1) var %lettresuivante $mid(%partiecalculun,$calc(%index + 1),1) var %ascactive $asc(%lettreactive) var %ascsuivante $asc(%lettresuivante) var %activelettre $false var %suivantelettre $false if (%ascactive >= 65) && (%ascactive <= 90) var %activelettre $true if (%ascactive >= 97) && (%ascactive <= 122) var %activelettre $true if (%ascactive >= 48) && (%ascactive <= 57) var %activelettre $true if (%ascsuivante >= 65) && (%ascsuivante <= 90) var %suivantelettre $true if (%ascsuivante >= 97) && (%ascsuivante <= 122) var %suivantelettre $true if (%ascsuivante >= 48) && (%ascasuivante <= 57) var %suivantelettre $true if (%suivantelettre == $true) && (%activelettre == $true) { var %partiecalculun $mid(%partiecalculun,1,%index) var %partiedeux $mid(%partiecalculun,$calc(%index + 1),$len(%partiecalculun)) var %partiecalculun %partiune $+ * $+ %partiedeux } inc %index 1 }
var %index 1 while (%index <= $gettok($$2,0,59)) { var %egalite $gettok($$2,%index,59) var %lettre = $gettok(%egalite,1,61) var %chiffre = $gettok(%egalite,2,61) var %partiecalculun = $replace(%partiecalculun,%lettre,%chiffre) inc %index 1 } var %reponse $calc(%partiecalculun) return Valeur de %partiecalculdeux : %reponse } |
|
|
Règlement |
Doit fonctionner sous mirc 6.03
Doit être le plus légé possible, tout en restant fonctionnel.
Doit remplir les mêmes fonctions que le code ci-dessus.
Vous pouvez renommer les variables, supprimer/remplacer des lignes de codes inutiles, créer des alias, etc.
Pas de DLL.
|
| |
|
Cliquer ici pour connaître le gagnant (ou la gagnante)
Liste des participants (7)
Nom du script |
Auteur |
Commentaire |
Super algèbre 5000 |
tiot |
Points forts:
Prend en charge toutes les opérations (+,-,*,/) et les lettres accolées (multiplication)
Points faibles:
Calculs ratés : "a+ 5=c,a =3" & "x +3= r,x= 5" & "x+ y=d,x=3;y = 5" & "x *z= d,x = 3 ;z = 5" & "x/ z=e,x = 5 ; z = 3" > À quelques problèmes avec les espaces.
Conclusion:
Temps $algebre: 0.333 ms
Taille du fichier: 233 bytes |
$algebre |
Sanaell |
Points forts:
Prend en charge toutes les opérations (+,-,*,/) et les lettres accolées (multiplication)
Points faibles:
Calculs ratés : "a+ 5=c,a =3" & "x+ y=d,x=3;y = 5" & "x *z= d,x = 3 ;z = 5" & "x/ z=e,x = 5 ; z = 3" > À quelques problèmes avec les espaces.
Conclusion:
Temps $algebre: 0.5 ms
Taille du fichier: 391 bytes |
$algebre |
|PaRa-BoL |
Points forts:
Prend en charge toutes les opérations (+,-,*,/) et les lettres accolées (multiplication)
Points faibles:
Calculs ratés : a+ 5=c,a =3 & x+ y=d,x=3;y = 5 & x *z= d,x = 3 ;z = 5 & x/ z=e,x = 5 ; z = 3 > À quelques problèmes avec les espaces.
Conclusion:
Temps $algebre: 1.2 ms
Taille du fichier: 382 bytes |
Alg |
Goulagman |
Points forts:
Prend en charge toutes les opérations (+,-,*,/)
Supporte bien les espaces
Points faibles:
Ne marche pas lorsque 2 lettres sont accolées (multiplication)
Conclusion:
Temps $algebre: 0.2 ms
Taille du fichier: 131 bytes
Bien que ce code soit le plus légé, je tiens à favoriser les codes ayant les mêmes fonctions que le code de départ, sinon ce code aurait été le gagnant. |
Algebre de boule :p |
ToXyKoPaTh |
Points forts:
Prend en charge toutes les opérations (+,-,*,/)
Points faibles:
Calculs ratés : x+ y=d,x=3;y = 5 et x +3= r,x= 5 > A quelques problèmes avec les espaces.
Ne marche pas lorsque 2 lettres sont accolées (multiplication)
Conclusion:
Temps $algebre: 0.5 ms
Taille du fichier: 427 bytes |
algebre 1.0 et 2.0 |
aerith |
Points forts:
Prend en charge toutes les opérations (+,-,*,/)
Supporte bien les espaces
Points faibles:
Ne marche pas lorsque 2 lettres sont accolées (multiplication)
Conclusion:
Temps $algebre: 6.51 ms
Taille du fichier: 1096 bytes |
Algebre |
S4turn |
Points forts:
Prend en charge toutes les opérations (+,-,*,/)
Supporte bien les espaces
Points faibles:
Ne marche pas lorsque 2 lettres sont accolées (multiplication)
Conclusion:
Temps $algebre: 1.77 ms
Taille du fichier: 1321 bytes |
Le gagnant du défi: Super algèbre 5000 de tiot
Ce code remplit toutes les fonctions du code de base, est légé et assez rapide.
Dommage pour Goulagman que sont code ne prenne pas en charge les lettres accolées (multiplication).
Retour au défi du moment
|
|