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

    $text = 'Divine266';

$colorText = preg_split('//', $text, -1, PREG_SPLIT_NO_EMPTY);

for($i = 0; $i < count($colorText); $i++)
{
if($i == 0)
$style = 'style="color:red;"';
else $style = '';

echo '<span '.$style.' >'.$colorText[$i].'</span>';

}


_____________
Админы и программисты - люди иного мира.
Winston
divine266
Во первых твой код не обработает русские символы в юникоде.
И во вторых, зачем так извращаться ?
$str = 'Cтрока';
echo substr_replace($str, "<span style='color:red'>" . mb_substr($str, 0, 1) . '</span>', 0, 1);
alex12060
Ладно, пока отойдем от штрих-кодов, и разовьем мат.часть и логику.

Задание: Посчитать максимальное кол-во вариантов выпадающих (!не повторяющихся!) символов в определенном алфавите.

Допустим, есть алфавит:


abdefhiknrstyzABDEFGHKNQRSTYZ23456789


И есть кол-во символов, которые мы получаем, допустим, 2.

Получаются варианты (рандомные):


ad
Fq
L2
m_
....


Итак, соль в том, что надо узнать, сколько таких не повторяющихся вариаций может быть.

Предоставить в виде алгоритма для поиска кол-ва вариантов в заданном алфавите 2-х символьного вывода.
Для мощных людей - составить функцию, которая не будет зависить от определенного алфавита и кол-ва выводов символов.

Алфавит - в примере.
Invis1ble
alex12060
1. aa, bb и т.п. комбинации допустимы?
2.
Цитата
m_

что-то я не заметил в твоем "алфавите" символа "_"....

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

neadekvat
alex12060, кхм, ну, наверное, количество символов в квадрате?)
Invis1ble
Версия 0.1a
/**
* Функция вычисляет количество размещений из n по k.
* Для работы требуется библиотека GMP.
*
*
@param string $alphabet n-элементное множество
*
@param int $charsAmount число элементов k
*
@param bool $repetition флаг размещения с повторениями
*
*
@return string Число размещений
*/

function permutationsCount($alphabet, $charsAmount = 2, $repetition = false) {
$count = count(array_unique(preg_split('##', $alphabet, null, PREG_SPLIT_NO_EMPTY)));
return $count >= $charsAmount
? gmp_strval($repetition
? gmp_pow($count, $charsAmount)
:
gmp_div(gmp_fact($count), gmp_fact($count - $charsAmount)))
:
'0';
}


Версия 0.1b
/**
* Факториал числа.
*
*
@param int $n
*
@return int
*/

function fact($n) {
return $n <= 1 ? 1 : $n * fact($n - 1);
}

/**
* Функция вычисляет количество размещений из n по k.
*
*
@param string $alphabet n-элементное множество
*
@param int $charsAmount число элементов k
*
@param bool $repetition флаг размещения с повторениями
*
*
@return int Число размещений
*/

function permutationsCount($alphabet, $charsAmount = 2, $repetition = false) {
$count = count(array_unique(preg_split('##', $alphabet, null, PREG_SPLIT_NO_EMPTY)));
return $count >= $charsAmount
? $repetition
? pow($count, $charsAmount)
:
fact($count) / fact($count - $charsAmount)
:
0;
}


Примеры использования
$string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
echo permutationsCount($string) . '<br />';
echo permutationsCount($string, 2, true);


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

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