Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » Lancement du 48h CPC n°4
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Lancement du 48h CPC n°4

Posté le 30/06/2012 00:09

Les 48h CPC ou 48 hours Casio Programming Contest est un concours de programmation bimestriel organisé par Planète-Casio. A chaque édition, un langage et une gamme de calculatrices sont mis à avant.



Pour cette 4° édition, nous devrez concevoir un jeu sur le thème "Les classiques" avec le langage communautaire LuaFX. Il est disponible sur Graph 75/85/95 (SD) et Graph 100(+). Vous avez jusqu'au 1er juillet 23h59 (heure française) pour uploader votre programme.

Ne traine pas et lance-toi dès maintenant dans la compétition !
>>> Accéder au règlement




Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/07/2012 00:02 | #


Moi aussi j'ai eu pas mal de problème, j'ai planché pendant 2h sur un "not enough memory" avant de changer littéralement de methode, mais bon t'inquiette pas tu va gagner, j'ai fait qu'un petit démineur Mais bon ca m'a fait apprendre le Lua en 2 jours au moins
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 02/07/2012 00:04 | #


N'empêche je suis fier de mon jeu. J'ai commencé hier, j'y ai passé toute la nuit et mon dimanche, et je pourrais presque l'inscrire dans la catégorie 3d du concours UCF.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/07/2012 00:13 | #


O_o j'avoue qu'il est bien, en 2 jour j'aurais pas pus faire ca

Perso j'était en weekend familliale, heureusement qu'on peut programmer OnCalc un peu ca aide quand on passe 4h a table Et toi d'après ce que j'ai compris t'était en vacance jusqu'a hier soir, je crois qu'il était pas super bien placé ce CPC (Bon en même temps au final ca t'a arrangé )
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 02/07/2012 01:37 | #


En tout cas, bravo à vous deux !
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Vebveb Hors ligne Membre Points: 797 Défis: 14 Message

Citer : Posté le 02/07/2012 09:49 | #


Le luafx sur g85 est assez limité en mémoire.

Le problème de programmer on-calc est que l'on est obligé de passer par le format .lua (et non .lc). Or pour lire le .lua, l’interpréteur a besoin de beaucoup de mémoire pour précompiler et aussi il ne supprimer pas les informations débug: pour les gros programmes on est obligé d'utiliser le format .lc sans les info debug.

Bravo pour votre participation.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/07/2012 13:02 | #


Je sais, au moment ou j'ai eu mon problème de mémoire, je programmais plus OnCalc(parce que edit limite la taille) donc j'ai tester en compilant, et j'ai eu le même problème (il métait juste un tout petit peu plus longtemps a arriver).
Vebveb Hors ligne Membre Points: 797 Défis: 14 Message

Citer : Posté le 02/07/2012 13:35 | #


Tu utilises deux tableaux de 188 cases: status et nbrBombe.

Les tableaux en lua prennent beaucoup de mémoire. Sur g100, j'avais pu estimer qu'une case d'un tableau prenait environ 20 octet. C'est surement plus sur g85 (les pointeurs prennent plus de place). or 2 * 20 *188 = 7520 octets, ça n'explique pas la problème de mémoire, mais libérer cette place peut résoudre le problème.
As tu bien enlevé les info débug lors de la précompilation ('-s')? ça peut enlever un tiers de la place prise par le programme lors de l'exécution.

Pour gagner de la place en n'utilisant pas de tableaux pour status et nbrBombe, utilises le système des fichiers: Les nombres contenus dans tes tableaux sont très petits, ils tiennent donc dans un char (1 octet ). Tu peut donc stocker ces tableaux dans des fichiers de 200 octets environ.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/07/2012 13:56 | #


Ah ouais j'avais pas regardé les fichier, mais ca prendra plus de temps a lire non ?

En fait le problème est survenu quand j'ai voulu faire la partie qui fait que lorsqu'on clique sur une case sans numéro ca découvre toutes les cases voisines, et j'avais fait une espèce de liste d'attente des cases a analyser (parce que ca part dans tous les sens) et bien evidement c'était dans un tableau.
Ca explique pourquoi ce problème de mémoire Du coup la j'ai fait par balayage ce qui devrait être un peu moins rapide puisqu'il doit vérifier chaque cases plusieurs fois, mais au moins il n'y a pas de problème de mémoire.
Et non je n'avais enlever les info de débug. Merci pour cette info Je vais essayer de le refaire et de tester cette histoire de fichier
Vebveb Hors ligne Membre Points: 797 Défis: 14 Message

Citer : Posté le 02/07/2012 15:54 | #


Oui, ce sera un peu plus lent d'utiliser les fichiers, et tu ne pourra pas utiliser la case 0: c'est indexé à partir de 1.

Sinon, pour résoudre ton problème de manière linéaire, on peut utiliser tes tableaux (ou des fichiers) et une fonction récursive (qui s'appelle elle même avec un nouvel argument tant que son rôle n'est pas fini).
Le lua n'est pas bien adapté à la programmation récursive, et il y aura une légère perte de mémoire à chaque appel (libérée après).

Voici en pseudo code ce que tu peux faire:

découvre_blanc ( case , dejatraité):
si dejatraité[case] == true alors ne rien faire
sinon
dejatraité[case] = true
si il n'y a pas de bombes autour,
dans status, indiquer que case est blanc
appeler decouvre_blanc sur la case à gauche
appeler decouvre_blanc sur la case à droite
... de même pour haut et bas...
sinon (il y a des bombes)
ne rien faire



Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/07/2012 16:08 | #


J'avais pas dutout pensé a faire comme ca pourtant c'est simple Merci

Sinon les fichiers vu qu'ils sont dans la ram sont supprimés a la fin du programme, non ? Y'a moyen de sauvegarder quelquechose qui ne se supprime pas a l'extinction ?
Et j'ai pas vu de fonction qui m'aurait permis de chronomettrer le temps que met l'utilisateur a resoudre le démineur, on peut pas le faire ?
Vebveb Hors ligne Membre Points: 797 Défis: 14 Message

Citer : Posté le 02/07/2012 16:20 | #


Les fichiers ne sont pas supprimés à la fin si il n'y a pas de reset.

On ne peut pas chronometrer le temps, mais tu peut quand même avoir une variable qui s'incrémente petit à petit, mais tu ne pourras pas en déduire le temps (pas même vitesse d'exécution sur g100 et g85 et g85 avec overclocking)


Edit: Je ne sais pas si la méthode récursive ne risque pas de causer des 'not enough memory'. Le Lua n'étant pas adapté au récursif, chaque appel prend une place non négligeable dans la mémoire. Pour s'en rendre compte, j'ai utilisé le programme suivant:

local print = nbdraw.print

local function rec (i)
i=i+1
print (i,"\n\r")
rec(i)
end

rec(0)


Le programme n'avait plus de mémoire à partir de 390 appels sur l'émulateur g85 et à partir de 510 sur g100

Les programmeurs du Lua ont connaissance de cette faiblesse et ils ont programmé un remède qui ne marche totalement que pour la récurrence simple (ce qui n'est pas ton cas puisque tu as une récurrence quadruple): si l'on met return fonction() alors fonction réutilise la mémoire de la fonction appelante, c'est à dire que le code suivant ne s'arrète jamais:
local print = nbdraw.print

local function rec (i)
i=i+1
print (i,"\n\r")
return rec(i)
end

rec(0)



LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 103 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd