Вы не зашли.
Главная » PHP » Алгоритмы (вопрос/ответ)
#11. Sep Off (0)
Участник
2012.01.13 22:10
Есть число 20, как сделать 5 разных чисел, что бы они в среднем арифметическом давали 20, и по возможности регулировать уровень числа.
Например:
Дано 20
Четвертое число больше всех.
Получаем числа 16, 10, 24, 30, 20.
Как это реализовать? Заранее спасибо
Отредактировано Sep (2012.01.13 22:10)
#12. Gemorroj Off (107)
Administrator
2012.01.14 00:12
Код:
span style="color: #0000BB"><?php$avg = 20; // среднее арифметическое$count = 5; // всего необходимо чисел$max = 30; // максимальное число$maxNumber = 4; // какое число в массиве должно быть максимальным$numbers = array();$sum = $avg * $count;for ($i = 1; $i <= $count; ++$i) { if ($i === $maxNumber) { $numbers[$i] = $max; } else if ($i === $count) { $numbers[$i] = $sum - array_sum($numbers); } else { $numbers[$i] = mt_rand($max / $count + $count, $max - $count); }}print_r($numbers);echo array_sum($numbers) / sizeof($numbers);
спасибо за задачку, мне очень понравилась)
Добавлено спустя    51 секунду:
P.S. не уверен на счет оптимальности кода, но сам алгоритм вроде работает.
#13. Sep Off (0)
Участник
2012.01.14 01:01
Gemorroj, спасибо большое smile
#14. Sep Off (0)
Участник
2012.01.15 16:04
Gemorroj, жаль что при увеличении числа $count алгоритм уже не правильно работает. Последнее число становится очень большим, разбежка от средне арифметического должна быть небольшой
#15. Gemorroj Off (107)
Administrator
2012.01.15 18:06
Sep, ну тут условия заданы жесткие. Т.е. работоспособность алгоритма зависит от заданных первоначальных условий.
#16. LEXIN Off (5)
Участник
2012.04.28 02:02
У меня такая проблема. Нужно создать страничку списка сайтов локалхоста. Шаблон я подготовил, но в скрипте не могу разобраться, как вывести субдомены в общем блоке.
Конструкция разметки должна быть примерно следующей:
<div>
<a>Домен1</a>
<a>Домен2</a>

   <div>
    <a>Субдомен1.Домен2</a>
    <a>Субдомен2.Домен2</a>
   </div>

<a>Домен3</a>
</div>

А на данный момент я могу вывести лишь так:

<div>
<a>Домен1</a>
<a>Домен2</a>

   <div><a>Субдомен1.Домен2</a></div>
   <div><a>Субдомен2.Домен2</a></div>
   
<a>Домен3</a>
</div>

За основу взял этот скрипт:

Код:
lt;?// Original idea by: Dmitry Boykov (http://forum.dklab.ru/users/DmitryBoykov/)$file = file('/usr/local/apache/conf/vhosts.conf');foreach ($file as $line) { if (preg_match('/^[^#]* <VirtualHost \s+ [^:>]+ (?::(\d+))?/six', $line, $p)) { $port = @$p[1]; } if (preg_match('/^[^#]* ServerName \s+ "?([^"]*)"?/six', $line, $p)){ if ($port == 443) continue; $dom = preg_replace('/^www\./si', '', $p[1]); $dom .= $port && $port != 80? ":$port" : ""; $domains[$dom] = join(".", array_reverse(preg_split('/\./', $dom))); }}asort($domains);$prev = false;echo '<ul>';foreach ($domains as $dom=>$parts) { if (!$prev || !preg_match('/'.preg_quote($prev, '/').'$/si', $dom)) { echo "<li><a href=\"http://{$dom}\" target=\"_blank\"><b>{$dom}</b></a></li>"; $prev = $dom; } else { print "&nbsp;&nbsp;-&nbsp;&nbsp;<a href=\"http://{$dom}\" target=\"_blank\">{$dom}</a><br />"; }}echo '</ul>';?>
sad
Было бы вообще здорово, если бы домены и субдомены парсились не из апача, чтоб при запуске на Nginx, список сайтов тоже смог отобразится.
#17. Gemorroj Off (107)
Administrator
2012.04.28 10:10
эм.. не совсем понимаю. проблема всего лишь в дивах?
и еще, вероятно, лучше будет использовать не парсер vhosts.conf, а парсить вывод apachectl -S
#18. LEXIN Off (5)
Участник
2012.04.28 14:02
Да, вопрос косметического характера - вывод субдоменов в каком-либо классе (дивы для примера конструкции, мне нужен <ul>).
И чтоб скрипт мог работать на том же Денвере. smile
#19. Gemorroj Off (107)
Administrator
2012.04.28 15:03
ну так собери сначала все в массив, а потом с массивом делай что хочешь.
#20. LEXIN Off (5)
Участник
2012.04.28 16:04
Без понятия как это сделать.
Страниц: 1 2 3 4 5 Все
Главная
WEB
PunBB Mod v0.6.2
0.017 s