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

Discussion in 'PHP' started by rcc0023, 17 Mar 2009.

  1. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    АТВ шкала.

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

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

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

    А как прочитать остальную последовательность вывода??
     
    1 person likes this.
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    вот мегарешение, именно по твоему вопросу:

    [​IMG]
     
    1 person likes this.
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rcc0023 Недостаточно данных. Что значит выводятся исходя из инициативы? Какая именно зависимость? Или продолжите ряд хотя бы до 20 позиции
     
    _________________________
  4. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    я нихуя не понял. Ты неточно описал задачу.
     
  5. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    PHP:
    <?
    $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);
    ?>
    Попробуй...
     
    1 person likes this.
  6. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    я так понял буква а заменила букву ё пропущенную в последовательности. значит дальше пойдёт так:
    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 букву
     
    #6 imajo.ati, 18 Mar 2009
    Last edited: 18 Mar 2009
    1 person likes this.
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Скрипт получается такой, в переменной C - количество кругов, $arr - массив инициатив, равные инициативы - объединяем в один ключ
    PHP:
    <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");

    ?> 
    Code:
    а,б,в,г,д,е,а,ж,з,б,а,в,г,д,е,б,а,ж,з,б,в,г,д,е,ж,з,в,г,д,е,ж,з 
     
    _________________________
    1 person likes this.
  8. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    Pashkela неудачно пошутил =/ Алфавит тут и рядом не лежит...

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

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Да я вообще чужой на этом празднике жизни:)

    ЗЫЖ Без обид
     
    1 person likes this.
  10. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    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 происходит ход данного числа. Одно но, нужно найти сколько к данной ходке должно прибавятся за каждый шаг.
     
  11. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    Опять не дополнил?(
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rcc0023 Можно добавить сохранение текущих позиций при желании. Запомнив текущую позицию и прогнав скрипт на несколько итераций - можно получить следующие ходы.

    PHP:
    <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); // Инкремент текущей позиции
    }
     
    _________________________