IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Une grille façon STL


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut Une grille façon STL
    Bonjour à tous.

    Je me suis lancé il y a peu dans la réalisation d'un programme jouet.

    Il s'agit d'un interpréteur C++ de langages étranges (dits ésotériques).
    Je m'intéresse aux langages dont les instructions sont codées par des caractères.
    Le célèbre brainf**k est un exemple, mais il y en a plein d'autres, tel que Path ou LNUSP.

    Dans de nombreux cas, le pointeur d'instruction se déplace linéairement, mais peut tourner sur certaines instructions:
    $---\
        |
        |
    
    Partant du $, le code pointeur rebondit sur le slash, comme la lumière sur un miroir.

    Voici un code source possible (quoi qu'inutile...)
    $  !/     !\   #
        ,      .
        \ ++++ /
    
    Pour exécuter le script, je crée une matrice de caractères, et je la parcoure.

    Le problème, c'est qu'en général, la densité du code est très basse, et qu'il ne sert pas à rien de stoquer les instructions vides

    J'ai pensé à créer un graphe d'instructions.

    Le problème est devenu subitement beaucoup plus complexe quand j'ai décidé de rendre l'interpréteur générique en créant des fichiers de langages. (voir la pièce jointe)

    Certains languages ont une grille à une dimension, d'autres à 3 ou 4.
    Certains ont des opérateurs de rotation à 45 degrés.
    $---q
         \
          \
    
    D'autres proposent des "pas de cotés", qui déplacent le pointeur d'une case sur le côté, sans changer son déplacement.
    $---v
        ----
    
    J'ai essayé d'adapter mon graphe, mais je ne vois pas comment permettre tout cela.

    En gros, j'ai besoin d'un itérateur ayant pour fonctionnalité un vecteur de déplacement, une position, le "case suivante" et le "avance jusqu'a la prochaine instruction"

    Le tout dans une classe que j'imagine être templatée par le nombre de dimension de la grille.

    Quelqu'un a-t'il une proposition?

    Voici mon (nouveau) début de code.
    Code grid.hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    template<typename VALUE, int DIMENSION>
    class grid{
    public:
    	typedef std::array<int, DIMENSION> position_type;
    	typedef VALUE value_type;
     
    private:
    	class Slot{
    		typedef std::array<int, DIMENSION> position_type;
    		position_type position;
    	public:
    		Slot(const position_type& place):position(place){}
    		bool operator<(const Slot& other){
    			for(int i=0;i!=DIMENSION;++i){
    				if(position[i]!=other.position[i]) return position[i]<other.position[i];
    			}
    			return false;
    		}
    	};
     
    	typedef std::map<Slot, VALUE> inner_type;
    	inner_type cells;
     
    public:
    	grid();
    	bool put(const position_type& slot, const value_type& value){
    		return false;
    	}
    };

    PS: voici deux sites pour les curieux sur les langages:
    le magique 99 bottles of beer qui propose de nombreuses versions de l'affichage d'une comptine.
    liste sur esolangs.org qui liste des langages souvent plus délirants les uns que les autres.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44
  2. [Débutant] Affichage d'une grille
    Par Mathieu.J dans le forum OpenGL
    Réponses: 25
    Dernier message: 13/06/2004, 19h38
  3. : Adapter la taille d'une grille
    Par SteelBox dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/07/2003, 07h08
  4. Désactiver la multi-sélection d'une grille
    Par Riko dans le forum Composants VCL
    Réponses: 6
    Dernier message: 17/06/2003, 09h47
  5. jaimerais savoir commen creer une grille.......
    Par zephyr dans le forum Flash
    Réponses: 5
    Dernier message: 29/04/2003, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo