Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématiques #11 : Stéganographie, le sujet du défi se trouve caché dans des images

Pour commencer cette nouvelle année, deux challenges en un !

Les règles du challenge de ce mois-ci sont écrites en ASCII de manière dissimulée dans une image par le procédé de "stéganographie". (recherche web...)

Indice : Dans le cas présent, il vous faudra obligatoirement l'image originale afin de comprendre et de les utiliser pour décoder les caractères du texte.

Cela ne devrait pas être long, il n'y a pas de pièges et dans LabVIEW (sans besoin de modules ou toolkits) il y a tous les outils.

Utiliser les fichiers images en pièces jointes (Original, Stéganographié)

Suite à ce décodage, vous pourrez utiliser le VI ci-joint (Quelle_operation_ mon pseudo.vi) qui servira de réponse à m'envoyer à : emmanuel.roset@ni.com avant le 3 février 2014

Aux alentours du 15 janvier je dévoilerai le défi en clair.

Cependant ceux qui pourront l'interpréter avant auront plus de temps pour réfléchir au vrai challenge mathématique.

Ce mois-ci encore, le gagnant pourra passer gratuitement une certification de son choix.

Bonne chance et n'hesitez pas à poster vos réactions et demandes de précisions

Emmanuel

Exemple d'image contenant des informations dissimulées

Stéganographié.bmp

Modifié le 16/01/2014

Il est temps de dévoiler le texte caché dans l'image pour réfléchir au défi intégré.

Méthode : Celle-ci est en BMP donc en RVB. chaque bit de poids faible du RVB a été incrémenté par rapport à l'image d'origine uniquement si l'information à transmettre est un 1, sinon le bit reste inchangé par rapport à l'image d'origine. Ainsi il faut obligatoirement comparer bit à bit ce qui a été modifié en utilisant les 2 images, mettre à la suite les bits, les regrouper en 8 et convertir chaque octet en caractère ASCII. (Donc si vous envoyez une image modifiée avec cette méthode, un intercepteur ne pourra rien comprendre sans l'image originale qui est la clé).

Bravo à ceux qui ont trouvé et qui ont ainsi eu plus de temps pour réfléchir au challenge intégré.

Texte du défi :

Complétez ce programme afin qu'il trouve la valeur résultat N en utilisant chaque nombre de départ.

Il peut y avoir de 2 à 4 nombres pour les valeurs d'entrée, qui ne seront utilisés qu'une seule fois chaque.

Les nombres sont tous de valeur différentes entiers positifs précédés d'un espace suivi d'un point virgule et de la valeur solution.

Les quatre opérations - + * / peuvent être utilisées autant de fois que nécessaire pour arriver au résultat.

Il est possible de placer des parenthèses à différents endroits pour obtenir le bon résultat de calcul.

Attention, les opérations intermédiaires peuvent être des fractions et donc des nombres rationnels.

Les solutions doivent apparaitre comme dans les exemples ci-dessous :  "Nombre de solutions :" suivi de la valeur.

Attention, le nombre de solutions ne doit pas contenir les valeurs redondantes comme ((2+1)+3) = 6 = (2+(1+3)) 

Puis en dessous les différentes opérations vérifiant la solution. Pas forcément dans le même ordre que les exemples.

(Mais une comparaison automatique avec des valeurs tests sera effectuée).

Le gagnant sera celui qui écrit un programme qui effectue les calculs les plus rapidement possible sur des valeurs de tests qui seront choisies au hasard.

Comme celles-ci :

Valeurs de départ

1 2 3 4 ; 17

Nombre de solutions : 2

(((1+4)*3)+2) = 17

(((2+4)*3)-1) = 17

Autre exemple :

Valeurs de départ

1 2 3 ; 4

Nombre de solutions : 6

(3-(1-2)) = 4

((2-1)+3) = 4

(2-(1-3)) = 4

((3-1)+2) = 4

((3-1)*2) = 4

((2+3)-1) = 4

Autre exemple :

Valeurs de départ

52 12 28 56 ; 100

Nombre de solutions : 1 

(((56-52)*28)-12) = 100

Mise à jour du 28/02/2014 : Résultats du challenge

Bon, nous voilà le dernier jour du mois et il est temps de publier les résultats des codes réalisés et le vainqueur.

Pour ce challenge, j’ai reçu les codes de Nico_EMC et de Cisco qui ont relevé le défi en postant deux solutions qui fonctionnent.

Le but du défi était de trouver le plus rapidement toutes les solutions qui remplissent une égalité avec des valeurs de départ.

Le plus simple est d’effectuer par exemple tous les cas possible par la force brute et de ne mettre de coté que les résultats qui valident l’égalité.

Ainsi, si tous les cas sont testés, il doit y en avoir un maximum de solutions. Cependant, il était demandé de filtrer les résultats pour éviter d’avoir des réponses en doublons particulièrement sur les multiplications et additions.

Pour les résultats j’ai donc lancé simplement différentes valeurs de tests au hasard pour vérifier les solutions avant de passer au test de vitesse. par exemple 2 6 11 14 ; 12

L’algorithme proposé par Nico fournit 13 solutions. J’ai cependant détecté un doublon entre ligne 9 et ligne 3. Celui de Cisco pour les mêmes valeurs de test fournit 5 solutions, mais il manque pas mal de valeurs possibles.

Cette opération a été renouvelée et c’est vérifiée pour différentes valeurs de test comme par exemple 4 8 9 13 ; 2

En mettant de coté les doublons, je déclare donc vainqueur Nico_EMC pour sa solution qui est la plus juste par rapport au défi !

Bravo NICO et merci pour les précieux commentaires dans le code.

Merci à Cisco pour sa fidélité aussi 🙂

2 6 11 14 ; 12  (Nico_EMC)

Nombre de solutions : 13

((2-6)*(11-14)) = 12

((6-2)*(14-11)) = 12

((14/2)-(6-11)) = 12

((11-6)+(14/2)) = 12

((11-14)*(2-6)) = 12

((14-11)*(6-2)) = 12

(6-(2*(11-14))) = 12

(6+(2*(14-11))) = 12

((14/2)-(6-11)) = 12 redondant ligne 3

((14/2)+(11-6)) = 12

((11+(14/2))-6) = 12

(11-(6-(14/2))) = 12

(11+((14/2)-6)) = 12

(Cisco)

Valeurs de départ

2 6 11 14 ; 12

Nombre de solutions : 5

(((14/2)-6)+11) = 12

(11-(6-(14/2))) = 12

(((14/2)+11)-6) = 12

(6-((11-14)*2)) = 12

(((14-11)*2)+6) = 12

Bon challenge.

Comments
Cisco
Active Participant
Active Participant
on

Salut à tous! c'est parti, j'ai décodé l'image...

Francis M
Jules1403
Member
Member
on

Image décodée !!!!

Cisco
Active Participant
Active Participant
on

Code envoyé

Francis M
Nico_EMC
Member
Member
on

Code envoyé aussi

emmanuel-fr
Member
Member
on

Bravo à vous pour avoir décodé l'image. Et merci d'avoir déjà envoyé vos codes qui sont en cours d'analyse...

xavhendrix
Member
Member
on

Maintenant que le challenge est dévolé, je peux enfin poser ma question. Est-ce qu'on peut considérer que l'exemple avec 6 solutions comporte des doublons?

((2-1)+3) = 4 et ((3-1)+2) = 4

Cisco
Active Participant
Active Participant
on

On pourrait même dire que ds cette solution on a 5 fois 4=3-1+2 car c'est à chaque fois le même calcul, fait ds un ordre différent...

Francis M
emmanuel-fr
Member
Member
on

Bonjour a tous. Bon alors, ce mois ci c'est un peu chargé pour cause de préparation de NIDays à Paris. Aussi j'ai pas eu le temps de répondre à vos questions et je crois que cela va être dur jusqu'au 12 février. Aussi on va repousser les réflexions jusqu'à fin février. D'ici là biensur, je me pencherai sur les questions.

(Je crois que pour tout le monde d'ailleur c'est pareil en janvier)

Pour les doublons. Dans l'exemple qur vous citez, les opérations de permutation de nombre est autorisé car en intermédiaire (2-1) = 1 et (3-1) = 2 donc donne des solutions différentes. En fait il y a permutation des positions des nombres et cela est valable. Alors qu'avec des nombres dans le même ordre et juste les positions de parenthèses différentes, là c'est un peu inutile donc à éliminer. Cela vous parait pertinent ?

Juste une remarque aussi, il serait bien de pour certains de pouvoir mettre les parenthèses sur toutes les opérations, comme dans les exemples, car comme c'est un défi basé sur les temps d'exécutions, cela met tout le monde au même niveau et plus facile à comparer.

emmanuel-fr
Member
Member
on

Résultats du défi #11 sur la stéganographie et la recherche de solutions à une égalité :

Le gagnant est Nico_EMC !

Merci de votre participation et votre fidélité.

Voir les détails des tests ajoutés au début

Emmanuel

PS: perso j'ai bien aimé préparer la stéganographie intermédiaire

Contributors