<?php
$str = '2*4/1*1/2*3 – 1*2/1*9/2*5 – 1*9/1*3/1*8 – 1*4/1*1 – 2*4/1*1/2*3 – 2*5/1*9/1*3/1*8/3*2.
1*9/1*3/1*8 – „2*3/1*5/1*2/1*5“ – 2*5/1*9/1*3/1*8/3*2 – 1*1/3*3/1*6 – 1*4/1*5/2*4 – 1*2/2*6/1*4/1*5/2*5 – 2*2/2*6/2*4/2*4/1*5 - 2*1/1*5/1*4/2*6/1*3/1*8 – 1*9/2*5 – 1*1/2*5/1*4/1*5/2*9/1*5/2*9 – „1*7/1*5/3*1/3*2/1*1/2*3/2*3/3*2“ – 3*8/3*3 – 1*2/2*6/1*4/1*5/2*5.';
// Regex ist überall x*x
$regex = '/.\*./';
preg_match_all($regex, $str, $matches, PREG_SET_ORDER, 0);
// Test mit einfachem Malrechnen:
// Alphabet Array vorbereiten:
$alphabet = array(
1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e', 6 => 'f', 7 => 'g', 8 => 'h', 9 => 'i',
10 => 'j', 11 => 'k', 12 => 'l', 13 => 'm', 14 => 'n', 15 => 'o', 16 => 'p', 17 => 'q', 18 => 'r', 19 => 's',
20 => 't', 21 => 'u', 22 => 'v', 23 => 'w', 24 => 'x', 25 => 'y', 26 => 'z'
);
arsort($alphabet);
// Zuerst der String aufteilen und dann berechnen lassen:
$str_a = $str;
foreach($matches AS $rechnung){
$p = eval('return '.$rechnung[0].';');
// Ergebnis im String ersetzen
$str_a = str_replace($rechnung[0], $p, $str_a);
}
// Alphabet durchrattern lassen und dann ausgeben
echo strtr($str_a,$alphabet).'<br><br>';
// Ergebnis:
// h/a/f – b/i/j – i/c/h – d/a – h/a/f – j/i/c/h/f. i/c/h – „f/e/b/e“ – j/i/c/h/f – a/i/f – d/e/h – b/l/d/e/j – d/l/h/h/e - b/e/d/l/c/h – i/j – a/j/d/e/r/e/r – „g/e/c/f/a/f/f/f“ – x/i – b/l/d/e/j.
// Irgendwie nicht das, was ich mir erhofft habe.
// Was jedoch, wenn es sich um Hochrechnungen handelt?
// Neuer Anlauf, mit angepasstem Berechnungsparameter:
// Zuerst der String aufteilen und dann berechnen lassen:
$str_b = $str;
foreach($matches AS $rechnung){
$x = explode('*', $rechnung[0]);
$p = pow($x[0], $x[1]);
// Ergebnis im String ersetzen
$str_b = str_replace($rechnung[0], $p, $str_b);
}
// Alphabet durchrattern lassen und dann ausgeben
echo strtr($str_b,$alphabet).'<br><br>';
// Ergebnis:
// p/a/h – a/a/cb – a/a/a – a/a – p/a/h – cb/a/a/a/i. a/a/a – „h/a/a/a“ – cb/a/a/a/i – a/bg/a – a/a/p – a/fd/a/a/cb – d/fd/p/p/a - b/a/a/fd/a/a – a/cb – a/cb/a/a/el/a/el – „a/a/c/i/a/h/h/i“ – fefa/bg – a/fd/a/a/cb.
// Okay, scheint mir auch nicht wirklich Deutsch zu sein. Ausserdem ist diese Möglichkeit ausgeschlossen,
// da unser Alphabet lediglich 26 Buchstaben hat und wir mehrere Ergebnisse > 26 haben - ein Versuch war's jedoch wert :-)
// Was jedoch, wenn es sich hier gar nicht um Mathematik, sondern um einfache "Zahlenverschiebung" handelt?
// Beispiel: 2*4/1*1/2*3
// Man nehme jeweils die erste Zahl und verschiebe dann im Alphabet nach rechts mit der zweiten Zahl.
// 2*4 wäre dann b*4 -> b>c>d>e>f = 2*4 = f
// 1*1 wäre dann a*1 -> a>b = 1*1 = b
// Das wäre aber etwas Sinnlos, da mit dieser Option keine Möglichkeit bestünde, den Buchstaben A zu bekommen.
// Ausser mit dem Verschiebungsfaktur zähle man x+y was soviel bedeutet wie 1*1 = a wobei 1*2 dann b wäre sowie 2*4 = e.
// Versuchen wir es damit!
asort($alphabet);
$str_c = $str;
foreach($matches AS $rechnung){
$p = explode('*', $rechnung[0]);
// Ergebnis im String ersetzen
$str_c = str_replace($rechnung[0], $alphabet[$p[0]+$p[1]-1], $str_c);
}
// Alphabet durchrattern lassen und dann ausgeben
echo strtr($str_c,$alphabet).'<br><br>';
// Ergebnis:
// e/a/d – b/i/f – i/c/h – d/a – e/a/d – f/i/c/h/d. i/c/h – „d/e/b/e“ – f/i/c/h/d – a/e/f – d/e/e – b/g/d/e/f – c/g/e/e/e - b/e/d/g/c/h – i/f – a/f/d/e/j/e/j – „g/e/c/d/a/d/d/d“ – j/e – b/g/d/e/f.
// Definitiv nein. Ich denke wohl zu weit oder zu kompliziert - oder ich bin einfach zu dumm :-D
// Vielleicht mache ich ja morgen mal weiter...
?>