将单词和短语转换为字谜

字谜(来自希腊语。Ανα-“ pere”和γράμμα-“ letter”)是一种文学作品,包括对某个单词(或短语)的字母或发音进行排列组合,从而产生另一个单词或短语
字谜用于加密测验问题(答案,填字游戏等)的答案。

我提醒您注意两个函数,这些函数实现了从单个单词和短语中获得七字组的算法。

正如他们所说,“在战斗中”功能的工作可以在这里看到。

为了选择最“混合”的七巧板,使用了Levenshtein函数。
对于长度不超过三个字母的单词,不会编译一个字谜-这没有任何意义。
对于数字-相同。
编码-UTF-8。

作为GetAnagramm函数唯一参数的值,我们提供一个单词或短语,并在GetWordAnagramm的输出中获得一个现成的字谜,其中所有字母都包含在HTML SPAN元素中(以便使字谜具有CSS样式的外观)。

//     function GetAnagramm($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; } //    function GetWordAnagramm($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; } 

如果将CSS样式添加到输出页面上的annagramm SPAN类:

 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: 0 1px 4px rgba(0, 0, 0, .3), -23px 0 20px -23px rgba(0, 0, 0, .8), 23px 0 20px -23px rgba(0, 0, 0, .8), 0 0 40px rgba(0, 0, 0, .1) inset; } 

然后我们得到这样的“美丽”:

图片

正确答案: Agafon Nikitin

Source: https://habr.com/ru/post/zh-CN425975/


All Articles