Page 1 of 3

[Mini-Challenge Basic #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:07
by Adriweb
Pour le fun, voici un mini-challenge à la fois Basic et Lua (cf le topic frère). Voici celui en Nspire-Basic :

Nous devons analyser l'âge d'une personne afin de déterminer la catégorie associée :
Si l'âge est entre 0 et 2, afficher "maison"
Si l'âge est entre 3 et 5, afficher "maternelle"
Si l'âge est entre 6 et 11, afficher "primaire"
Si l'âge est entre 12 et 15: afficher "collège"
Si l'âge est entre 16 et 18: afficher "lycée"
Si l'âge est entre 19 et 22: afficher "postbac"
Si l'âge est entre 23 et 65: afficher "travail"
Si l'âge est entre 66 et 100: afficher "retraite"
Pour moins de 0 ou plus de 100, afficher "troll"


On fera donc une fonction qui prendra un nombre entier en entrée et qui retournera une chaîne en sortie.

Le but étant de faire le code le plus court possible (on ne comptera pas les caractères d'espaces/tab servant pour indenter... histoire que ça reste lisible).

GL & HF :)

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:10
by Excale
Est-ce que l'entrée est dans ℤ?

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:17
by Adriweb
Oui, pas de troll à ce niveau, ca sera un entier relatif tout bête

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:23
by critor
Voilà:
Code: Select all
Define a(n)=
Func
Local l,i
{101,"troll",66,"retraite",23,"travail",19,"postbac",16,"lycee",12,"college",6,"primaire",3,"maternelle",0,"maison"}→l
If n<0
101→n
1→i
While l[i]>n
i+2→i
EndWhile
Return l[i+1]
EndFunc


Cela fait combien de caractères selon toi ?

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:26
by critor
Petit bug d'ailleurs, je perds la coloration syntaxique après un quick-edit.

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:35
by Adriweb
Selon Notepad++, 203-16 (total - 8*"\r\n"), donc 187 (je ne compte pas le Define/Func/EndFunc)
Donc tu peux indenter, ca ne changera rien, c'est ce que je voulais dire :P

(Edit : et c'est "normal" pour le quickEdit, faut rajouter l'appel manuel au plugin de coloration au code de fin de quickedit, comme pour le LaTeX... mais bon, suffit de refresh, pour le moment, je verrais ça plus tard)

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:43
by pierrotdu18
Adriweb wrote:Oui, pas de troll à ce niveau


J'aime bien le "à ce niveau" :p

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:46
by Excale
En mochifiant le code de critor:
Code: Select all
Define p(n)=
Func
Local i
when(n<0,∞,n)→n
1→i
While {101,66,23,19,16,12,6,3,0}[i]>n
i+1→i
EndWhile
{"troll","retraite","travail","postbac","lycee","college","primaire","maternelle","maison"}[i]
EndFunc

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:50
by pierrotdu18
En démochifiant un peu le code d'Excale :
Code: Select all
Define g(n)=
Func
Local i
if n<0
∞→n
1→i
While {101,66,23,19,16,12,6,3,0}[i]>n
i+1→i
EndWhile
{"troll","retraite","travail","postbac","lycee","college","primaire","maternelle","maison"}[i]
EndFunc

Re: [Mini-Challenge #9] : Quel est le groupe d'âge...

Unread postPosted: 12 Jul 2014, 18:58
by critor
Ce qui donne sauf erreur 169 pour Excale et 163 pour pierrotdu18 - bravo ! :bj:

J'aurais juste une critique: avec votre symbole infini, vous perdez toutes les TI-Nspire non-CAS. ;)