Des chiffres!! :D
22 posts
• Page 3 of 3 • 1, 2, 3
Re: Des chiffres!! :D
Effectivement c'est un peu plus clair, je regarde comment c'est fait .
-
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 2955
- Images: 3
- Joined: 10 Sep 2010, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Des chiffres!! :D
J'ai finalement écrit un algo directement sur Nspire... et ça fonctionne pas mal, sans être trop lent.
Si on lui demande de renvoyer la première solution trouvée, cela lui prend en général moins de 5 secondes... mais jusqu'à 1min30 s'il n'y a pas de solution et autant si on lui demande TOUTES les solutions (qui bien souvent se répètent une multitude de fois dans un ordre différent).
Je vous tape ce que j'ai fait (je n'ai pas de quoi transférer le .tns ici... et c'est pédagogique également)
Si on lui demande de renvoyer la première solution trouvée, cela lui prend en général moins de 5 secondes... mais jusqu'à 1min30 s'il n'y a pas de solution et autant si on lui demande TOUTES les solutions (qui bien souvent se répètent une multitude de fois dans un ordre différent).
Je vous tape ce que j'ai fait (je n'ai pas de quoi transférer le .tns ici... et c'est pédagogique également)
- Code: Select all
{"*","+","-","/"}->op
Define cherche_1(total, nombres)
Func
cherche(total, nombres,{ },false)
Endfunc
Define cherche_tout(total, nombres)
Func
cherche(total,nombres,{ },true)
Endfunc
Define cherche(total, nombres, etapes, all)
Func
Local n,i,j,k,l,p,n1,n2,tmp,st,calc,trouve
dim(nombres)->n
false->trouve
For i,1,n
If nombres[i]=total Then
Disp etapes
Return true
EndIf
EndFor
1->i
While i<=n and when(all, true, not trouve)
i+1->j
While j<=n and when(all, true, not trouve)
max(nombres[i],nombres[j])->n1
min(nombres[i],nombres[j])->n2
If n2=1 then
2->k
3->p
Else
1->k
4->p
EndIf
While k<=p and when(all, true, not trouve)
string(n1)&op[k]&string(n2)->st
expr(st)->calc
If calc<>0 and mod(calc,1)=0 Then
left(nombres,j-1)->tmp
calc->nombres[i]
cherche(total,augment(tmp,mid(nombres,j+1),augment(etapes,{st&"="&string(calc)}))->trouve
EndIf
k+1->k
EndWhile
j+1->j
EndWhile
i+1->i
EndWhile
Return trouve
EndFunc
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
22 posts
• Page 3 of 3 • 1, 2, 3
Who is online
Users browsing this forum: ClaudeBot [spider] and 1 guest