SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > Off Topic Area

Off Topic Area Hierein gehört alles, was nichts mit PHP, MySQL, Apache oder ähnlichem zu tun hat

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.08.2004, 00:20:12
tapferesschneid tapferesschneid ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 194
Wer bekommt diesen Code schneller ausgeführt?

Hallo,

der Fernsehsender »Scheiße hoch 9« (gibt's den eigentlich noch?) hatte immer solche Rätselbilder wie »Wieviele Städtenamen sind in diesem Buchstabensalat versteckt« und so was ...

In einem Bilderrätsel wurde gefragt, wieviele Quadrate in einer bestimmten Figur (s. u.) enthalten sind.

Ich hab' das mal per PHP gelöst, allerdings dauert die Berechnung seine Zeit.

Wer hat eine Idee, wie man das folgende Programm noch optimieren könnte?

PHP-Code:
<?php
/* 
Aufgabe: »Wieviele Quadrate sind in folgender Figur enthalten?«


    + + + + +
    + + + + +
+ + + + + + +
+ + +   + + +
+ + + + + + +
+ + + + +
+ + + + +



*/



$t0 explode(' 'microtime());

// x-y-Koordinaten aller Punkte in obigem 
// Gebilde ermitteln
for ($x 0$x 7$x++)
    {
    for (
$y 0$y 7$y++)
        {
        if  (!
                (
                (
$x == AND $y == 5) OR
                (
$x == AND $y == 6) OR
                (
$x == AND $y == 5) OR
                (
$x == AND $y == 6) OR
                (
$x == AND $y == 0) OR
                (
$x == AND $y == 1) OR
                (
$x == AND $y == 0) OR
                (
$x == AND $y == 1) OR
                (
$x == AND $y == 3)
                )
            )
            
$p[] = array('x' => $x'y' => $y);
        }
    }

// Prüfen, ob jeweils vier Punkte geometrisch ein Quadrat bilden:
$found 0;
foreach (
$p AS $p1 => $v1)
    {
    foreach (
$p AS $p2 => $v2)
        {
        if (
$p2 == $p1
            continue;

        foreach (
$p AS $p3 => $v3)
            {
            if (
$p3 == $p2 OR $p3 == $p1
                continue;
                
            foreach (
$p AS $p4 => $v4)
                {
                if (
$p4 == $p3 OR $p4 == $p2 OR $p4 == $p1
                    continue;

                
$sq_a = ($v2['x']-$v1['x'])*($v2['x']-$v1['x']) + 
                        (
$v2['y']-$v1['y'])*($v2['y']-$v1['y']);

                if (
                    (
$v3['x']-$v2['x'])*($v3['x']-$v2['x']) + 
                    (
$v3['y']-$v2['y'])*($v3['y']-$v2['y']) 
                    != 
$sq_a
                   
)
                    continue;

                if (
                    (
$v4['x']-$v3['x'])*($v4['x']-$v3['x']) + 
                    (
$v4['y']-$v3['y'])*($v4['y']-$v3['y']) 
                    != 
$sq_a
                   
)
                    continue;

                if (
                    (
$v1['x']-$v4['x'])*($v1['x']-$v4['x']) + 
                    (
$v1['y']-$v4['y'])*($v1['y']-$v4['y']) 
                    != 
$sq_a
                   
)
                    continue;

                if (
                    (
$v3['x']-$v1['x'])*($v3['x']-$v1['x']) + 
                    (
$v3['y']-$v1['y'])*($v3['y']-$v1['y']) 
                    != 
$sq_a
                   
)
                    continue;

                    
$found++;
                }
            }
        }
    }

$t explode(' 'microtime());
$z $t[1] - $t0[1] + $t[0] - $t0[0];

echo 
'Gefundene Quadrate: ' $found/8;
echo 
'<br>benötigte Zeit: ' number_format($z2',''.') . ' s';

/*
function sq ($int)
    {
    return $int * $int;
    }

Diese Funktion hatte ich ursprünglich, um z. B. 
    ($v2['x']-$v1['x'])*($v2['x']-$v1['x'])
durch 
    sq(($v2['x']-$v1['x']))
zu verkürzen, was sich aber als langsamer rausstellte.
*/

?>
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:33:04 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.


© 2001-2021 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt