Page 1 of 6

[Mini-Challenge Lua #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 22:51
by Adriweb
Bonjour tout le monde,

J'ai pensé que ça serait sympa de proposer quelques mini-challenges en Nspire-Lua, comme ça a déjà été fait dans d'autres langages (qui s'y prêtent parfois plus, côté optimisation, mais... pas grave :D)

Pour cette première édition, le but est simple :
Déterminer si la plateforme sur laquelle le script s'exécute est une CAS ou non-CAS, peu importe l'état des variables ou la configuration mathématique de la machine.
La valeur de retour devra être un boolean (soit true, soit false - nil non accepté) nommé "isCAS".


Règles (spécifiques à ce challenge ou non, je ne sais pas encore, on verra...)
  • Le but est de réaliser ceci avec un code le plus court possible (minimum de caractères) *
  • Utilisation de Nspire-Lua pur (que ce que TI fournit : pas de LuaExtension ou autre chose de non officiel :P). (ceci est une règle globale à tous les challenges, cependant...)
  • Tous les apilevels sont autorisés, du moment que le code fonctionne sur OS 3.6

* On commencera à compter à partir du premier caractère non-espace après l'assignation de la variable. Par exemple : isCAS = blabla .. blabla2 comptera comme 17 caractères.

Quelques liens utiles : PDF officiel de l'API Nspire et Wiki Inspired-Lua ;)

Vous pouvez partager vos codes ou uniquement sa longueur, comme vous voulez - m'enfin, ne trichez pas en recopiant d'autres personnes : c'est le premier qui aura posté le plus court qui aura gagné (jusqu'à ce qu'il y ait plus court, ou que le challenge soit fermé pour la compétition)


Les challenges seront "fermés" à la compétition soit au bout de x participations, soit au bout de y jours, on verra bien. (les topics resteront ouvert et n'importe qui pourra poster, mais il n'y aura pas de nouveau gagnant officiel de désigné s'il y en a déjà eu un dans le temps/conditions imparti)
(pour l'instant, ya pas grand chose de fixé dans les "règles" - si vous avez des idées pour les règles, faites-moi en part)


Bonne chance :)

Et pis, pourquoi pas pour celui qui remportera le plus de challenges, des stickers TI-Planet à gagner ? :P
M'enfin, ce n'est pas un véritable concours comme les grands trucs qu'on organise, c'est principalement pour le fun et l'apprentissage partagé de connaissances générales et d'astuces ;)

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:07
by turok52
Ca a l'air sympa.
Je posterai un truc demain soir, une fois que j'aurai un peu étudié la syntaxe lua et les apis de la nspire. ^^

Pour le moment en pseudo-code on pourrait faire :

iscas = (2*z)

Renvoie un int donc un true si 2*z est possible, donc que z est considérée comme une variable, donc c'est du CAS
Et une erreur (car z n'est pas considéré comme une variable, nanana la nspire rale, donc un false) sinon.

Je pense pas que ce soit correct comme code mais bon ^^

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:11
by Levak
Adriweb wrote:Utilisation Nspire-Lua pur (pas de troll :P).


Sans math.eval ou var.store, j'ai du mal à saisir comment tu peux faire ce test : est-ce considéré comme du Lua pur ?

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:12
by Adriweb
Ah oui, par Nspire-Lua pur j'entends pas de Lua Extensions avec ndless.
Tout ce qui est fourni de base par TI, quoi.

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:13
by Bisam
Pour ce qui est du code de turok :
1) La multiplication par 2 ne sert à rien.
2) Le code renvoie une erreur et non False lorsque ce n'est pas une CAS
3) Le code ne renvoie pas True mais une expression
4) Le code ne fonctionne de toute façon pas du tout car il faut passer par le Basic pour l'évaluation
5) Même si tout cela fonctionnait, le code échoue si par malheur z possède une valeur !

Bref : FAIL !

Adriweb, est-il autorisé d'utiliser "math.eval" ?

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:14
by turok52
Bisam wrote:Pour ce qui est du code de turok :
1) La multiplication par 2 ne sert à rien.
2) Le code renvoie une erreur et non False lorsque ce n'est pas une CAS
3) Le code ne renvoie pas True mais une expression
4) Le code ne fonctionne de toute façon pas du tout car il faut passer par le Basic pour l'évaluation
5) Même si tout cela fonctionnait, le code échoue si par malheur z possède une valeur !

Bref : FAIL !

Adriweb, est-il autorisé d'utiliser "math.eval" ?


Je pense pas que ce soit correct comme code mais bon ^^


J'avais raison ! \o/

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:15
by Adriweb
@Bisam : yep, tout ce que TI fournit dans le Nspire-Lua, sans modifications, est autorisé :)

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:19
by AnToX98
Bah voila c'est pas bien dur :

Code: Select all
function iscas()
    if math.eval("solve(x=1,x)") then
        return true
    else
        return false
    end
end


isCas = iscas()

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:22
by AnToX98
Encore plus optimisé

Code: Select all
function iscas()
    return math.evalStr("solve(x=1,x)")=="x=1"
end



[Edit by Bisam] Ca te dérange pas si je corrige tes erreurs de syntaxe flagrantes ?

Re: [Mini-Challenge #1] : CAS ou non-CAS ?

Unread postPosted: 22 Jun 2014, 23:27
by Levak
J'aurais tendance à dire :
Code: Select all
isCAS = (math.evalStr("x") ~= nil)