Zahlen automatisch vertauschen

mafiamix

Mitglied
Hallo,

ich bin auf der Suche nach einem Code, mit dem ich Zahlen bestimmt austauschen kann.

Hier ein Beispiel:

Z: 152, 46, 162, 66 I: 1 & -9
Z: 152, 226, 162, 246 I: 1 & 9

Nach Z folgen die Zahlen die ausgetauscht werden sollen. Die Zahlen nach dem I sind einmal 1 und -9 und einmal 1 und 9. Diese beiden hinteren Zahlen sollen bzw. könnten wie als Index benutzt werden.
Jetzt sollen alle Zahlen, die nach dem Z und vor dem I stehen von 1 und -9 nach dem Z und vor dem I von 1 und 9 stehen. Das heißt, dass die 4 aufeinander folgenden Zahlen beide ausgetauscht werden sollen.

Das Ergebnis sollte also so aussehen:

Z: 152, 226, 162, 246 I: 1 & -9
Z: 152, 46, 162, 66 I: 1 & 9

Ist das denn überhaupt möglich, weil diese Zahlen nur Beispiele sind und es nicht möglich ist, alles manuell einzugeben, weil diese Zahlen sich ändern können, also variabel sind bzw. es über 300 davon gibt.

Habe es schon mit allen möglichen for Schleifen probiert, aber es hat noch nie funktioniert.


Danke schonmal für eure Hilfe,

DS17
 
PHP:
<?php

$str1 = 'Z: 152, 46, 162, 66 I: 1 & -9';
$str2 = 'Z: 152, 226, 162, 246 I: 1 & 9';

$arr1 = explode(' ', $str1);
$arr2 = explode(' ', $str2);

$count = count($arr1);
for($i = 0; $i < $count; $i++)
{
	if($i > 0 && $i < 5)
	{
		$result[0][$i] = $arr2[$i];
		$result[1][$i] = $arr1[$i];
	} 
	else
	{
		$result[0][$i] = $arr1[$i];
		$result[1][$i] = $arr2[$i];
	}
}
echo 'Vorher:<br/>';
echo 'String 1: '.$str1.'<br/>';
echo 'String 2: '.$str2.'<br/>';
echo 'Nachher<br/>';
echo 'String 1: '.implode(' ', $result[0]).'<br/>';
echo 'String 2: '.implode(' ', $result[1]).'<br/>';

?>

Nicht gerade schön, aber es funktioniert und spontan fällt mir nichts besseres als... ;)
 
Danke schon mal; gibt gleich ne Bewertung dafür.
Vielleicht nicht gerade schön, aber besser als gar nichts. :)
Allerdings hab ich noch eine Frage und zwar ist es möglich, dass man die 2 Zahlen nach dem I ermitteln kann?

Das Zahlenschema läuft nämlich so ab (nur ein Bruchteil davon):

Z: 132, 56, 142, 76 I: -1 & -8
Z: 132, 66, 142, 86 I: -1 & -7
Z: 132, 76, 142, 96 I: -1 & -6
Z: 132, 86, 142, 106 I: -1 & -5
Z: 132, 96, 142, 116 I: -1 & -4
Z: 132, 106, 142, 126 I: -1 & -3
Z: 132, 116, 142, 136 I: -1 & -2
Z: 132, 126, 142, 146 I: -1 & -1
Z: 132, 136, 142, 156 I: -1 & 0
Z: 132, 146, 142, 166 I: -1 & 1
Z: 132, 156, 142, 176 I: -1 & 2
Z: 132, 166, 142, 186 I: -1 & 3
Z: 132, 176, 142, 196 I: -1 & 4
Z: 132, 186, 142, 206 I: -1 & 5
Z: 132, 196, 142, 216 I: -1 & 6
Z: 132, 206, 142, 226 I: -1 & 7
Z: 132, 216, 142, 236 I: -1 & 8
Z: 132, 226, 142, 246 I: -1 & 9
Z: 142, 46, 152, 66 I: 0 & -9
Z: 142, 56, 152, 76 I: 0 & -8
Z: 142, 66, 152, 86 I: 0 & -7
Z: 142, 76, 152, 96 I: 0 & -6
Z: 142, 86, 152, 106 I: 0 & -5
Z: 142, 96, 152, 116 I: 0 & -4
Z: 142, 106, 152, 126 I: 0 & -3
Z: 142, 116, 152, 136 I: 0 & -2
Z: 142, 126, 152, 146 I: 0 & -1
Z: 142, 136, 152, 156 I: 0 & 0
Z: 142, 146, 152, 166 I: 0 & 1
Z: 142, 156, 152, 176 I: 0 & 2
Z: 142, 166, 152, 186 I: 0 & 3
Z: 142, 176, 152, 196 I: 0 & 4
Z: 142, 186, 152, 206 I: 0 & 5
Z: 142, 196, 152, 216 I: 0 & 6
Z: 142, 206, 152, 226 I: 0 & 7
Z: 142, 216, 152, 236 I: 0 & 8
Z: 142, 226, 152, 246 I: 0 & 9
Z: 152, 46, 162, 66 I: 1 & -9
Z: 152, 56, 162, 76 I: 1 & -8
Z: 152, 66, 162, 86 I: 1 & -7
Z: 152, 76, 162, 96 I: 1 & -6
Z: 152, 86, 162, 106 I: 1 & -5
Z: 152, 96, 162, 116 I: 1 & -4
Z: 152, 106, 162, 126 I: 1 & -3
Z: 152, 116, 162, 136 I: 1 & -2
Z: 152, 126, 162, 146 I: 1 & -1
Z: 152, 136, 162, 156 I: 1 & 0
Z: 152, 146, 162, 166 I: 1 & 1
Z: 152, 156, 162, 176 I: 1 & 2

Es gibt also immer Zahl x und Zahl y. Beide wechseln sich ab und sind somit einmal positiv und einmal negativ. Die 4 fett markierten müssen jeweils untereinander ausgetauscht werden. Also die ersten beiden fett markierten und die letzten beiden. Auch hier sollen nur die vorderen Zahlen nach Z und vor I untereinander ausgetauscht werden.
Ist es denn möglich, die zusammen passenden Zahlen zu ermitteln, das heißt, dass ich 1 & -2 habe und 1 & 2 ermitteln kann bzw. die jeweiligen Zahlen davor und diese dann untereinander zu ersetzen?


LG
 
Thema hat sich erledigt. Da das ganze spiegelverkehrt war, habe ich die negativen bzw. positiven Ergebnise mit -1 multipliziert und somit wieder die umgekehrten Werte rausbekommen, die ich gebraucht habe.
Trotzdem danke für deine Hilfe.
 
Zurück