Есть массив на PHP вида:
$packages = [
'A' => [
'name' => 'A',
'dependencies' => ['B','C'],
],
'B' => [
'name' => 'B',
'dependencies' => [],
],
'C' => [
'name' => 'C',
'dependencies' => ['B','D'],
],
'D' => [
'name' => 'D',
'dependencies' => [],
]
]
Реализовать на PHP. Ключи А В С D - это названия пакетов. Dependencies - это их зависимости, то есть: Пакет А зависит от В и С, идем в В, там пусто, возвращаемся к А, вторая зависимость это С, идем в С, там зависимости от В и D. Значит, идем в В, там пусто, потом в D, там тоже пусто, значит циклической зависимости нет. А если в пакет D добавить пакет А, то будет циклическая зависимость.
Так же, необходимо реализовать функцию, которая будет выводить зависимости своих зависимостей, а потом свои зависимости для выбранного пакета. Не могу реализовать программно эту задачу, помогите, пожалуйста.
Я затрудняюсь именно в том, что я не могу разработать алгоритм программно, который будет делать то, что нужно. Это не вся задача, там были еще пункты, их я сделал, а эти нет. Если вам так нужно, то вот.
function validatePackageDefinitions(array $packages)
{
$name = "name";
$dependencies = "dependencies";
$keyName = 0;
$keyExist = 0;
$n = 0;
foreach($packages as $key3 => $value3)
{
$arrayOfKeys[$n] = $key3;
$n++;
}
foreach ($packages as $key => $value)
{
$i = 0;
if ($key == $value[$name])
{
$keyName++;
echo "Ключ массива совпадает с его именем ";
}
else
{
echo "Ключ массива не совпадает с его именем ";
}
if(array_key_exists($dependencies, $value))
{
$keyExist++;
echo "Существует элемент с ключом $dependencies ";
}
else
{
echo "Элемент с ключом $dependencies не существует ";
}
if ($value[$dependencies] == NULL)
{
echo "Ключ указывает на пустую ячейку ";
}
else
{
foreach($value[$dependencies] as $key2 => $value2)
{
for ($l = 0; $l <= count($arrayOfKeys); $l++)
{
$newArray[$l] = ['$arrayOfKeys[$l]' => [$value2]];
}
$arrayOfDependencies[$i] = $value2;
echo "$value2 ";
$i++;
}
}
for ($j = 0; $j < $i; $j++)
{
if (in_array($arrayOfDependencies[$j], $arrayOfKeys))
{
echo "exist! ";
}
}
echo '<br>';
}
}
А то что касается именно описанной задачи здесь - ничего. Я придумал алгоритм, что если мы будем ходить по зависимостям и мы пройдем через одну и ту же зависимость больше раз, чем она находится в dependencies, то у нас циклическая зависимость. Но я ну вооооообще не знаю, как это сделать.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Появилась задача скачать XSL шаблоны к себе на серверНо в них много таких строчек: select="document('schema/dict
Задача: Рекурсивно описать функцию Head3(N), которая вычисляет число, получаемое приписыванием слева цифры 3 к десятичной записи целого положительного...
Сильно ли использование srand(time(NULL)) замедляет код, если эта функция выполняется в цикле наряду с остальным кодом? (примерно 10000 итераций в секунду,...