Вы не зашли.
#11.
Sep
Off
(0)
Участник
2012.01.13 22:10
Есть число 20, как сделать 5 разных чисел, что бы они в среднем арифметическом давали 20, и по возможности регулировать уровень числа.
Например:
Дано 20
Четвертое число больше всех.
Получаем числа 16, 10, 24, 30, 20.
Как это реализовать? Заранее спасибо
Отредактировано Sep (2012.01.13 22:10)
Код:
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, спасибо большое
#14.
Sep
Off
(0)
Участник
2012.01.15 16:04
Gemorroj, жаль что при увеличении числа $count алгоритм уже не правильно работает. Последнее число становится очень большим, разбежка от средне арифметического должна быть небольшой
Sep, ну тут условия заданы жесткие. Т.е. работоспособность алгоритма зависит от заданных первоначальных условий.
У меня такая проблема. Нужно создать страничку списка сайтов локалхоста. Шаблон я подготовил, но в скрипте не могу разобраться, как вывести субдомены в общем блоке.
Конструкция разметки должна быть примерно следующей:<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 " - <a href=\"http://{$dom}\" target=\"_blank\">{$dom}</a><br />"; }}echo '</ul>';?> |
Было бы вообще здорово, если бы домены и субдомены парсились не из апача, чтоб при запуске на Nginx, список сайтов тоже смог отобразится.
эм.. не совсем понимаю. проблема всего лишь в дивах?
и еще, вероятно, лучше будет использовать не парсер vhosts.conf, а парсить вывод apachectl -S
Да, вопрос косметического характера - вывод субдоменов в каком-либо классе (дивы для примера конструкции, мне нужен <ul>).
И чтоб скрипт мог работать на том же Денвере.
ну так собери сначала все в массив, а потом с массивом делай что хочешь.
Без понятия как это сделать.