π
<-
Chat plein-écran
[^]

[Mini-Challenge Basic #π/4]: Avant je n'aimais pas la chimie

Sous-forums réunissant les mini-challenges en TI-Basic Nspire

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Bisam » 25 Juin 2014, 16:40

Ouh que c'est moche...

Voici la mienne :
Code: Tout sélectionner
Define atom(z)=
when(getType(z)="NUM", atom({1,0,"",z}), when(z[4]<=0,z[3], atom(augment(when(z[2]>0, {z[1]+1,z[2]-1},{floor((z[1]+3)/2), floor(z[1]/2)}), {z[3]&string(z[1])&mid("spdfgh", z[2]+1, 1)&string(min(z[4], 4z[2]+2))&" ", max(0,z[4]-4z[2]-2)}))))
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude pierrotdu18 » 25 Juin 2014, 16:56

Sauf que comme c'est la hauteur en pixels qui compte, ça, c'est mieux :) (ceci est une "amélioration" de la hauteur en pixels du code de Bisam et je ne considère pas le code ci-dessous comme ma production)

Code: Tout sélectionner
Define atom(z)=
Func
:when(getType(z)="NUM",atom({1,0,"",z}),when(z[4]≤0,z[3],atom(augment(when(z[2]>0,{z[1]+1,z[2]-1},{floor((z[1]+3)*0.5),floor(z[1]*0.5)}),{z[3]&when(right(string(z[1]),1)=".",left(string(z[1]),dim(string(z[1]))-1),string(z[1]))&mid("spdfgh",z[2]+1,1)&when(right(string(min(z[4],4*z[2]+2)),1)=".",left(string(min(z[4],4*z[2]+2)),dim(string(min(z[4],4*z[2]+2)))-1),string(min(z[4],4*z[2]+2)))&" ",max(0,z[4]-4*z[2]-2)}))))
:EndFunc
Dernière édition par pierrotdu18 le 25 Juin 2014, 17:22, édité 1 fois.
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Bisam » 25 Juin 2014, 17:04

Je l'avais fait, mais il faut rajouter des "exact" pour éviter l'apparition du "." dû au calcul en valeur approchée... et comme personne d'autre ne proposait 1 seule ligne...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude pierrotdu18 » 25 Juin 2014, 17:05

Ah ah, tu n'as pas vu que j'avais géré le problème? :p Sauf que comme je ne connaissais pas la fonction exact(), j'ai fait avec les strings, un truc de gros boucher :p
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Bisam » 25 Juin 2014, 17:07

Ah non, j'avais regardé vite fait...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude pierrotdu18 » 25 Juin 2014, 17:10

Pour info :

Image
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Bisam » 25 Juin 2014, 17:55

Eh, mais au fait, je n'ai pas mis de "Func...EndFunc" c'est volontaire ! Cela restreint d'autant plus la hauteur !
Pour le faire, il suffit de taper
Code: Tout sélectionner
ma_grosse_ligne_moche->atom(z)


Pour info, mon code de départ ressemblait à ceci :
Code: Tout sélectionner
Define atom(z)=
Func
Local n,l,r,e
1->n
0->l
""->r
While z>0
  min(z,4l+2)->e
  r&string(n)&mid("spdfgh",l+1,1)&string(e)&" "->r
  z-e->z
  If l>0 Then
    n+1->n
    l-1->l
  Else
    n->l
    floor((n+3)/2)->n
    floor(l/2)->l
  EndIf
EndWhile
Return r
EndFunc


Mais j'ai vite vu que ce serait bien plus efficace de regrouper les variables n et l en une seule (une liste à 2 éléments) puis j'ai réussi à supprimer la variable e... et enfin, j'ai mis la variable r dans la liste qui contenait déjà n et l... mais il fallait aussi mettre z pour pouvoir faire la boucle alors je l'ai mis avec.
Enfin, il ne restait plus qu'à écrire le tout sous forme récursive et le tour était joué !
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude pierrotdu18 » 25 Juin 2014, 18:01

Bravo bravo :)

Heu... je ne crois pas que cela soit permis, Excale avait bien annoncé que ça se passait dans l'éditeur de programmes, avec la capture d'écran...
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Bisam » 25 Juin 2014, 18:09

Une fois que l'on a fait ce que j'ai dit, on peut très bien ouvrir la fonction dans l'éditeur de programmes...
Je ne vois pas où est le problème.

PS : je viens de penser à une astuce pour éviter les divisions et même les "floor"...
Ça raccourcit même le code !
Code: Tout sélectionner
Define atom(z)=
when(getType(z)="NUM", atom({1, 0, "", z}), when(z[4]<=0, z[3], atom(augment(when(z[2]>0, {z[1]+1, z[2]-1},{shift(z[1]+3), shift(z[1])}), {z[3]&string(z[1])&mid("spdfgh", z[2]+1, 1)&string(min(z[4], 4z[2]+2))&" ", max(0, z[4]-4z[2]-2)}))))
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #π/4]: Avant je n'aimais pas la ch

Message non lude Excale » 29 Juin 2014, 14:53

Image
Avatar de l’utilisateur
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 3.9%
 
Messages: 2955
Images: 3
Inscription: 10 Sep 2010, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers Mini-Challenges

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
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.
1319 utilisateurs:
>1276 invités
>38 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)