PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [HILFE] Möglichkeitsberechnung


JoeJoe
18.11.2002, 16:07:46
Halo Leute!
Ich habe ein Problem, und zwar will ich dass aus dem Wort "Papparazza" alle Buchstaben gemischt werden! D.h. ich möchte (ob Sinn oder nicht, ist egal!) alle Möglichkeiten der Buchtabenanordnung von dem Wort in einer Datei ausgeben...

Ich probiere jetzt seit über 2 Stunden rum, aber mir fällt nichts ein! Könnt ihr mir helfen?


thx @ all!
cu

Joejoe

Gweilo
18.11.2002, 16:14:27
mach doch ein array draus.

$p = {"p","a","p","p","a","r","a","z","z","a"};

Dann kannst du 10 for schleifen ineinander setzen. und gibst am schluss (bzw in der mitte des ganzen) folgendes aus (bzw speicherst es in eine datei). Dies mit den laufvariablen $a-$g

echo "$p[$a]$p[$b]...$p[$g]n";

Gweilo
18.11.2002, 16:16:40
hoppla. ich merkte gerade, dass so manche buchstaben doppelt geschrieben werden und andere gar nicht...

hmpf. naja. du könntest
if ($a!=$b && $b!=$c etc)

davorsetzen.. aber das ist performancetechnisch sehr schlecht..

MiH
18.11.2002, 20:36:59
machs doch so:

<?php
$wort = "papparazzi";
$numbers = range (1,strlen($wort));
srand ((float)microtime()*1000000);
shuffle($numbers);
while(list(,$v) = each($numbers)){
echo $wort[$v];
}
?>

JoeJoe
18.11.2002, 21:21:32
Hallo MiH!

Dein Code funktioniert, aber es wird immer nur ein Wort ausgegeben...

Falls du dachtest ich wolle das so, kam das falsch rüber, aber ich würde gerne alle verfügbaren Möglichkeiten sehen können... ;)

Kannst du mir schreiben, wie ich das mache?

thx
cu
Joejoe

JoeJoe
18.11.2002, 21:43:09
@ Gweio:
Hab gerade das von MiH probiert, udn festgestellt, das bei dem Zufall die Genauigkeit leidet!

Kannst du mir schreiben (Gweilo), die du das machen würdest (also den Source) ... Ich bin ein Noob... *snief*

Wär sehr nett!
thx
Joejoe

MiH
18.11.2002, 22:45:22
mal so am rand woher soll ein script wissen welches wort einen sinn ergibt und welches nicht?

durch zufälliges mixen der buchstaben, bekommst man auch zufällige kombinationen der buchstaben. logisch oder?
für deine sache brauchst du im background einen duden, wo du jedes wort nach schauen kannst ob es einen sinn macht oder eine wahllos kombinierte sache ist.

also zufall und dann noch einen sinn aus einem wort wird wohl schwer werden :)

JoeJoe
18.11.2002, 22:47:54
... ne, ich mein das so:

Wenn in deinem Script ist kein "System" ... d.h. ich kann nicht sagen jetzt mach ich von 1 bis 10 000 und denn nochmal von 10 000 bis 20 000 usw. und sie überlappen sich nicht... ;)
Aber ich gelaube ich nehme doch deines, MiH, könntest du mir noch schreiben, wie ich ganz viele Wörter anzeigen kann?

thx
cu
Joejoe

Gweilo
19.11.2002, 14:28:34
ne. mein code funktionniert zwar.. aber ca 10^8 mal langsamer als eigentlich möglich.. ich müsste mir ein algorythmuss ausdenken, der so etwa hochzählt:

0123456789
0123456798
0123456879
...
etc.
...
9876543201
9876543210

wenn ich mal zeit habe schau ich mir das mal an.

Gweilo
20.11.2002, 20:57:28
so. habs nun rasch programmiert.
Aber aufgepasst. es dauert ein bisschen, bis alle werte durchlaufen sind... denn es sind 10! (fakultät) werte (3'628'800).


<?PHP
$p = array("P","a","p","p","a","r","a","z","z","a");
$count=0;
for ($a=0;$a<=9;$a++)
{
for ($b=0;$b<=9;$b++)
{
if ($b!=$a)
for ($c=0;$c<=9;$c++)
{
if ($c!=$a && $c!=$b)
for ($d=0;$d<=9;$d++)
{
if ($d!=$a && $d!=$b && $c!=$d)
for ($e=0;$e<=9;$e++)
{
if ($e!=$a && $e!=$b && $c!=$e && $e!=$d)
for ($f=0;$f<=9;$f++)
{
if ($f!=$a && $f!=$b && $c!=$f && $f!=$d && $e!=$f)
for ($g=0;$g<=9;$g++)
{
if ($g!=$a && $c!=$g && $g!=$d && $e!=$g && $g!=$f && $f!=$g)
for ($h=0;$h<=9;$h++)
{
if ($h!=$a && $h!=$b && $c!=$h && $h!=$d && $e!=$h && $f!=$h && $g!=$h)
for ($i=0;$i<=9;$i++)
{
if ($i!=$a && $i!=$b && $c!=$i && $i!=$d && $e!=$i && $f!=$i && $g!=$i && $h!=$i)
for ($j=0;$j<=9;$j++)
{
if ($j!=$a && $j!=$b && $c!=$j && $j!=$d && $e!=$j && $f!=$j && $g!=$j && $h!=$j && $i!=$j)
{
$count++;
echo "$a$b$c$d$e$f$g$h$i$j : ";
echo "$p[$a]$p[$b]$p[$c]$p[$e]$p[$f]$p[$g]$p[$h]$p[$i]$p[$j]<br>";
}
}}}}}}}}}}
echo $count;
?>

JoeJoe
20.11.2002, 23:09:23
Dank dir schön!
... :)

Hat funktioniert!