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

Langage Java Discussion :

Suite des Fourmis


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Suite des Fourmis
    Bonjour,

    J'essaye réaliser la suite bien connues des fourmis :
    1
    11
    21
    1211
    111221
    312211
    etc...

    et je bloque sur le comptage des nombres. Je m'explique, normalement le principe est qu'il faut comparer le caractère "suivant" par rapport au caractère courant et incrémenter un compteur. A chaque fois je dépasse le nombre de caractère :s

    voici ce que j'ai pour le moment :
    Code : 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
    public class fourmi
    {
     static char c ;
        public static void main (String[] args) 
        {
        	String u0 = new String("1111");
    	int cpt=0;
    	int i=1;
     
     
    	while (i<u0.length())
    	    {
     
    		if ( u0.charAt(i)== u0.charAt(i-1))
    		{
    		     cpt++;
    		     c=u0.charAt(i);
     
    		}  
     
    		i++;
    	    }	    	
     
    	System.out.println(Integer.toString(cpt)+c);  
     
     
        }
     
    }
    Je sais bien que je n'ai pas la solution mais si quelqu'un pouvait m'aider à résoudre mon problème...

    Merci d'avance

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut,

    Citation Envoyé par Orbix
    A chaque fois je dépasse le nombre de caractère :s
    J'ai testé ton code, je ne sais même pas comment tu fais pour dépasser, je n'arrive même pas au bout de la chaine!!!

    Voilà le mien (vite fait, mal fait... ). Tu peux t'en inspirer... et corriger les maladresses de code que j'ai faites!

    Code : 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
    31
    32
    33
    34
    35
    36
     
    public class fourmi
    {
        public static void main (String[] args) {
    		String chaine="1";
    		System.out.println(chaine);
     
    		for (int i=0;i<10;i++) {
    			chaine=convert(chaine);
    			System.out.println(chaine);
    		}
    	}
     
     
      public static String convert(String u0)
        {
            int cpt=1;
    	StringBuffer temp=new StringBuffer();
     
    	for (int i=1;i<u0.length();i++)
    	    {
    			if ( u0.charAt(i)== u0.charAt(i-1))
    			{
    				cpt++;
    			} else {
    				temp.append(Integer.toString(cpt)+u0.charAt(i-1));
    				cpt=1;
    			}
    	    }	    	
     
            temp.append(Integer.toString(cpt)+u0.charAt(u0.length()-1));  
     
     	return temp.toString();
        }
     
    }
    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1
    11
    21
    1211
    111221
    312211
    13112221
    1113213211
    31131211131221
    13211311123113112211
    11131221133112132113212221
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Les expressions régulières ainsi que les classes Pattern et Matcher sont vos amies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public static void main(String ...args) {
        Pattern pattern = Pattern.compile("1+|2+|3+");
        String line = "1";
        System.out.println(line);
        for(int i = 0; i < 10; i ++) {
            Matcher matcher = pattern.matcher(line);
            StringBuilder sb = new StringBuilder();
            while(matcher.find()) {
                String s = matcher.group();
                sb.append(s.length()).append(s.charAt(0));
            }
            line = sb.toString();
            System.out.println(line);
        }
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci,

    je préfère la 1ere solution , ca ressemble plus à ce qu'on a vu en cours même si
    "StringBuffer" et "Append" je n'ai pas encore vu.

    En tout cas, merci de votre aide ca m'avance déjà beaucoup (passé toute la soirée hier dessus sans succès )

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par Orbix
    Merci,

    je préfère la 1ere solution , ca ressemble plus à ce qu'on a vu en cours même si
    "StringBuffer" et "Append" je n'ai pas encore vu.
    Si tu utilise Java 5 tu peux utiliser un StringBuilder à la place du StringBuffer (cf FAQ : Comment concatener des chaînes de caractères ?) .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    pour concatener en fait nous on utilise "simplement" l'opérateur "+". (avec des changements de type de données à droites et/ou gauche au besoin)

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Comme c'est indiqué dans le lien que j'ai posté, il ne faut pas faire de concaténation sur un String dans une boucle.
    Je ne pense pas que ton prof t'en veuille d'avoir fait des recherches et d'utiliser une méthode beaucoup (mais vraiment beaucoup) plus correcte et performante (voir aussi : Utilisation optimale des chaînes de caractères en Java).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Quelqu'un peut-il expliquer aux newbees ce qu'est cette suite des fourmis ?? Même en regardant l'exemple, ce matin aux brumes matinales (et, certes, avec un marteau piqueur qui fait des travaux dans la rue, ce qui n'aide pas la concentration), je ne vois pas du tout sa règle... Niveau Zéro aux tests d'intelligence je suppose...

    Merci, bien sûr.

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Cette suite logique a été rendue célèbre par Bernard Werber dans sont livre "Les fourmis".
    En fait chaque ligne est "l'énoncé" de la précédente.

    La première ligne est "1" que tu lis "un 1" soit "1 1" -> "11".
    La deuxième ligne est "11" que tu lis "deux 1" soit "2 1" -> "21"
    La troisième ligne est "21" que tu lis "un 2 et un 1" soit "1 2 et 1 1" -> "1211"
    etc...
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    D'ailleurs le nombre 4 n'apparaît jamais dans cette suite, ni aucun nombre supérieur. Juste des 1, des 2 et des 3. (Cette intervention est d'une inutilité assez impressionnante)
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  11. #11
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    xavlours => Ha non, je l'ai trouvé intéressante, moi. Je n'avais jamais fait gaffe !
    Par contre, celle-ci l'est.
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/11/2006, 15h16
  2. Réponses: 2
    Dernier message: 19/07/2006, 00h12
  3. [Logique] Peux-t-on donner la suite des nombres suivants
    Par Heureux-oli dans le forum Enigmes
    Réponses: 12
    Dernier message: 26/06/2006, 09h55
  4. ajouter à la suite des tableaux
    Par vic_cw dans le forum C++
    Réponses: 9
    Dernier message: 22/08/2004, 15h11
  5. Warnings intempestifs (tout de suite des grands mots)
    Par Walm dans le forum C++Builder
    Réponses: 4
    Dernier message: 30/04/2004, 20h37

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