Есть тетраэдр. Одна из сторон тетраэдра вымазана экскрементами. На другой сидит муха.
Найти наибольший путь мухи до фекалий с помощью муравьиного алгоритма
Другие языки программирования и технологии
Как написать алгоритм?
Наибольший, видимо, бесконечен ;)
Владимир Рубашка
Краб, как к этому подступиться? Вроде это не сложная задачка... https://otvet.mail.ru/question/180057422
Развернуть фигуру и посчитать вектор.
Например так:
(как в условии первого комментария K,L,M -длины сторон, a,b,c - координаты анализов, x,y,z - координаты мухи)
определяем грань мухи ->
if (x==0 || x==K) { fly_side = (x==0) ? 1 : 2; x = y; y = z;}
else if (y==0 || y==L) { fly_side = (y==0) ? 4: 5; y = z;}
else if (z==0 || z==M) fly_side = (z==0) ? 7 : 8;
Таким же макаром грань кала (только для abc вместо xyz) shit_side;
if (shit_side == fly_side) расстояние = модуль 2D вектора муха-гвно;
else if (shit_side - fly_side != 1 || fly_side - shit_side !=1) // Смежные грани (не противоположенные стороны)
switch(fly_side)
{
case 1:
case 2: if (shit_side==4 || shit_side==5) расстояние = sqrt((x-(K-a))^2 + (y-(M-b))^2);
else расстояние = sqrt((x-(K-a))^2+(y-(L-b))^2); break;
case 4:
case 5: if (shit_side==1 || shit_side==2) тоже самое c L M или L K
case 7:
case 8: if (shit_side==1 || shit_side==2) тоже самое c M L или M K
}
else
{
switch(fly_side)
1,2 min = (L<=M) ? L : M; расстояние = sqrt((x-(L-a+min))^2 + (y-(M-b+min))^2); break;
4,5 min=K<M; K M
7,8 min=L<K; L K
}
Не проверял, уверен, что где-то напутал с KLM. Но примерно так.
Например так:
(как в условии первого комментария K,L,M -длины сторон, a,b,c - координаты анализов, x,y,z - координаты мухи)
определяем грань мухи ->
if (x==0 || x==K) { fly_side = (x==0) ? 1 : 2; x = y; y = z;}
else if (y==0 || y==L) { fly_side = (y==0) ? 4: 5; y = z;}
else if (z==0 || z==M) fly_side = (z==0) ? 7 : 8;
Таким же макаром грань кала (только для abc вместо xyz) shit_side;
if (shit_side == fly_side) расстояние = модуль 2D вектора муха-гвно;
else if (shit_side - fly_side != 1 || fly_side - shit_side !=1) // Смежные грани (не противоположенные стороны)
switch(fly_side)
{
case 1:
case 2: if (shit_side==4 || shit_side==5) расстояние = sqrt((x-(K-a))^2 + (y-(M-b))^2);
else расстояние = sqrt((x-(K-a))^2+(y-(L-b))^2); break;
case 4:
case 5: if (shit_side==1 || shit_side==2) тоже самое c L M или L K
case 7:
case 8: if (shit_side==1 || shit_side==2) тоже самое c M L или M K
}
else
{
switch(fly_side)
1,2 min = (L<=M) ? L : M; расстояние = sqrt((x-(L-a+min))^2 + (y-(M-b+min))^2); break;
4,5 min=K<M; K M
7,8 min=L<K; L K
}
Не проверял, уверен, что где-то напутал с KLM. Но примерно так.
Владимир Рубашка
Не компилируется!
Юркэ )
вот же вам делать нехуй пздц хД
взять да и разделить
с ув. Шариков
с ув. Шариков
fsb.ru
Похожие вопросы
- Паскаль.напишите алгоритм
- Помогите написать алгоритм и программу на фортране
- В корзине лежит 20 яблок. Напишите алгоритм поиска наибольшего по размеру яблока.
- Помогите написать алгоритм к задаче по информатике
- помогите написать алгоритм в basice
- насколько реально написать алгоритм с помощью которого компьютер сам будет писать законы?
- Алгоритмы в паскале. Народ, напишите плиз алгоритм нахождения НОД и алгоритм выделения цифр числа. Заранее благодарю)
- Нужно написать программу (помогите с алгоритмом) с++
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Почему программирование на первый взгляд такое сложное? Потому что многие не умеют составлять алгоритмы?