Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfunction permutations($letters,$num){ $last = str_repeat($letters{0},$num); $result = array(); while($last != str_repeat(lastchar($letters),$num)){ $result[] = $last; $last = char_add($letters,$last,$num-1); } $result[] = $last; return $result; } function char_add($digits,$string,$char){ if($string{$char} != lastchar($digits)){ $string{$char} = $digits{strpos($digits,$string{$char}) + 1}; return $string; }else{ $string = changeall($string,$digits{0},$char); return char_add($digits,$string,$char-1); } } function lastchar($string){ return $string{strlen($string)-1}; } function changeall($string,$char,$start 0,$end 0){ if($end 0) $end strlen($string)-1; for($i=$start;$i<=$end;$i++){ $string{$i} = $char; } return $string; } $Array=permutations("ABC", 3); //Pour afficher les résultats for($i=0 ; $i < count($Array) ; $i++) { echo "$i. " . $Array[$i] . " "; }
//array = permutations("ABC", 3); private string[] permutations(string letters, int num) { string last null, last2 null; string str_repeat = null; string[] result = new string[1000000]; int i = 0; foreach (char c in letters) { if (i == 0) { str_repeat = c.ToString(); } i++; } i = 0; while (i != num) { last = last + str_repeat; last2 = last2 + lastchar(letters); i++; } i = 0; while (last != last2) { result[i] = last; last = char_add(letters, last, num - 1); i++; } result[i + 1] = last; return result; } private string char_add(string digits, string string2, int char2)// { int i = 0; string lastone = null; foreach (char c in string2) { if (i == char2) { lastone = c.ToString(); } i++; } if (lastone != lastchar(digits)) { string[] letters2 = new string[char2 + 1]; string charofstring null, digitspos null, nstring = null;// int pos = 0; i = 0; foreach (char c in string2) { if (i == char2) { charofstring = c.ToString(); } i++; } i = 0; foreach (char c in digits) { if (c.ToString() == charofstring) { pos = i + 1; } i++; } i = 0; foreach (char c in digits) { if (i == pos) { digitspos = c.ToString(); } i++; } i = 0; foreach (char c in string2) { letters2[i] = c.ToString(); if (i == pos) { letters2[i] = digitspos; } i++; } i = 0; while (letters2.Length != i) { nstring = nstring + letters2[i]; i++; } return nstring; } else { i = 0; string first = null; foreach (char c in digits) { if (i == 0) { first = c.ToString(); } i++; } string2 = changeall(string2, first, char2); return char_add(digits, string2, char2 - 1); } } private string changeall(string string2, string char2, int start 0, int end 0) { if (end == 0) end = string2.Length - 1; int i = start; string[] letters2 = new string[10000000]; foreach (char c in string2) { letters2[i] = c.ToString(); letters2[i] = char2; i++; } string2 = null; i = 0; while (letters2.Length != i) { string2 = string2 + letters2[i]; i++; } return string2; } private string lastchar(string string2) { int i = 0; string lastc = null; foreach (char c in string2) { if (i == string2.Length - 1) { lastc = c.ToString(); } i++; } return lastc; }