Wort aus einem Buchstabensalat herausfinden

Ich sass mit meinem Schwager vor dem Fernseher, als dieser dann plötzlich wie versteinert auf den Fernseher starrte, wo der Sender 9live das Wort „Ehrensenf“ zu erraten ersuchte.

Da ich nunmal Informatiker bin, dachte ich mir, dass man dieses auch mit Hilfe einer Wortdatenbank sowie eines Algorithmus ermitteln könnte.
So suchte ich im Internet eine Wortdatenbank und bin hier fündig geworden:
https://www.openthesaurus.de
Mit Hilfe dessen hatte ich nun einen Wortbestand aus ca. 140000 richtigen Wörtern.

Nun musste ich nur noch für diese Wörter den gemeinsamen Nenner zum Falschgeschriebenen ermitteln:


function calcunique($word) {
   $prim = array(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,79,83,89,91,101,103);
   $lower = preg_split('//', strtolower($word), -1, PREG_SPLIT_NO_EMPTY);
   $unique = 0;
   do {
      $letter = array_shift($lower);
      $char = ord($letter);
      if ($char >= 97 && $char <= 122) {
         $unique = ($unique === 0) ? $prim[($char - 97)] : bcmul($unique,$prim[($char - 97)]);
      }
   } while(count($lower));

   return $unique;
}

 

Wie man aus der obigen Funktion ersehen kann, nutze ich für die Eindeutigkeit des Wortes 26 Primzahlen. Sofern ich diese dann multipliziere, erhalte ich einen Wert, welcher eindeutig die Buchstaben des Wortes widerspiegeln – jedoch nicht die Position der einzelnen.

Diese Daten zusammen mit den Wörtern in eine Datenbank und Simsalabim konnte ich das Wort „Ehrensenf in „Fernsehen“ oder „Angstbude“ in „Bundestag“ ermitteln.

 

You must be logged in to post a comment.