CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Codage javascript niveau L1

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
1
Page suivantePage suivante
U03B5 U03B5
MP
Niveau 5
26 novembre 2014 à 21:03:40

Bonjour !

On travaille en ce moment sur des projets à la fac. Je travaille sur un codage de vigenère :
https://www.noelshack.com/2014-48-1417021795-ihiuyvygu.png

C'est cool pour l'instant mais on me demande de coder un algorithme en javascript qui puisse, à l'aide d'un test de Friedman, dire si le message codé entré est un vrai message ou non ET la longueur présentie de la clé utilisée pour codée le message.

Sauf que c'est chaud :hap: J'ai compris le test en lui-même, enfin la formule mais je vois déjà pas comment le répéter en preantn chaque fois un intervalle de lettres du message codé plus grand de 1 (première fois, on réalise le test pour une clé de longueur 1, on prend toute les lettres du message, puis on test une clé de longueur 2, on prend une lettre sur deux et ceci à l'infini, jusqu'à ce que l'algo s'arrête). Je ne sais même pas comment l'arrêter, on doit normalement se rapprocher d'une valeur, mais je suppose qu'il faudrait à chaque fois afficher la valeur du test à l'utilisateur et lui demander s'il veut tester pour une clé de longueur + 1.

Si quelqu'un me comprends, help, aidez-moi s'il-vous-plaît. :hap:

U03B5 U03B5
MP
Niveau 5
26 novembre 2014 à 21:23:26

Je n'ai pas été très clair, je ne demande pas à ce que l'on fasse mon travail mais je cherche des éléments me permettant de construire plus facilement ma réponse :hap:

Eij_iZ_WanteD Eij_iZ_WanteD
MP
Niveau 10
26 novembre 2014 à 21:47:52

Pas compris ton problème, tout est écrit dans ton exercice...

Si tu as une clé de taille 2 alors tu as des groupes de 2 lettres qui vont être décodés de la même manière. Cela ne sert donc à rien de tester toutes les lettres, tester une seule lettre du groupe est suffisant, ce qui revient à une lettre sur 2 dans le cas d'une clé de taille 2.

Tu as juste à faire une boucle sur la taille de ta clé et tu sors de ta boucle quand I > 0.7 et I < 0.8 par exemple.
I varie en fonction de la taille de ta clé.

U03B5 U03B5
MP
Niveau 5
27 novembre 2014 à 10:14:41

Pour l'instant j'ai ça.

var messagecode = Saisie() ;
var I = 0 ; //Indice du Test de Friedman
var a = 0 ; // lettres en minuscule = nombre de fois que la dite lettre apparaît dans le message
var b = 0 ;
var c = 0 ;
var d = 0 ;
var e = 0 ;
var f = 0 ;
var g = 0 ;
var h = 0 ;
var i = 0 ;
var j = 0 ;
var k = 0 ;
var l = 0 ;
var m = 0 ;
var n = 0 ;
var o = 0 ;
var p = 0 ;
var q = 0 ;
var r = 0 ;
var s = 0 ;
var t = 0 ;
var u = 0 ;
var v = 0 ;
var w = 0 ;
var x = 0 ;
var y = 0 ;
var z = 0 ;
for (é=1 ; é <= Longueur(messagecode) ; é++){
for (ù = 0 ; ù <= Longueur(messagecode) ; ù++){

if ((messagecode[ù] == 'A') && ( (ù*é) % é == 0 )){

a = a + 1;
}

if ((messagecode[ù] == 'B') && ( (ù*é) % é == 0 )){

b = b + 1;

}

if ((messagecode[ù] == 'C') && ( (ù*é) % é == 0 )){

c = c + 1;

}

if ((messagecode[ù] == 'D') && ( (ù*é) % é == 0 )){

d = d + 1;

}

if ((messagecode[ù] == 'E') && ( (ù*é) % é == 0 )){

e = e + 1;

}

if ((messagecode[ù] == 'F') && ( (ù*é) % é == 0 )){

f = f + 1;

}

if ((messagecode[ù] == 'G') && ( (ù*é) % é == 0 )){

g = g + 1;

}

if ((messagecode[ù] == 'H') && ( (ù*é) % é == 0 )){
h = h + 1;

}
if ((messagecode[ù] == 'I') && ( (ù*é) % é == 0 )){
i = i + 1;

}

if ((messagecode[ù] == 'J') && ( (ù*é) % é == 0 )){

j = j + 1;

}

if ((messagecode[ù] == 'K') && ( (ù*é) % é == 0 )){

k = k + 1;

}
if ((messagecode[ù] == 'L') && ( (ù*é) % é == 0 )){
l = l + 1;

}

if ((messagecode[ù] == 'M') && ( (ù*é) % é == 0 )){

m = m + 1;

}

if ((messagecode[ù] == 'N') && ( (ù*é) % é == 0 )){

n = n + 1;

}

if ((messagecode[ù] == 'O') && ( (ù*é) % é == 0 )){

o = o + 1;

}

if ((messagecode[ù] == 'P') && ( (ù*é) % é = 0 )){

p = p + 1;

}

if ((messagecode[ù] == 'Q') && ( (ù*é) % é == 0 )){

q = q + 1;

}

if ((messagecode[ù] == 'R') && ( (ù*é) % é == 0 )){

r = r + 1;

}

if ((messagecode[ù] == 'S') && ( (ù*é) % é == 0 )){

s = s + 1;

}

if ((messagecode[ù] == 'T') && ( (ù*é) % é == 0 )){

t = t + 1;

}
if ((messagecode[ù] == 'U') && ( (ù*é) % é == 0 )){

u = u + 1;

}

if ((messagecode[ù] == 'V') && ( (ù*é) % é == 0 )){

v = v + 1;

}

if ((messagecode[ù] == 'W') && ( (ù*é) % é == 0 )){

w = w + 1;

}

if ((messagecode[ù] == 'X') && ( (ù*é) % é == 0 )){

x = x + 1;

}

if ((messagecode[ù] == 'Y') && ( (ù*é) % é == 0 )){

y = y + 1;

}

if ((messagecode[ù] == 'Z') && ( (ù*é) % é == 0 )){

z = z + 1;

}

}
I = ( (a*(a-1)) + (b*(b-1)) + (c*(c-1)) + (d*(d-1)) + (e*(e-1)) + (f*(f-1)) + (g*(g-1)) + (h*(h-1)) + (i*(i-1)) + (j*(j-1)) + (k*(k-1)) + (l*(l-1)) + (m*(m-1)) + (n*(n-1)) + (o*(o-1)) + (p*(p-1)) + (q*(q-1)) + (r*(r-1)) + (s*(s-1)) + (t*(t-1)) + (u*(u-1)) + (v*(v-1)) + (w*(w-1)) + (x*(x-1)) + (y*(y-1)) + (z*(z-1)) )
/ ((Longueur(messagecode))*((Longueur(messagecode))-
1)

Return(I);
}

Mais j'ai des erreurs que je ne vois pas. J'ai voulu travailler avec des tableaux mais je ne les maîtrise pas, je sais que c'est bien dégueulasse comme ça mais c'est ma solution, système D. :hap:

Je veux sortir de la boucle manuellement parce que je doute pouvoir trouver un intervalle intéressant mais je vais y repenser. Le truc c'est que déjà mon code ne tourne même pas j'ai des erreurs "invalid left-hand side in assignement". Et je ne vois pas bien d'où ça vient. C'est le bordel sans tableau :fou:

C12-H22-O11 C12-H22-O11
MP
Niveau 31
27 novembre 2014 à 15:37:16

Toutes ces variables, tout ces "if"... :malade:

le-linuxien le-linuxien
MP
Niveau 3
27 novembre 2014 à 16:12:30

dieu tout puissant :malade:

U03B5 U03B5
MP
Niveau 5
27 novembre 2014 à 20:56:30

Roh ça va, je veux pas me destiner à l'informatique. J'aime les variables :coeur:

Pseudo supprimé
Niveau 10
27 novembre 2014 à 21:03:16

Tu aimes les variables, mais tu n'aimes ni la réflexion, ni l'élégance. Évite les métiers scientifiques ou le management :D

S'il te plait...

U03B5 U03B5
MP
Niveau 5
27 novembre 2014 à 21:25:28

Du calme les geeks élitistes bon sang, j'ai chié mes tableaux, j'essaye de développer autre chose. Il faut combien d'affront à sa propre estime pour essayer de rabaisser celle des autres comme ça ?

Pseudo supprimé
Niveau 10
27 novembre 2014 à 21:47:24

C'est toi-même qui dit que l'informatique est quelque chose que tu fais sous la contrainte... Partant de là, ne t'étonne pas d'avoir des réactions hostiles de personnes exerçant ce métier.

Eij_iZ_WanteD Eij_iZ_WanteD
MP
Niveau 10
27 novembre 2014 à 21:57:14

Euh j'ai mal au crâne alors je ne vais pas essayer de comprendre tout ce que tu as fait. Bon je ne sais pas à quoi tu as le droit ou non mais on va commencer par virer toutes tes variables et tes if d'une manière simple :

- si tu as le droit tu vas utiliser les codes ASCII des caractères ainsi tu n'as pas besoin de récréer un tableau

- sinon tu vas créer un tableau avec ton alphabet :

var alpha = ["a", "b", "c", etc.];

Et à partir de là tu fais tout dans des boucles :

initialiser tableau compteur[]
Pour k allant de 0 jusqu'à longueur du message moins 1 par pas de 3
initialiser j à 0
|tant que la lettre du rang k du message est différente de celle du rang j de ton alphabet
||incrémenter j
|ajouter 1 à la valeur de compteur de rang j

Voilà en gros ce que tu peux faire.

Et tu accèdes à tes caractères grâce à l'index de tableau.

U03B5 U03B5
MP
Niveau 5
27 novembre 2014 à 22:06:05

Raspberry, ouais j'ai dit que je ne voulais pas faire de l'informatique sans jamais porté un jugement quelconque sur l'informatique en soit, quel petit effronté je fais :sarcastic:

Bon, je vais ré-essayer avec des tableaux, merci Eij_iZ, c'est ce que je comptais faire au début mais je ne sais pas comment afficher le contenu d'un tableau, j'ai essayer avec une boucle pour d'afficher les 26 premières cases qui m'intéressent mais je n'y arrivais pas.

Eij_iZ_WanteD Eij_iZ_WanteD
MP
Niveau 10
28 novembre 2014 à 17:48:36

for (i=0; i<Tmessage.length; i++) {
| var Omessage += Tmessage[i];
}

Mais bon tout ça tu peux rapidement trouver sur Internet.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment