Вы не зашли.
Главная » 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 (108)
Administrator
2012.01.14 00:12
Код:
<?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 (108)
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>

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

Код:
<?
// 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 (108)
Administrator
2012.04.28 10:10
эм.. не совсем понимаю. проблема всего лишь в дивах?
и еще, вероятно, лучше будет использовать не парсер vhosts.conf, а парсить вывод apachectl -S
#18. LEXIN Off (5)
Участник
2012.04.28 14:02
Да, вопрос косметического характера - вывод субдоменов в каком-либо классе (дивы для примера конструкции, мне нужен <ul>).
И чтоб скрипт мог работать на том же Денвере. smile
#19. Gemorroj Off (108)
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.014 s