Portál AbcLinuxu, 30. října 2025 22:57
<?
$x = "abc";
$l = strlen($x);
for($i = 0; $i < $l; $i++) {
for($j = 0; $j < $l; $j++) {
for($k = 0; $k < $l; $k++) {
$kombinace = $x[$i] . $x[$j] . $x[$k];
print "$kombinace<br>\n";
}
}
}
?>
PS: pokud to chces na nejaky prolamovani hesel, tak PHP neni nejvhodnejsi jazyk a zkouset vsechny kombinace timhle zpusobem neni nejvhodnejsi zpusob
, ale jestli vy to neumíte, tak to pište v něčem co umíte).
#!/usr/bin/perl
@pole = ('a', 'b', 'c');
while ($y++ < @pole) {
undef @indexy;
while ($x < $y) {
$x = 0;
for ($i=0; $i < $y; $i++) { print $pole[$indexy[$i]] };
while (++$indexy[$x] >= @pole) { $indexy[$x++] = 0 };
print "\n";
}
}
<?
$x = "abcd";
$l = strlen($x);
$max = $l;
for($n = 1; $n <= $l; $n++, $max *= $l) { # 1 - n-clenne kombinace
for($c = 0; $c < $max; $c++) { # $max je pocet kombinaci dany delky
$kombinace = ""; # postupuju jako bych prevadel cislo $max no jiny ciselny soustavy
$d = $c; # s ciframa $x
for($i = 0; $i < $n; $i++) {
$kombinace = $kombinace . $x[$d % $l];
$d /= $l;
}
print "$kombinace<br>";
}
}
?>
Např. Nemůže být CCCC5D44D25085BD (obsahuje 4 x C), ale ani CCCC5D44D2508888 (obsahuje 4 x C a ještě k tomu 4 x 8)
/(.)\1{3}/
Děkuji za odpověd.Myslím si ale,že by to spíš mohla být funkce preg_replace($re,$replacement,$str),podle http://interval.cz/clanky/perl-compatible-regularni-vyrazy-v-php-subvyrazy-a-zpetna-reference/ ,kde pro $replacement bych použil prázdný řetězec,popř. bych jej odstranil úplně.
P.S.Mohl by jste mi prosím napsat jak tu funkci vložím do tohoto scriptu? Nemůžu na to přijít.
$x = "012345"; $l = strlen($x); for($a = 0; $a < $l; $a++) { for($b = 0; $b < $l; $b++) { for($c = 0; $c < $l; $c++) { for($d = 0; $d < $l; $d++) { for($e = 0; $e < $l; $e++) { $kombinace = $x[$a] . $x[$b] . $x[$c] . $x[$d] . $x[$e]; $re="/(.)\1{3,}/"; $replacement=" "; $vysledek=preg_replace($re, $replacment, $kombinace); $soubor = fopen('soubor.txt', 'a'); fwrite($soubor, "$vysledek\n"); fclose($soubor); } } } } } ?>
if (preg_match ('/(.)\1{3}/', $kombinace)) {
print "$kombinace\n";
}
if (! preg...
#!/usr/bin/perl
@pole = ('a', 'b', 'c');
while ($x < @pole) {
$x = 0;
for ($i=0; $i < @pole; $i++) { print $pole[$indexy[$i]]};
while (++$indexy[$x] >= @pole) {$indexy[$x++] = 0};
print "\n";
};
P.S.: Variace s opakováním jsou třeba obyčejná čísla. Počet různých variací je dán vztahem n^k, kde n je "nabídka různých prvků", které můžeme k sobě skládat (např. deset číslic 0123456789) a k je počet prvků, které k sobě skládáme (počet číslic). Třeba trojmístných desítkových čísel je 10^3 = 1000 a čtyřmístných šestnáctkových je 16^4 = 65536.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.