PDA

Просмотр полной версии : Эм... вопрос для математиков...


rcc0023
17.03.2009, 15:51
АТВ шкала.

а[17.8] - б[14] - в[10] - г[10] - д[10] - е[9.5] - ж[8.5] - з[8.5]

В скобках инициатива вывода букв. Буквы выводятся по кругу исходя из инициативы и очередности.

Пример начального вывода:
1. а
2. б
3. в
4. г
5. д
6. е
7. а
8. ж
9. з
10. б

А как прочитать остальную последовательность вывода??

Pashkela
17.03.2009, 16:12
вот мегарешение, именно по твоему вопросу:

http://s52.radikal.ru/i137/0903/d4/7def01f4e241.jpg

Gifts
18.03.2009, 00:51
rcc0023 Недостаточно данных. Что значит выводятся исходя из инициативы? Какая именно зависимость? Или продолжите ряд хотя бы до 20 позиции

scrat
18.03.2009, 00:53
я нихуя не понял. Ты неточно описал задачу.

-Hormold-
18.03.2009, 01:06
<?
$str="а[17.8] - б[14] - г[10] - д[10] - ж[8.5] - з[8.5] - в[10] - е[9.5]";
$ex=explode(" - ",$str);
for($i=0;$i<count($ex);$i++){
list($symb,$proc)=explode("[",$ex[$i]);
$proc=str_replace("]","",$proc);
$o[$proc]=$symb;
}
asort($o);
print_r($o);
?>

Попробуй...

imajo.ati
18.03.2009, 01:23
я так понял буква а заменила букву ё пропущенную в последовательности. значит дальше пойдёт так:
1. а
2. б
3. в
4. г
5. д
6. е
7. а
8. ж
9. з
10. б
11. в
12. г
13. д
14. е
15. б
16. ж
17. з
18. в
19. г
20. д
21. е
22. в
23. ж
24. з
25. г
26. д
27. е
28. г
29. ж
30. з
31. д
32. е
33. д
34. ж
35. з
36. е
37. е
38. ж
39. з
40. а
41. б
42. в
43. г
44. д
45. е
46. ж
47. ж
48. з
49. б

но дальше идёт не сначала а со смещением на 1 букву

Gifts
18.03.2009, 01:57
Скрипт получается такой, в переменной C - количество кругов, $arr - массив инициатив, равные инициативы - объединяем в один ключ<pre><?
$c=5;
$arr=array('a' => 17.8, 'b' => 14, 'c,d,e' => 10, 'f' => 9.5, 'g,h' => 8.5);
foreach ($arr as $i=>$val)
{
$arr[$i]=1000000000/$val;
for ($j=1;$j<$c;$j++)
{
$tmp=$arr[$i]*$j;
$outvar[$tmp]=$i;
}
}

ksort($outvar,SORT_NUMERIC);
echo strtr(implode(',',$outvar),'abcdefgh,',"абвгдежз\n");

?>
а,б,в,г,д,е,а,ж,з,б,а,в,г,д,е,б,а ,ж,з,б,в,г,д,е,ж,з,в,г,д,е,ж,з

rcc0023
18.03.2009, 06:18
Pashkela неудачно пошутил =/ Алфавит тут и рядом не лежит...

Gifts, прямо в точку! Правда плюс тебе не ставится... =((

Pashkela
18.03.2009, 06:19
Да я вообще чужой на этом празднике жизни:)

ЗЫЖ Без обид

rcc0023
18.03.2009, 07:34
Gifts, а если взять за основу - ход за определенный промежуток...
То есть так, чтобы можно было вычислить что выводить на 13,14... с использованием динамической инициативы...

В пример:

Шаг - это последовательный вывод букв (1,2,3,4,5....70,71,72...)
Промежуток - самая большая инициатива (17.8)
Ходка - при достижении макс числа - ход

Инициативу каждой буквы (17.8,14,10,10...8.5) делим на промежуток (17.8), полученные число записываем как 'столько раз выведется буква' (назовем ее HODmax) за промежуток 17.8!
Далее вводим такое понятие как ходка, при достижение HODmax происходит ход данного числа. Одно но, нужно найти сколько к данной ходке должно прибавятся за каждый шаг.

rcc0023
18.03.2009, 13:08
Опять не дополнил?(

Gifts
18.03.2009, 21:28
rcc0023 Можно добавить сохранение текущих позиций при желании. Запомнив текущую позицию и прогнав скрипт на несколько итераций - можно получить следующие ходы.

<pre><?
$c=50; // Количество элементов для вывода

function findmin($array) {return array_search(min($array),$array);}

// $weight - Массив инициатив
$weight=array('а' => 17.8, 'б' => 14, 'в' => 10, 'г' => 10, 'д' => 10, 'е' => 9.5, 'ж' => 8.5, 'з' => 8.5);
$max=max($weight);

// $run - массив с тем же количеством ключей что и $weight. Тут можно задать начальные данные
$run = array_map(create_function('$a','return '.$max.'/$a;'),$weight);

print_r($run);

for ($i=0;$i<$c;$i++)
{
$j=findmin($run);
echo $j."\n";
$bonus=0; // Зануляем бонус, на всякий случай
// А тут можно добавить условие по добавке бонусов к инициативе

$run[$j]+=$max/($weight[$j]+$bonus); // Инкремент текущей позиции
}