Konvertieren Sie Wörter und Phrasen in Anagramme

    Anagramm (aus dem Griechischen. Ανα- - “per” und γράμμα - “letter”) ist ein literarisches Gerät, das aus der Neuanordnung der Buchstaben oder Töne eines bestimmten Wortes (oder Phrasen) besteht, wodurch ein anderes Wort oder eine andere Phrase entsteht
    Anagramme werden verwendet, um die Antwort auf eine Quizfrage (Charade, Kreuzworträtsel usw.) zu verschlüsseln.

    Ich möchte Sie auf zwei Funktionen aufmerksam machen, die den Algorithmus implementieren, um Anagramme aus einzelnen Wörtern und Ausdrücken zu erhalten.

    Job - Funktionen „im Kampf“, wie sie sagen, können Sie Modus siehe hier .

    Um das am meisten „gemischte“ Anagramm auszuwählen, wird die Levenshtein-Funktion verwendet.
    Bei Wörtern mit einer Länge von drei Buchstaben und weniger besteht ein Anagramm nicht - es ist sinnlos.
    Für Zahlen dasselbe.
    Die Kodierung erfolgt in UTF-8.

    Als Wert des einzigen Parameters der GetAnagramm-Funktion übergeben wir ein Wort oder einen Satz, und bei der Ausgabe von GetWordAnagramm erhalten wir ein vorgefertigtes Anagramm, in dem alle Buchstaben in HTML-SPAN-Elementen eingeschlossen sind (um dem Anagramm ein repräsentatives Aussehen zu verleihen).

    //Получение анаграммы слова или словосочетанияfunctionGetAnagramm($anagramm){
        $out_anagramm = "";
        $len_anagramm = mb_strlen($anagramm,'UTF-8');
        $int_anagramm = (int)$anagramm;
        if ($len_anagramm > 3 && $int_anagramm == 0)
        {
            mb_regex_encoding('UTF-8');
            mb_internal_encoding('UTF-8');
            $wordslist = preg_split('[-| ]', $anagramm);
            $out_anagramm = "";
            $len_anagramm = 0;
            $i = 0;
            foreach ( $wordslist as $value)
            {
                $len_anagramm = $len_anagramm + mb_strlen($value,'UTF-8');
                $simbol = mb_substr($anagramm, $len_anagramm+$i, 1, 'UTF-8');
                $span = "";
                if ($simbol <> "") $span = "<span class=\"annagramm\">".$simbol."</span> ";
                if (mb_strlen($value,'UTF-8') == 1)
                {
                    $out_anagramm .= "<span class=\"annagramm\">".$value."</span> ".$span;
                }else{
                    $out_anagramm .= GetWordAnagramm($value).$span;
                }
                $i++;
            }
        }
        return $out_anagramm;
    }
    //Получение аннаграммы отдельного словаfunctionGetWordAnagramm($anagramm){
        $array_an = preg_split('//u',$anagramm,-1,PREG_SPLIT_NO_EMPTY);
        $j = 0;
        $maxLeven = 0;
        while ($j < 10)
        {
            srand((float)microtime() * 1000000);
            shuffle($array_an);
            $an = "";
            $ot = "";
            $i = 0;
            foreach ( $array_an as $value )
            {
                $an .= $value." ";
                $ot .= mb_substr ($anagramm, $i, 1, 'UTF-8')." ";
                $i++;
            }
            $leven = levenshtein ($an,$ot);
            $j++;
            if ($leven > $maxLeven)
            {
                $maxLeven = $leven;
                $best_array_an = $array_an;
            }
        }
        $an_div = "";
        foreach ( $best_array_an as $value )
        {
            $an_div .= "<span class=\"annagramm\">".$value."</span> ";
        }
        return $an_div;
    }
    

    Wenn Sie der Ausgabeseite den CSS-Stil für die annagramm-SPAN-Klasse hinzufügen:

    span.annagramm {
        background-color: #ffffff;
        border-style: outset;
        border-width: 1px;
        border-color: #cccccc;
        -webkit-border-radius: 4px;
        -moz-border-radius:4px;
        border-radius: 4px;
        padding: 4px;
        padding-left: 6px;
        padding-right: 6px;
        margin-left: 1px;
        margin-right: 1px;
        margin-top: 6px;
        margin-bottom: 6px;
        font-weight: bold;
        color: #4f4ba8;
        font-size: 11pt;
        text-transform: uppercase;
        box-shadow: 01px4pxrgba(0, 0, 0, .3), -23px020px -23pxrgba(0, 0, 0, .8), 23px020px -23pxrgba(0, 0, 0, .8), 0040pxrgba(0, 0, 0, .1) inset;
    }
    

    dann bekommen wir diese "Schönheit": Die

    Bild

    richtige Antwort: Agathon Nikitin .

    Jetzt auch beliebt: