Felder berechnen

Mein Skriptvorschlag ist nur aujf 20 Sektoren ausgelegt, für mehr müsstest du es erweitern.
 
Morgen!

So ich habe nun noch eine Weile dran gearbeitet, bin aber immer noch nicht sehr weiter gekommen... Werde aber noch weiter rumprobieren, denn irgendwo muss ja der Fehler sein!?

Du sagst, du hast es auf 20 begrenzt, aber wie bekomme ich es auf unbegrenzt erweitert? Kannst du mir nen kleinen Tip geben?
 
Also ich habe nun die 2 Funktionen noch einmal etwas übersichtlicher gestaltet, allerdings will es nicht so richtig!?

Hab es auch versucht zu erweitern, nur wird meine Lösung nicht die beste sein oder? Scheint aber soweit zu funktionieren...

Das Problem, dass wenn man z.B. von Sektor 4 in 1 geht und eine neg. Zahl raus kommt besteht jedoch noch immer ...

PHP:
function distance($detail,$city) {
	$rows = "15";
    $cols = "15";
	$detail = explode ( ":", $detail );
    $city = explode ( ":", $city );
    $distance = array ();
    if ($detail [0] == $city [0]) {
        $distance ['fields'] = sectordistance ( $detail, $city );
    } else {
        if (($detail [0] - $city [0]) >= 10) {
            $distance ['sectors'] = floor ( ( $detail [0] - $city [0] ) / 10 ) + substr ( ( $detail [0] - $city [0] ) / 10, -1 );
            $distance ['fields'] += $distance ['sectors'] * 15;
        } else {
            $distance ['sectors'] = $detail [0] - $city [0];
            $distance ['fields'] += $distance ['sectors'] * 15;
        }
        $distance ['fields'] += sectordistance ( $detail, $city );
    }
    return show ( fieldduration ) * $distance ['fields'];
}

function sectordistance($detail,$city) {
    if ($detail [1] == $city [1]) {
        if ($detail [2] == $city [2]) {
            return (int) 0;
        } else {
            return (int) ( $detail [2] - $city [2] );
        }
    } else {
        if ($detail [2] == $city [2]) {
            return (int) ( $detail [1] - $city [1] );
        } else {
            return (int) ( ( $detail [1] - $city [1] ) + ( $detail [2] - $city [2] ) );
        }
    }
}
 
Zuletzt bearbeitet:
Guten Morgen!

Ich bin der Lösung wieder etwas näher gekommen:

Einziges Problem ist noch, wenn man z.B. runterwärts, also von 4:3:1 zu 3:3:15 geht dann kommt da korioserweise 29 Felder raus, obwohl es nur 1 wäre!?

Kann jemand nochmal drüberschauen, an was der Fehler noch liegen kann?
Ich finde den irgendwie nicht!?

PHP:
function distance($detail,$city) {
	$detail = explode ( ":", $detail );
    $city = explode ( ":", $city );
    $distance = array ();
    if ($detail [0] == $city [0]) {
        $distance ['fields'] = sectordistance ( $detail, $city );
    } else {
		$distance ['sectors'] = floor ( ( abs ( $detail [0] - $city [0] ) ) / 10 ) + substr ( ( abs ( $detail [0] - $city [0] ) ) / 10, -1 );
		$distance ['fields'] = ( $distance ['sectors'] * 15 ) + sectordistance ( $detail, $city );
    }
    return show ( fieldduration ) * $distance ['fields'];
}

function sectordistance($detail,$city) {
    if ($detail [1] == $city [1]) {
        if ($detail [2] == $city [2]) {
            return 0;
        } else {
            return abs ( $detail [2] - $city [2] );
        }
    } else {
        if ($detail [2] == $city [2]) {
            return abs ( $detail [1] - $city [1] );
        } else {
            return abs ( $detail [1] - $city [1] ) + abs ( $detail [2] - $city [2] );
        }
    }
}
 
Zuletzt bearbeitet:
Ok, ich gehe mal davon aus dass das nicht machbar ist was ich vorhabe!?

Dann werde ich mal die Diskussion schließen!

Trotzdem Danke für die Mühe, auch wenns nicht zum gewünschten Ergebnis gekommen ist.
 
Daran haperts aber einfach, ich verstehe schon wie das gemeint ist und wie es berechnet wird, aber die Umsatzung funktioniert einfach nicht...

Du sagst, es ist eine kurze aber lustige Formel... Kannst du mir da nicht mal nen Ansatz geben und ein wenig erklären?
 
Zunächst nochmal:
Es gibt ein Feld 10x10 dessen Felder jeweils in weitere Felder aufgeteilt sind (15x15) ?

Dann schreibe erst ein Algo gemäß meiner letzten Erklärung, der nur die Entfernung mit gegebenen vollständigen Koordinaten für die "großen" Felder errechnet.
Ahja, der Ansatz wird ein Struktogram.

Edit: Hat er angehängt? Hat er!
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    16,7 KB · Aufrufe: 12
Zuletzt bearbeitet:
Ich danke dir nochmals für deine Hilfe, aber irgendwie weiss ich nicht wie ich anfangen soll...

Siehe meinem ersten Post, das war das beste was ich zum laufen gebracht hatte...

Hast du nicht einen kleinen Codeschnipsel für mich, damit ich weis wie ich anfangen soll!?
 
Wie bitte?

PHP:
function SektorEntfernung($x, $y)
{
  // Koordinaten aufschlüsseln
  $a = explode(":", $x);
  $b = explode(":", $y);
  // Sektorenentfernung wiedergeben
  return abs($a[0] - $b[0]);
}

$s1 = "44:0:0";
$s2 = "12:0:0";

echo SektorEntfernung($s1, $s2);
Code:
32

Du stimmst dem zu, dass man 3 Felder senkrecht gehen muss und 2 Felder waagerecht um vom einen Punkt zum anderen zu kommen. 3 2. 32 ;)
Sag nicht, das sei nicht klar. ^ ^
Und: Ja, die Felder in den Sektoren kommen auch noch ins Spiel.
 
Zuletzt bearbeitet:
Zurück