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 :

Vérifier si une chaine de caractères est un ambigramme


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2024
    Messages : 28
    Points : 8
    Points
    8
    Par défaut Vérifier si une chaine de caractères est un ambigramme
    Bonjour,

    je voudrai écrire un pgm en C qui permet de vérifier si une chaine de caractères est un ambigramme (Un mot ou une phrase qui peut être lue de la même manière même lorsqu'il elle est tournée ou inversée. Par exemple, le mot « SWIMS » peut être lu de la même manière lorsqu'il est tourné à 180 degrés).

    Par avance merci pour votre aide.

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 718
    Points : 2 380
    Points
    2 380
    Par défaut
    Bonjour, bienvenue sur le forum

    Conformément aux règles de ce forum (section IV-N), on préfèrera t'assister pour faire l'exercice, mais pas te fournir une solution toute faite.

    En l’occurrence, réfléchir avec papier et stylo permet de visualiser la solution, à savoir faire une boucle qui va comparer :
    • le premier et le dernier caractère
    • le deuxième et l'avant dernier caractère
    • le troisième et l'avant-avant dernier
    • etc

    La comparaison se fera avec une fonction particulière (qui dira W=M ou M=W, etc)
    Si toutes les comparaisons sont OK, on retourne true.
    Si une des comparaisons ne va pas, on quitte la fonction en retournant false.

    Je te laisse convertir ça en C, et si tu as des questions n'hésite pas à revenir vers nous

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Bizarre comme algo parce qu'il y a peu de lettres qui matchent. Seules les lettres H, I, N, O, S et Z peuvent se retourner sans changer de sens. Plus M et W qui deviennent l'une l'autre.
    Donc déjà éliminer tout mot qui contient une des 18 lettres restantes. Ensuite un test d'anagramme avec un cas particulier sur "M" et "W"...

  4. #4
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 797
    Points
    797
    Par défaut
    opodo ? en minuscule.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 676
    Points : 10 692
    Points
    10 692
    Par défaut
    L'algo peut être simple

    On prend la moitié du mot et on la parcourt
    1. on arrête et on retourne faux si on a 1 lettre qui ne se retourne pas - A, B, L, … à déterminer
    2. on remplace toutes les lettres qui "ne se retournent pas à l'identique" - M -> W, W -> M, effectivement p -> d, d -> p … à déterminer


    Ensuite il faut faire 1 test anagramme en partant du milieu - ]milieu .. début] == ]milieu .. fin]

    Édit: En regardant la page Wikipédia d'ambigramme cela semble être 1 gros délire symétrie, rotation, horizontale, 180°, 45°, mathématique, …
    Mais cela dépend bien de la police utilisée : donc bonne chance
    ambigramme est 1 ambigramme (rotation en prenant le r comme milieu) en bidouillant le a/g et le deuxième m pour qui ressemble à ib : donc bon, certains sont assez illisibles

    LOUL "Le logo inOui des TGV de la SNCF est un ambigramme pivotant."

  6. #6
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 797
    Points
    797
    Par défaut
    là où ça devient difficile, c'est de le faire avec du chinois / japonais

  7. #7
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 478
    Points : 4 677
    Points
    4 677
    Par défaut
    Bonjour foetus,

    Citation Envoyé par foetus Voir le message
    L'algo peut être simple
    On prend la moitié du mot et on la parcourt
    ...
    Pas exactement la moitié mais (length(str) + 1)/2 - division entière. Ou, en reprenant la proposition de parcours, un indice qui croit du début et un indice qui décroit depuis la fin avec arrêt quand l'indice montant devient supérieur à l'indice qui descend (l'égalité éventuelle doit être conservée même si cela induit un test supplémentaire).

    On retrouve le même problème avec la notion de "milieu".

    Salut

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Pas exactement la moitié mais (length(str) + 1)/2 - division entière.
    En plus de ça, la lettre milieu ne peut pas faire partie des lettre spéciales M/W et p/d car si elle pivote à 180° elle change de signification...

  9. #9
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 478
    Points : 4 677
    Points
    4 677
    Par défaut
    Bonjour Sve,

    Citation Envoyé par Sve@r Voir le message
    En plus de ça, la lettre milieu ne peut pas faire partie des lettre spéciales M/W et p/d car si elle pivote à 180° elle change de signification...
    Oui, c'est pour ça que j'ai conservé le milieu, s'il existe, car C[i] aura du mal à être à la fois 'M' et 'W'

    Je crois que je n'explicite pas assez. Heureusement que certains ne laissent rien passer.

    Salut

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2024
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    MERCI à tous pour vos réponses.

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Sur le site de wikipedia donné par foetus, le "a" est écrit sans sa petite queue en bas à droite, de telle façon qu'il devient un "e" quand on le pivote. De même le "r" est écrit lui avec une petite queue en plus pour qu'il redonne "r" à l'arrivée. Et le "b" et "i" eux il sont carrément accolés/arrangés pour former ensembles un "m".
    Peut-être qu'on peut inclure ces règles dans la fonction (sinon c'est un peu trop facile quoi...)

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 676
    Points : 10 692
    Points
    10 692
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Peut-être qu'on peut inclure ces règles dans la fonction (sinon c'est un peu trop facile quoi...)
    C'est justement pour cela que j'ai regardé la page Wikipédia parce que c'est plus "du dessin" qu'autre chose.

    Et donc, le meilleur algo c'est 1) détection des contours 2) trouver la boite englobante (assez facile, c'est juste 1 rectangle)
    À partir de là je pense que tu peux tout gérer : rotation, symétrie, symétrie centrale, … (avec 1 taux de ressemblance)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/10/2007, 16h54
  2. Vérifier qu'une chaine de caractère est bien présente
    Par kilian67 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/09/2007, 19h10
  3. Verifier si une chaine de caractere est situe dans une chaine de caractere
    Par gregounnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2007, 16h31
  4. Réponses: 9
    Dernier message: 19/10/2006, 18h02
  5. Réponses: 4
    Dernier message: 07/09/2006, 16h41

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