Page 1 sur 1
[R] Permutation de lettres
Posté : ven. 26 déc. 2014 14:43
par autocoder
Voila salut. Je suis nouveau et peut êtres que je poste.pas au bon endroit.
Mais je suis a la recherche d'idée de script (une fonction) qui me permettrait de permuter la place des lettres d'un mot au préalable enregistré dans une variable et l'afficher dans un control (label par exemple).
Merci
Re: permutation de lettres
Posté : ven. 26 déc. 2014 17:55
par sozary
Mais, par exemple, tu entre l’ordre de permutation en paramètre de ta fonction? Ou elle change les lettre de place d'un certain rang?
Re: permutation de lettres
Posté : ven. 26 déc. 2014 18:42
par autocoder
Les lettrz s change de place au hasard. Par exemple : banane peut devenir enabna.
Re: permutation de lettres
Posté : ven. 26 déc. 2014 19:01
par sozary
Alors moi j'ai fait comme ça:
► Afficher le texte
Code : Tout sélectionner
#include <array.au3>
$chaine="banane"
MsgBox(64,"",$chaine&" permuté: "&_StringPermute($chaine))
Func _StringPermute($string)
$mot=_StringToArray($string)
$newstring=""
While UBound($mot)>=1; Je génére aléatoirement un nombre entre 0 et la taille du tableau, pour prendre un caractère random a la fois,
; et diminue la longueur du tableau à chaque fois.
Local $rang=Random(0,UBound($mot)-1,1)
$newstring&=$mot[$rang]
_ArrayDelete($mot,$rang)
;_ArrayDisplay($mot)
WEnd
Return $newstring
EndFunc
Func _StringToArray($string); fonction destinée à classer les caractères du mot dans un tableau
Local $Var[StringLen($string)]
For $i=0 To StringLen($string)-1
$Var[$i]=StringTrimLeft(StringTrimRight($chaine,(StringLen($string)-1)-$i),$i); Y a surement BEAUCOUP plus simple!
Next
;_ArrayDisplay($Var)
Return $Var
EndFunc
Je pense néanmoins qu'il y a beaucoup plus simple! Après si tu as compris comment procéder, tu peux faire comme bon te semble!
Re: permutation de lettres
Posté : ven. 26 déc. 2014 19:05
par jguinch
Sujet déplacé dans Aide générale.
@autocoder : merci de modifier le titre du sujet afin qu'il respecte les
règles de présentation d'un message.
Sinon, il existe une fonction qui est
_ArrayShuffle qui permet de mélanger les éléments d'un tableau...
Re: permutation de lettres
Posté : ven. 26 déc. 2014 19:42
par sozary
Ah! Merci, je connaissais pas

!
Re: permutation de lettres
Posté : ven. 26 déc. 2014 20:54
par mikell
Oui mais pas besoin d'array
Code : Tout sélectionner
$mot = "banane"
MsgBox(64,"", $mot & " permuté: " & _StringPermute($mot) )
Func _StringPermute($string)
Local $new = ""
While $string <> ""
$lettre = StringMid($string, Random(0, StringLen($string)-1, 1)+1, 1)
$new &= $lettre
$string = StringReplace($string, $lettre, "", 1)
Wend
Return $new
EndFunc
Re: permutation de lettres
Posté : ven. 26 déc. 2014 21:14
par autocoder
Merci beaucoup vraiment...
Re: permutation de lettres
Posté : ven. 26 déc. 2014 21:29
par jguinch
@Mikell : rââ, j'avais préparé un peu la même chose... Je m'étais dis que je posterais le code si le titre était modifié...
@autocoder, la consigne reste valable : merci de modifier le titre en [..] pour un nouveau sujet et [R] si le sujet est résolu.
► Afficher le texte
Code : Tout sélectionner
ConsoleWrite( _StringShuffle("Salut c'est moi !") )
Func _StringShuffle($sString)
For $i = StringLen($sString) - 1 To 0 Step -1
$sString = StringRegExpReplace($sString, "(?s)(.{" & Random(0, $i, 1) & "})(.)(.*)", "$1$3$2")
Next
Return $sString
EndFunc
Re: permutation de lettres
Posté : ven. 26 déc. 2014 22:44
par sozary
Ah! Bah moi je manipule pas encore assez bien ces fonctions pour les employer

!