Итак, у меня есть следующие символы (символы alt):
¯ ˜ ” “ ’ ‘ ¨ ´ ¹ ² ³ ` ° ⁿ
То, что я пытаюсь сделать, просто: генерировать все возможные комбинации между ними до длины два. При этом, несколько образцов поколений будут выглядеть так:
¯ ^ ¨
³ ^ “
Также они должны быть разделены, скажем, оператором XOR. Я думал о следующем сценарии:
$array = array('¯', '˜' ,'”', '“', '’', '‘', '¨', '´', '¹', '²', '³', '`', '°', 'ⁿ');
foreach ($array as $element) {
echo $element ' ^ ' //..;
}
Я просто не могу реализовать свою логику. Как я могу сгруппировать их в пары из двух элементов и просмотреть каждую возможную комбинацию между ними без дубликатов?
РЕДАКТИРОВАТЬ:
Хотя мне удалось заставить его работать с обычными буквами, вот так:
<?php
ini_set('max_execution_time', '65');
$values = 'ABCD';
container(strlen($values), 0 );
function container($length, $pos, $out = '' ){
global $values;
for ($i = 0; $i < $length; ++$i){
if ($pos < $length ){
container($length, $pos + 1, $out . $values[$i]);
}
}
if(strlen($out) <= 2){
echo $out . '<br />';
}
}
?>
Я захожу в тупик, когда в качестве значений для итерации используем символы alt.
Используя несколько разных символов:
$chars = array('a','b','c','d','e','f');
for ($i = 0; $i < (count($chars) - 1); $i++) { // count()-1 to prevent f^f
for ($j = $i+1; $j < count($chars); $j++) { // $i+1 to prevent a^a
echo "$chars[$i] ^ $chars[$j]\n";
}
}
Выход:
a ^ b
a ^ c
a ^ d
a ^ e
a ^ f
b ^ c
b ^ d
b ^ e
b ^ f
c ^ d
c ^ e
c ^ f
d ^ e
d ^ f
e ^ f
Это предполагает, что a ^ a
это обманка, и b^a
а также a^b
являются обманщиками друг друга.
Других решений пока нет …