• STATISTIQUES
  • Il y a eu un total de 0 membres et 30692 visiteurs sur le site dans les dernières 24h pour un total de 30 692 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Mini-challenge] Normaliser la sortie d'une comparaison.
27-09-2014, 11h04 (Modification du message : 27-09-2014, 11h04 par b0fh.)
Message : #1
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
[Mini-challenge] Normaliser la sortie d'une comparaison.
Dans la libc, la fonction strcmp(a,b) compare deux strings, et retourne une valeur négative, nulle ou positive suivant que a est plus petit, égal, ou plus grand que b.

Cette convention a été choisie parce qu'elle donne lieu a une implémentation très efficace, qui consiste a retourner la différence entre la première paire de caractères non-égaux:

Code :
int strcmp(char *a, char *b) {
    while(*a && *a == *b) {++a; ++b; }
    return *a - *b;
}

Dans certains cas, il peut être désirable de normaliser la sortie de cette fonction, c'est a dire de transformer toutes les valeurs positives en +1, et toutes les valeurs négatives en -1.

Challenge: réalisez cette transformation sans utiliser de structures de contrôle, ni opérateurs impliquant des sauts (&&, ||, ?: ) ! Le code doit marcher quelle que soit la taille effective du type int.

EDIT: corrigé une typo, c'était *a - *b et pas a - b évidemment, merci Kiwazaru

Résolu par:
(personne pour l'instant)
+1 (0) -1 (0) Répondre
27-09-2014, 14h51
Message : #2
wapiflapi Hors ligne
Newbie
*



Messages : 4
Sujets : 0
Points: 8
Inscription : Nov 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
Code :
(s > 0) - (s < 0)

Exemple de cas ou c'est utile ?
+1 (0) -1 (1) Répondre
27-09-2014, 15h59
Message : #3
Atlas Hors ligne
Membre actif
*



Messages : 69
Sujets : 7
Points: 3
Inscription : Aug 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
ça aurait été mieux que tu réponde la solution par mp , ça nous aurait permis de chercher par nous même .
+1 (0) -1 (0) Répondre
27-09-2014, 17h45
Message : #4
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
En théorie, la solution de wapiflapi ne fonctionne pas dans le cadre autorisé (c-à-d aucun jumps).
En effet, la solution d'obtenir le retour d'une vérité dynamiquement pour obtenir le résulat voulu fait appel a une instruction x86 nommée SET+G (SETG), qui vérifie si c'est supérieur (pour la première vérité dans le cas donné).
Ainsi, avec un peu de recherche on remarque que l'algorithme utilisé pour mener à bien cette instruction est le suivant:
Code :
SI condition ALORS
   DEST ← 1
SINON
   DEST ← 0
FIN SI

Bien sûr, la solution reste très intelligente, mais ne respecte théoriquement pas les demandes. Tu peux donc continuer à chercher une solution, (MacYavel en a une autre), et moi je suis sur une piste. Il n'existe pas qu'une seule solution Smile
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
29-09-2014, 07h30
Message : #5
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
(27-09-2014, 17h45)Kiwazaru a écrit : le résulat voulu fait appel a une instruction x86 nommée SET+G (SETG)

ce serait pas JG (jump if greater) et son pendant JB (jump if below) plutôt ?
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (0) Répondre
29-09-2014, 09h12
Message : #6
wapiflapi Hors ligne
Newbie
*



Messages : 4
Sujets : 0
Points: 8
Inscription : Nov 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
(29-09-2014, 07h30)gruik a écrit :
(27-09-2014, 17h45)Kiwazaru a écrit : le résulat voulu fait appel a une instruction x86 nommée SET+G (SETG)

ce serait pas JG (jump if greater) et son pendant JB (jump if below) plutôt ?

Non ca fait bien appel a setg. Par contre ce n'est pas un branchement, c'est pas parce-que l'explication d'une instruction inclue un if que l'instruction fait un branchement. Sinon n'importe quelle instruction ferais des branchement, eg: XOR 1 si l'un ou l'autre mais pas les deux SINON 0.
+1 (0) -1 (0) Répondre
29-10-2014, 22h53 (Modification du message : 29-10-2014, 22h53 par b0fh.)
Message : #7
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: [Mini-challenge] Normaliser la sortie d'une comparaison.
+1 (1) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  XSS challenge x4 Shirobi 10 597 09-04-2013, 20h25
Dernier message: InstinctHack
  [Challenge] [ +1 Byte[ Shirobi 3 266 15-03-2013, 00h30
Dernier message: Sh4dows
  Aide challenge Shirobi 8 488 28-01-2013, 16h04
Dernier message: Di0Sasm
  liste de site de challenge badTasTe 5 314 25-05-2012, 17h23
Dernier message: Di0Sasm

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut