22.07.2011, 02:14
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2011, 03:20 von Stefan Pochmann.)
Hat allerdings immer das Leerzeichen hinter dem Algo mitgenommen, das war unschoen. Ich hab's fuer's erste aufgegeben, den Ausdruck fuer einen Zug nicht zu wiederholen. Hier meine jetzige Loesung samt Tester mit Testfaellen:
In den Testfaellen ist die Loesung markiert (mit geschweiften Klammern). Die Markierung wird erstmal entfernt, das ist dann die Testeingabe. Dann wird versucht, die Loesung wieder zu finden, und das Ergebnis wird mit dem Ziel verglichen.
Ausgabe:
Also die Zeilen
sind die eigentliche Loesung, es wird nach einem Zug gesucht, der von mindestens zwei weiteren Zuegen gefolgt wird (immer mit einem Leerzeichen Abstand, das koennte man aber auch noch quantifizieren). Kannst es auch ohne die $move-Variable machen, aber das find ich unuebersichtlicher:
Mit so einem Prograemmchen bekommt man viel besser Hilfe, siehe auch:
The SSCCE - Short, Self Contained, Correct (Compilable), Example
Kannst es ja mal so im PHP-Forum zeigen und sie fragen, ob sie da noch bessere Ideen haben. Damit verstehen sie besser, um was es geht, und koennen eigene Ideen auch gleich ganz einfach testen.
PHP-Code:
<?php
test( "foo {R U' R' U' R U R D R' U' R D' R' U2 R' U'} bar" );
test( "foo {R U R' U} Und das U vom Und nicht mitnehmen" );
test( "foo {R U R' U}\nNeue Zeile..." );
test( "foo {R U R' U}" );
function test ( $goal ) { # remove solution markers and try to recreate them
$in = preg_replace( '/[{}]/', '', $goal );
$move = "\b[UDFBLR]('|2|\b)";
$out = preg_replace( "#($move( $move){2,})#", '{$1}', $in );
printf( "%-7s %s\n", $out==$goal?"ok:":"falsch:", $out );
}
Ausgabe:
Code:
ok: foo {R U' R' U' R U R D R' U' R D' R' U2 R' U'} bar
ok: foo {R U R' U} Und das U vom Und nicht mitnehmen
ok: foo {R U R' U}
Neue Zeile...
ok: foo {R U R' U}
Also die Zeilen
PHP-Code:
$move = "\b[UDFBLR]('|2|\b)";
$out = preg_replace( "#($move( $move){2,})#", '{$1}', $in );
PHP-Code:
$out = preg_replace( "#(\b[UDFBLR]('|2|\b)( \b[UDFBLR]('|2|\b)){2,})#", '{$1}', $in );
Mit so einem Prograemmchen bekommt man viel besser Hilfe, siehe auch:
The SSCCE - Short, Self Contained, Correct (Compilable), Example
Kannst es ja mal so im PHP-Forum zeigen und sie fragen, ob sie da noch bessere Ideen haben. Damit verstehen sie besser, um was es geht, und koennen eigene Ideen auch gleich ganz einfach testen.