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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    736
    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 : 736
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    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"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations professionnelles :
    Activité : Urbaniste

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

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    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 766
    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 chevronné
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

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

  7. #7
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 627
    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 627
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/10/2007, 15h54
  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, 18h10
  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, 15h31
  4. Réponses: 9
    Dernier message: 19/10/2006, 17h02
  5. Réponses: 4
    Dernier message: 07/09/2006, 15h41

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