[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Winston
И так, возьму на себя инициативу и размещу это задание в этой теме для "взрослых" :)

Сначала задание звучало вот так
Цитата
дано! Целые числа от 1 до 1001! В этом списке есть 2 одинаковых числа! Как, с наименьшими усилиями и меньшей ресурсозатратностью их найти?


Потом Кирик предложил усложнить задачу
Цитата
Давай так, чтобы в условии небыло известно общее количество чисел, и повторятся могут несколько


И теперь я немного добавлю геммора в условие задачи :)
Создать массив рандомного размера с рамдомными значениями, значения могут повторятся.
После этого нужно вывести на экран небольшую статистику: какое число и сколько раз оно встречается в массиве. И еще, чтобы немного по-брэйнфакать мозг, то нужно вывести индексы элементов в которых находятся повторяющиеся значения.
Возможно не все поняли задание так, вот покажу на примере:
Свернутый текст
Число: {9} встречается 4 раз
В элементах: $array[0] -- $array[3] -- $array[6] -- $array[7] --

Число: {5} встречается 2 раз
В элементах: $array[4] -- $array[8] --

Число: {6} встречается 2 раз
В элементах: $array[5] -- $array[10] --

Array
(
[0] => 9
[1] => 1
[2] => 3
[3] => 9
[4] => 5
[5] => 6
[6] => 9
[7] => 9
[8] => 5
[9] => 8
[10] => 6
[11] => 4
[12] => 2
[13] => 7
)

Вот еще пример
Свернутый текст
Число: {6} встречается 2 раз
В элементах: $array[0] -- $array[11] --

Число: {9} встречается 4 раз
В элементах: $array[6] -- $array[7] -- $array[8] -- $array[10] --

Array
(
[0] => 6
[1] => 3
[2] => 4
[3] => 1
[4] => 5
[5] => 2
[6] => 9
[7] => 9
[8] => 9
[9] => 7
[10] => 9
[11] => 6
[12] => 10
)

Как видно размер массива каждый раз разный.
Winston
Никому не интересно ?
Ну тогда я выложу свое решение, т.к. сегодня уезжаю...
Свернутый текст
function foo()
{
$rnd = mt_rand(5, 10);
$array = range(1, $rnd);
for($i = 0; $i < $rnd; $i++)
{
$rnd = mt_rand(5, 10);[more]
array_push($array, $rnd);
}
shuffle($array);

$countVal = array_diff(array_count_values($array), array(1));

foreach($countVal AS $k => $v)
$keys[$k] = array_keys($array, $k);

foreach($keys AS $k => $v)
{
echo 'Число: {' . $k . '} встречается ' . $countVal[$k] . ' раз<br/>';
echo 'В элементах: ';
array_map(create_function('$item', 'echo \'$array[\' . $item . \'] -- \';'), $keys[$k]);
echo '<br/><br/>';
}

echo '<pre>';
print_r($array);
echo '</pre>';
}

foo();




Спустя 7 минут, 22 секунды Winston написал(а):
Результат работы
Свернутый текст
Число: {5} встречается 2 раз
В элементах: $array[1] -- $array[10] --

Число: {6} встречается 3 раз
В элементах: $array[2] -- $array[6] -- $array[9] --

Число: {7} встречается 3 раз
В элементах: $array[3] -- $array[11] -- $array[12] --

Array
(
[0] => 9
[1] => 5
[2] => 6
[3] => 7
[4] => 1
[5] => 3
[6] => 6
[7] => 2
[8] => 4
[9] => 6
[10] => 5
[11] => 7
[12] => 7
)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.