Versio

Lastig probleempje

Overzicht Reageren

Pagina: 1 2 volgende »

Woopie100

Woopie100

27/03/2007 21:27:00
Quote Anchor link
Hallo,

Ik heb een vierkant van 3 bij 3

Ik wil de getallen van 1 t/m 9 er invullen met een script. En dat hij dan alle mogelijke manieren laat zien. (9! manieren)

Hoe moet dat?
 
PHP hulp

PHP hulp

25/05/2012 07:38:31
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Alexander de Jong

Alexander de Jong

27/03/2007 21:44:00
Quote Anchor link
Kan je je vraag even wat duidelijker stelen. Is dat vierkant 3 bij 3 pixels is of hokjes?

En je topic titel is niet erg duidelijk!

Maar als je de hokjes bedoeld, dan kan je beter met divs gaan werken.
 
Nick Mulder

Nick Mulder

27/03/2007 21:45:00
Quote Anchor link
Hij wil dus gewoon de getallen 1-9 in een hokje gooien, net zo lang tot alle weet ik hoeveel mogelijke combi's gemaakt zijn?
 
Woopie100

Woopie100

27/03/2007 21:49:00
Quote Anchor link
Nee
ik wil alle combinaties op het scherm hebben :)
 
Baarr

Baarr

27/03/2007 21:52:00
Quote Anchor link
Weet je wel hoe fokking veel mogelijkheden dat dat zijn ? Tenzij je bedoelt dat de getallen wel in dezelfde volgorde staan maar telkens 1 opgeschoven worden.
 
Woopie100

Woopie100

27/03/2007 21:52:00
Quote Anchor link
Nee ik bedoel dat eerste :)
Maar hoe moet dat?
 
Baarr

Baarr

27/03/2007 21:54:00
Quote Anchor link
Dat zijn miljoene mogelijkheden, dat krijg je toch nooit op je scherm :P
 
Jacco Engel

Jacco Engel

27/03/2007 21:56:00
Quote Anchor link
Waarom zou je in vredesnaam een sudoku solver willen schrijven dan is alle lol er af :P
 
Woopie100

Woopie100

27/03/2007 21:56:00
Quote Anchor link
maakt niet uit :) ik hbe een loopje nodig die ze als het waren kan echo'ne

Daar maak ik dan wat in die dan weer filtert
 
Alexander de Jong

Alexander de Jong

27/03/2007 22:01:00
Quote Anchor link
Wat ik al zij is divs. Of html tabelen, ff een voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<table width="132" border="0" cellpadding="2" cellspacing="2" bgcolor="#CCCCCC" class="text">
  <!--DWLayoutTable-->
  <tr>
    <td width="43" height="45" valign="top"><div align="center">1</div></td>
    <td width="40" valign="top"><div align="center">2</div></td>
    <td width="41" valign="top"><div align="center">3</div></td>
    <td width="1"></td>
  </tr>
  
  
  <tr>
    <td height="45" valign="top"><div align="center">4</div></td>
    <td valign="top"><div align="center">5</div></td>
    <td valign="top"><div align="center">6</div></td>
    <td></td>
  </tr>
  <tr>
    <td height="49" valign="top"><div align="center">7</div></td>
    <td valign="top"><div align="center">8</div></td>
    <td valign="top"><div align="center">9</div></td>
    <td></td>
  </tr>
  <tr>
    <td height="4"></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table>
Gewijzigd op 01/01/1970 01:00:00 door Alexander de Jong
 
Woopie100

Woopie100

27/03/2007 22:05:00
Quote Anchor link
Ja dit

Alleen dan 362880 keer en allemaal verschillende combinaties
 
Baarr

Baarr

27/03/2007 22:07:00
Quote Anchor link
De tabel zal zijn probleem niet zijn, hij wil gewoon weten hoe hij alle verschillende combinaties kan laten zien.

[amateurmode]

(geen 9 , maar ff 3 hokjes, leest wat eenvoudiger)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
for($i = 1; $i < 10; $i++)
{

    for($j = 1; $j < 10; $j++)
    {

        for($k = 1; $k < 10; $k++)
        {

        echo $i . ' - ' . $j  . ' - ' . $k . '<br >';
        }
// mogelijkheden hokje 3

    } // mogelijkheden hokje 2

} // mogelijheden hokje 1
?>
Gewijzigd op 01/01/1970 01:00:00 door Baarr
 
Woopie100

Woopie100

27/03/2007 22:10:00
Quote Anchor link
Bedankt voor je reactie,

Dit klopt alleen helaas niet
Elk getal mag maar 1 keer gebruikt worden
 
Baarr

Baarr

27/03/2007 22:12:00
Quote Anchor link
Euh, tis al laat, maar goed, daar kun je dan nog wel een check voor inbouwen, je kunt het beter anders doen, maar ik kan mijn hoofd er op dit moment niet toe zetten ;-)
 
Bart van der veen

bart van der veen

27/03/2007 22:19:00
Quote Anchor link
134.217.728 combinatie's

stel je begint met 1 dan is het volgende hokje 2 t/m 9 dat zijn acht combinaties. dus het is een macht van 8 en dat voor 9 vakjes is 8^9 en dat is dan ....
 
Woopie100

Woopie100

27/03/2007 22:21:00
Quote Anchor link
het is gewoon 9!

Voor het eerste vakje heb je keuze uit 9 getallen, dan 8 dan 7 dan 6 enzo
 
Joren de Wit
Beheerder

Joren de Wit

27/03/2007 22:25:00
Quote Anchor link
Nee bart, het zijn 9! (negen faculteit) combinaties. Dus in totaal 362.880 combinaties.

Maar goed, leuk probleempje. Dit scriptje hieronder levert je alle resultaten in een array aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// Het creeren van een reeks van $aantal unieke getallen.
function maak($aantal)
{

    $output = '';
    
    for($p = 1; $p <= $aantal; $p++)
    {

        $getal = rand(1,$aantal);
        if(strpos($output, (string) $getal) === false)
        {

            $output .= $getal;
        }

        else
        {
            $p--;
        }
    }

        
    return $output;
}


// Het genereren van alle mogelijke combinaties.
function genereer($aantal)
{

    $resultaat = array();
    
    while(count($resultaat) < faculteit($aantal))
    {

        $waarde = maak($aantal);
        if(!in_array($waarde, $resultaat))
        {

            array_push($resultaat, $waarde);
        }
    }

    
    sort($resultaat);
    return $resultaat;
}


// Een functie voor het berekenen van de faculteit.
function faculteit($getal)
{

    $faculteit = 1;
    for($n = $getal; $n >= 1; $n--)
    {

        $faculteit *= $n;
    }

    return $faculteit;
}



// En nu nog even uitvoeren.
$aantal = 3;
$resultaat = genereer($aantal);

echo '<pre>'.print_r($resultaat , true).'</pre>';
?>


ps. Deze combinaties zijn nu allemaal strings. Deze kun je zelf dus nog opknippen en je 3x3 velden gaan maken.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Jan Koehoorn

Jan Koehoorn

27/03/2007 22:26:00
Quote Anchor link
De formule om alle volgordes van een aantal elementen te berekenen heet faculteit en noteer je inderdaad met een uitroepteken. Stel je wilt alle volgordes van 123, dan heb je zes mogelijkheden want 3! == 6 (1 * 2 * 3)

Ik heb net een scriptje gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $str
= '123456';
    $elems = array ();
    while (count ($elems) < 720) {
        $str = str_shuffle ($str);
        if (!in_array ($str, $elems)) {
            array_push ($elems, $str);
        }
    }

    sort ($elems);
    echo '<pre>';
    print_r ($elems);
    echo '</pre>';
?>

echter, als ik die 789 er nog achter plak, dan krijg je 9! mogelijkheden (dat is inderdaad 362880) en dan redt het script het niet binnen de 30 seconden vrees ik. Er moet dan ook een slimmere manier zijn.
 
Joren de Wit
Beheerder

Joren de Wit

27/03/2007 22:28:00
Quote Anchor link
Kijk de oplossing van Jan is vele malen korter. Netjes!
 
Jan Koehoorn

Jan Koehoorn

27/03/2007 22:30:00
Quote Anchor link
Ja, maar hij is me nog een beetje te brute-force ;-) En hij werkt alleen snel op korte reeksen, tot 6 a 7 getallen.
 
Woopie100

Woopie100

27/03/2007 22:38:00
Quote Anchor link
Bedankt voor jullie nadenken :) Ik ga de scripts nu ff bekijken en snappen :P
 

Pagina: 1 2 volgende »



Overzicht Reageren