filtering function

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
alicia88
Forum Newbie
Posts: 1
Joined: Wed Dec 02, 2009 2:22 am

filtering function

Post by alicia88 »

Hi,

I have a script (attached at the bottom of the page) that can display the output I want but now I have a big problem finding a way to filter the output so it will show the results as below.

Code: Select all

 
 
<?php
for($i = 0; $i < 10000; $i++){
$formattedi = str_split(str_pad($i,4,'0',STR_PAD_LEFT));
$count = array_count_values($formattedi);
$min = min($count);
$max = max($count);
if($max == 1) $group = 'all different numbers';
if($max == 2 and $min == 2) $group = 'same numbers in pair';
if ($max == 3) $group = '3 same numbers';
if ($max == 2 and $min ==1) $group = '2 same numbers only';
if($max == 4) $group = '4 same numbers';
$out[$group][] = implode('', $formattedi);
}
echo '<pre>', print_r($out), '</pre>';
?>
 
 

This is the kind of output I tried to filter :

assuming abcd represents 4 different digit and we need the following output from the script we have :
ABCD , AABC , AABB and AAAB ...

We can do the first one ABCD but not the following cases where similar digits are side by side

For instance for
e.g :
AABC (4 digits number with 2 same numbers),
it will show only something like 1123, 3122 and not display output like 2129, 1091. Remove those with 2 counts but not side by side.

e.g :
AAAB (3 digits number)
will show 1112, 2333, 7999 from the script below but not 2322, 1121

e.g :
AABB
will show 1122, 3344 but will not show 2211 (since it is repeating) and will not show 1221 since same digits are not side by side.

Thanks.
Post Reply