Page 1 sur 1
Table ASCII en vrac sans doublon [Résolu]
Publié : mar. 31/juil./2007 13:36
par Kwai chang caine
Bonjour à tous
Je voudrais avoir une table ASCII en vrac.
Mais pour ce faire, je ne voudrais pas de doublon (Evidemment)
Car si y'a doublon, y'a pas bon
Peut on forcer la fonction random à ne pas générer plusieur fois le meme chiffre ?
Code : Tout sélectionner
Dim VracAscii.s(255)
For i = 1 To 255
VracAscii(Random(255)) = Chr(i)
Next
CallDebugger
Merci de votre reponse
Publié : mar. 31/juil./2007 13:44
par Octavius
Tu peux peut-être utiliser une deuxième boucle à l'intérieure de la première qui vérifie que tous les nouveaux caractères que tu rentres n'ont pas déjà été rentrés. Si le caractère n'a pas déjà été utilisé c'est bon et on incrémente i, sinon on recommence et on n'incrémente pas i. Utilise plutôt un Repeat ou un While plutôt qu'un For/Next.
Publié : mar. 31/juil./2007 13:54
par Kwai chang caine
Bonjour OCTAVIUS
Merci pour l'info, c'est un peu ce que j'essayais de faire en attendant de savoir si PURE a prevu ça, ce que je ne pense pas car PURE est moins tordu que moi
Bonne journée à toi
Publié : mar. 31/juil./2007 14:04
par gnozal
Une petite idée (non testé) :
Code : Tout sélectionner
Dim VracAscii.s(255)
Dim DejaUtilise.l(255)
For i = 1 To 255
Repeat
CodeASCII = Random(255)
If DejaUtilise(CodeASCII) = #False ; Vérifier si le code ASCII a déjà été utilisé
VracAscii(i) = Chr(CodeASCII)
DejaUtilise(CodeASCII) = #True
Break
EndIf
ForEver
Next
Publié : mar. 31/juil./2007 14:16
par Kwai chang caine
Encore merci GNOZAL
Décidément aujourd'hui tu es une maman pour moi
J'avais pondu un oeuf du genre de ceux dont on se sépare le matin sans regret en appuyant sur le bouton de la chasse d'eau
Code : Tout sélectionner
Dim VracAscii.s(255)
For i = 32 To 255
TrouveChiffre = #False
ChiffreAleatoire = Random(255)
For a = 1 To 255
If VracAscii(a) = Chr(i)
TrouveChiffre = #True
Break
EndIf
Next
If TrouveChiffre = #False
VracAscii(ChiffreAleatoire) = Chr(i)
EndIf
Next
For i = 1 To 255
Debug VracAscii(i)
Next
CallDebugger
Evidemment 3000 lignes pour dire "bonjour".
C'est dommage que je sois si nul, car à moi tout seul, je recréé la longueur des codes assembleur, mais avec du PURE
Ce qui est bizzare c'est que lorsque l'on regarde dans le visualiseur de variable y'a des barres "|", je suppose que ce sont des caracteres non editable, car cela fait pareil avec ton code ????
Alors j'ai démarré la table a 32 pour commencer à l'espace et c'est pareil

Publié : mar. 31/juil./2007 14:26
par djes
Il y a des fois où l'on se prend la tête pour rien... Parcours simplement ton tableau et échange (swap) des éléments pris au hasard

Et n'oublie pas qu'une table ASCII va de 0 à 255 (256 caractères).
Publié : mar. 31/juil./2007 14:32
par gnozal
Kwai chang caine a écrit :Ce qui est bizzare c'est que lorsque l'on regarde dans le visualiseur de variable y'a des barres "|", je suppose que ce sont des caracteres non editable, car cela fait pareil avec ton code ????
Alors j'ai démarré la table a 32 pour commencer à l'espace et c'est pareil

Je pense que c'est dû à la police de caractères utilisée par le debugger.
Publié : mar. 31/juil./2007 14:41
par Kwai chang caine
@GNOZAL
Bon d'accord, pas d'affolage alors !!!
Au fait j'ai modifié ton code qu'est ce que tu en pense :
http://www.purebasic.fr/french/viewtopi ... 8466#68466
Merci à tous les 3.