π
<-

Un ptit moteur 3D ?

Assembleur, Axe, C/C++, ICE...

Re: Un ptit moteur 3D ?

Message non lude Plokki » 15 Fév 2015, 17:43

A l'aide ! je suis bloqué par un overflow lors d'un calcul :( , je voudrais donc simplifier l'expression: pour cela il faut que j'identifie le nombre le plus petit dans l'absolu parmi 2 autres mais il doit être différent de 0.
Par exemple j'ai 12, -32, 0 , il faut choisir 12. J'aurais donc besoin d'un algorithme relativement optimisé pour le faire (autre qu'un gros paquet de condition comme je le conçoit). Merci d'avance ça m'aiderait beaucoup :)
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: Un ptit moteur 3D ?

Message non lude matref » 15 Fév 2015, 17:48

Si tes 3 nombres sont A, B et C :

Code: Tout sélectionner
abs(A)?,-1 // pas le moins unaire, le moins "normal"
→A
abs(B)?,-1
→B
abs(C)?,-1
→C
Le résultat est min(min(A,B),C)

Ce code marche parce que -1 en représentation non-signée est 65535, le plus grand chiffre représentable en 16 bits, et que min() sans le 'r' traite les nombres comme non signés.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: Un ptit moteur 3D ?

Message non lude TheMachine02 » 15 Fév 2015, 17:53

ou alors :
Code: Tout sélectionner
min(min(abs(A),abs(B)),abs(C))??+1


qui je pense est peut-être un peu mieux ;) ; car il modifie pas les variables.
EDIT : mince j'avais pas vu le problème avec 0.... Le code va pas marcher.
vaut mieux prendre le code de matref :D
Dernière édition par TheMachine02 le 15 Fév 2015, 17:55, édité 1 fois.
Avatar de l’utilisateur
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 30%
 
Messages: 342
Images: 0
Inscription: 16 Jan 2013, 18:27
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Médecine

Re: Un ptit moteur 3D ?

Message non lude matref » 15 Fév 2015, 17:54

Ben non ça marche pas ton truc. Fais-le avec les trois nombres qu'il a donné en exemple, ton code donne 1 alors que la bonne réponse est 12.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: Un ptit moteur 3D ?

Message non lude Plokki » 15 Fév 2015, 18:02

Merci pour les réponses rapides ! :D
Je ne connaissais pas la commande min( :o
les nombres en sortie ne sont plus signés mais c'est pas grave.
Avatar de l’utilisateur
Plokki
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 40.6%
 
Messages: 124
Inscription: 02 Sep 2014, 15:15
Localisation: Près de... ah bah non !
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: T°S-spé math

Re: Un ptit moteur 3D ?

Message non lude Hayleia » 15 Fév 2015, 18:06

Avec min(,)r ils sont signés (mais ça ne répond pas à ton problème, juste à un possible questionnement futur).

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
Avatar de l’utilisateur
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 43.8%
 
Messages: 2509
Images: 2
Inscription: 30 Aoû 2011, 08:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Templar

Re: Un ptit moteur 3D ?

Message non lude grosged » 15 Fév 2015, 21:42

Plokki a écrit:A l'aide ! je suis bloqué par un overflow lors d'un calcul :( , je voudrais donc simplifier l'expression: pour cela il faut que j'identifie le nombre le plus petit dans l'absolu parmi 2 autres mais il doit être différent de 0.
Par exemple j'ai 12, -32, 0 , il faut choisir 12. J'aurais donc besoin d'un algorithme relativement optimisé pour le faire (autre qu'un gros paquet de condition comme je le conçoit). Merci d'avance ça m'aiderait beaucoup :)

Plokki, si je comprends bien, tu veux savoir, (concernant une coordonnée x,y,z ) quelle est la variable la plus proche de 0
(puis mise dans la variable m, par exemple)
afin de changer d'échelle , en faisant un x/m,y/m,z/m ?.. C'est bien ça?


Matref, concernant
Code: Tout sélectionner
abs(A)?,-1 // pas le moins unaire, le moins "normal"
→A
abs(B)?,-1
→B
abs(C)?,-1
→C
Le résultat est min(min(A,B),C)

au final ça serait pas plutôt 1+min(min(A,B),C) ?
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Un ptit moteur 3D ?

Message non lude Hayleia » 15 Fév 2015, 21:49

grosged a écrit:Matref, concernant
Code: Tout sélectionner
abs(A)?,-1 // pas le moins unaire, le moins "normal"
→A
abs(B)?,-1
→B
abs(C)?,-1
→C
Le résultat est min(min(A,B),C)

au final ça serait pas plutôt 1+min(min(A,B),C) ?

Déjà, non, ça serait plutôt min(min(A,B),C)+1 pour l'optimisation :P

Ensuite, de toute façons, non puisqu'il y a le "?," (qui pourrait d'ailleurs être un "??").
Ce que fait (abs(A)?,-1)→A c'est mettre dans A soit MaxPositiveInteger s'il est nul soit abs(A). Du coup, le min() renverra bien le minimum des valeurs absolues sans tenir compte de celles qui sont nulles.

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
Avatar de l’utilisateur
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 43.8%
 
Messages: 2509
Images: 2
Inscription: 30 Aoû 2011, 08:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Templar

Re: Un ptit moteur 3D ?

Message non lude grosged » 15 Fév 2015, 21:58

ah, merci pour ces précisions , Hayleia!
J'avais cru bien déchiffrer ces lignes en Axe , je les avais compris ainsi : Abs(A)-1 dans A ...etc
(J'suis plutôt TI-Basic, en fait... aucune notion d'Axe!)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.5%
 
Messages: 776
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Un ptit moteur 3D ?

Message non lude Hayleia » 15 Fév 2015, 22:04

En fait, tout réside dans ce "?,". ça fait un If Else en une ligne. Grosso modo, (abs(A)?,-1)→A équivaut à :
Code: Tout sélectionner
If abs(A)

Else
    -1
End
→A

ce qui équivaudrait en bon vieux Basic à ça si je ne m'abuse :
Code: Tout sélectionner
abs(A)
If Ans:Then

Else
    Ans-1
End
Ans→A

Et si je dis que le "?," pourrait être remplacé par "??", c'est parce que "??" c'est "If not".

Le tout sachant qu'en unsigned, -1 équivaut à MaxPositiveInteger.

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
Avatar de l’utilisateur
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 43.8%
 
Messages: 2509
Images: 2
Inscription: 30 Aoû 2011, 08:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Templar

PrécédenteSuivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2213 utilisateurs:
>2199 invités
>5 membres
>9 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)