Likes Likes:  0
Resultaten 1 tot 15 van de 33
Pagina 1 van de 3 1 2 3 LaatsteLaatste
Geen
  1. #1
    Maarten Wierda
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [PHP] Rangorde bepalen

    Zeer geachte lezers van n.i.w.s-s,

    Ik kamp met een probleempje, en vroeg me af of er lezers van
    deze nieuwsgroep zijn die weten hoe ik dit kan oplossen.

    Van een array wil de rangorde van elk element bepalen. Deze
    array heeft bijv. 5 elementen waarvan de waarden '100%',
    '67%', '67%', '33%' en '33%' zijn (de array is reeds
    gesorteerd). Nu wil deze waarden op het schermen toveren
    maar dan wel met het rangnummer voor de waarde. Bijvoorbeeld:

    1. 100%
    3. 67%
    3. 67%
    5. 33%
    5. 33%

    Door de gelijke stand zijn er dus twee nummers 3 en tevens 2
    nummers 5. Een ordered list (ol) is dus geen optie.

    Heeft iemand een idee hoe ik dit kan aanpakken? Ik denk dat
    ik een variabele $rank moet definieren en binnen de loop
    moet controleren op de volgende waarden (percentages) en
    vervolgens de waarde van $rank moet verhogen. Maar hoe ik
    dit precies moet programmeren, weet ik (nog) niet.

    Alvast bedankt.

    --
    Cheers,
    Maarten Wierda

    "Shit happens. Then you wipe."

  2. #2
    Rene Pijlman
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Maarten Wierda:
    >1. 100%
    >3. 67%
    >3. 67%
    >5. 33%
    >5. 33%


    >Heeft iemand een idee hoe ik dit kan aanpakken? Ik denk dat
    >ik een variabele $rank moet definieren en binnen de loop
    >moet controleren op de volgende waarden (percentages) en
    >vervolgens de waarde van $rank moet verhogen. Maar hoe ik
    >dit precies moet programmeren, weet ik (nog) niet.


    waarden = [100,67,67,33,33]

    volgnummer, aantal, vorigeWaarde = 0, 0, None

    for waarde in waarden:
    if vorigeWaarde is not None and waarde < vorigeWaarde:
    volgnummer += aantal
    for i in range(aantal):
    print volgnummer, vorigeWaarde
    vorigeWaarde = waarde
    aantal = 0
    aantal += 1
    vorigeWaarde = waarde
    if aantal > 0:
    volgnummer += aantal
    for i in range(aantal):
    print volgnummer, vorigeWaarde

    (getest)

    --
    René Pijlman

    Wat wil jij leren? http://www.leren.nl

  3. #3
    Maarten Wierda
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Rene Pijlman wrote:

    [hoe dergelijke rangnummers te bewerkstelligen..]

    >> 1. 100% 3. 67% 3. 67% 5. 33% 5. 33%


    <snip>
    >
    > waarden = [100,67,67,33,33]


    <snip geteste code>

    Dank je wel voor je snelle reactie, René. Het is al laat dus
    ik ga morgen even kijken hoe ik dat kan omtoveren in PHP-code.

    En nog even ter info m.b.t. je ploink-beleid, het kan zijn
    dat ik 's avonds pas weer antwoord


    --
    Cheers,
    Maarten Wierda

    "Shit happens. Then you wipe."

  4. #4
    Rene Pijlman
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Maarten Wierda:
    >Rene Pijlman:
    ><snip geteste code>
    >
    >Dank je wel voor je snelle reactie, René. Het is al laat dus
    >ik ga morgen even kijken hoe ik dat kan omtoveren in PHP-code.


    Ja, ik zag PHP pas in het subject toen ik al bijna klaar was. Maar los
    daarvan, Python leest als pseudocode :-)

    >En nog even ter info m.b.t. je ploink-beleid, het kan zijn
    >dat ik 's avonds pas weer antwoord


    Je hebt al geantwoord! Je hebt zelfs dankjewel gezegd :-) Zie je wel, zo
    doen beleefde mensen dat. Het is hier net als in het echte leven.

    --
    René Pijlman

    Wat wil jij leren? http://www.leren.nl

  5. #5
    Daniel Tryba
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Maarten Wierda <moart3nAT@chellodot.nl> wrote:
    > 1. 100%
    > 3. 67%
    > 3. 67%
    > 5. 33%
    > 5. 33%
    > Heeft iemand een idee hoe ik dit kan aanpakken? Ik denk dat
    > ik een variabele $rank moet definieren en binnen de loop
    > moet controleren op de volgende waarden (percentages) en
    > vervolgens de waarde van $rank moet verhogen. Maar hoe ik
    > dit precies moet programmeren, weet ik (nog) niet.


    Loop: wat is het huidige getal? Is het het zelfde als het vorige dan zelfde
    rang, maar volgende rang is wel +1 extra.

    $inc=1;
    $last=0;
    $rang=0;
    foreach($arr as $value)
    {
    if($value==$last)
    {
    $inc++;
    }
    else
    {
    $rang+=$inc;
    $inc=1;
    }
    echo "$rang. $value\n";
    $last=$value;
    }

    Voorwaarde is wel dat het array gesorteerd is:
    function comparator($a,$b)
    {
    $a=str_pad($a,4,"0",STR_PAD_LEFT);
    $b=str_pad($b,4,"0",STR_PAD_LEFT);

    return -strcmp($a,$b);
    }
    usort($arr,comparator);

    Op random arrays van 0,10:
    1. 10%
    2. 9%
    2. 9%
    2. 9%
    5. 8%
    5. 8%
    7. 7%
    8. 6%
    9. 5%
    10. 3%


  6. #6
    John Bokma
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Maarten Wierda wrote:

    > Zeer geachte lezers van n.i.w.s-s,
    >
    > Ik kamp met een probleempje, en vroeg me af of er lezers van
    > deze nieuwsgroep zijn die weten hoe ik dit kan oplossen.
    >
    > Van een array wil de rangorde van elk element bepalen. Deze
    > array heeft bijv. 5 elementen waarvan de waarden '100%',
    > '67%', '67%', '33%' en '33%' zijn (de array is reeds
    > gesorteerd). Nu wil deze waarden op het schermen toveren
    > maar dan wel met het rangnummer voor de waarde. Bijvoorbeeld:
    >
    > 1. 100%
    > 3. 67%
    > 3. 67%
    > 5. 33%
    > 5. 33%
    >
    > Door de gelijke stand zijn er dus twee nummers 3 en tevens 2
    > nummers 5. Een ordered list (ol) is dus geen optie.


    ff denken, in gedachte start je met 0, en je telt het aantal voorkomens
    van de huidige er bij op? (Of: de laatste positie van het element in de
    rij?)

    use strict;
    use warnings;

    my %count;
    $count{ $_ }++ for qw( 100 67 67 33 33 );

    my $rank;
    for my $number (sort { $b <=> $a } keys %count ) {

    $rank += $count{ $number };
    print "$rank. $number%\n" x $count{ $number };
    }

    Op Daniel's input geeft het:

    1. 10%
    4. 9%
    4. 9%
    4. 9%
    6. 8%
    6. 8%
    7. 7%
    8. 6%
    9. 5%
    10. 3%

    Geen idee of het klopt :-D.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  7. #7
    John Bokma
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Rene Pijlman wrote:

    > waarden = [100,67,67,33,33]
    >
    > volgnummer, aantal, vorigeWaarde = 0, 0, None
    >
    > for waarde in waarden:
    > if vorigeWaarde is not None and waarde < vorigeWaarde:
    > volgnummer += aantal
    > for i in range(aantal):
    > print volgnummer, vorigeWaarde
    > vorigeWaarde = waarde
    > aantal = 0
    > aantal += 1
    > vorigeWaarde = waarde
    > if aantal > 0:
    > volgnummer += aantal
    > for i in range(aantal):
    > print volgnummer, vorigeWaarde


    Hmmm... geeft "dezelfde" uitvoer als mijn pareltje als ik Daniel's input
    er in stopt :-D.

    1 10
    4 9
    4 9
    4 9
    6 8
    6 8
    7 7
    8 6
    9 5
    10 3

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  8. #8
    Daniel Tryba
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    John Bokma <postmaster@castleamber.com> wrote:
    > Op Daniel's input geeft het:
    >
    > 1. 10%
    > 4. 9%
    > 4. 9%
    > 4. 9%
    > 6. 8%


    Crap, ik was helemaal overtuigt van
    1.
    2.
    2.
    2.
    5.

    > Geen idee of het klopt :-D.


    Komt wel overeen met wat OP wil, maar IMHO is mijn output toch
    "normaler". Als er 3 2de plekken zijn zijn die niet opeens 4de, en de
    5de 6de. Ze zijn gewoon 2de en het 5de getal gewoon 5de.

    Ik zou dit natuurlijk kunnen onderbouwen emt sport en EuroVisie
    SongFestival uitslagen


  9. #9
    Daniel Tryba
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Daniel Tryba <spam@tryba.invalid> wrote:
    > Crap, ik was helemaal overtuigt van


    alsnog de patch:

    --- foo.php.orig 2005-03-11 04:19:56.195100003 +0100
    +++ foo.php 2005-03-11 04:34:02.528211275 +0100
    @@ -4,7 +4,7 @@
    $a=str_pad($a,3,"0",STR_PAD_LEFT);
    $b=str_pad($b,3,"0",STR_PAD_LEFT);

    - return -strcmp($a,$b);
    + return strcmp($a,$b);
    }

    $arr=array();
    @@ -18,6 +18,7 @@
    $inc=1;
    $last=0;
    $rank=0;
    +$count=count($arr)+1;

    foreach($arr as $value)
    {
    @@ -31,8 +32,14 @@
    $inc=1;
    }

    - echo "$rank. $value\n";
    -
    + $output[]=str_pad($count-$rank,2," ",STR_PAD_LEFT).". $value\n";
    +
    $last=$value;
    }
    +
    +foreach(array_reverse($output) as $value)
    +{
    + echo $value;
    +}
    +
    ?>

  10. #10
    John Bokma
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Daniel Tryba wrote:

    > John Bokma <postmaster@castleamber.com> wrote:
    >> Op Daniel's input geeft het:
    >>
    >> 1. 10%
    >> 4. 9%
    >> 4. 9%
    >> 4. 9%
    >> 6. 8%

    >
    > Crap, ik was helemaal overtuigt van
    > 1.
    > 2.
    > 2.
    > 2.
    > 5.
    >
    >> Geen idee of het klopt :-D.

    >
    > Komt wel overeen met wat OP wil, maar IMHO is mijn output toch
    > "normaler". Als er 3 2de plekken zijn zijn die niet opeens 4de, en de
    > 5de 6de. Ze zijn gewoon 2de en het 5de getal gewoon 5de.


    Ja, dan zou ik meer iets als:

    1. 100%
    2. 67%
    2. 67%
    3. 33%
    3. 33%

    verwachten, gedeelde 2e plaats, gedeelde 3e plaats.
    Ff snelle gok, als de += $count{ $number } wordt += 1; werkt het
    volgens die manier.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  11. #11
    Warden Dave
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    "Maarten Wierda" <moart3nAT@chelloDOT.nl> wrote:

    > ik ga morgen even kijken hoe ik dat kan omtoveren in PHP-code.


    Om in deze vrolijke nieuwsgroep alvast een meer PHP toegesneden simpel
    voorbeeld te geven, bijv. ('$arr' is je array):

    $i=0;
    foreach (array_count_values($arr) as $v=>$n)
    for ($i+=$n, $r=0; $r<$n; $r++) echo "$i. $v\n";

    Als je i.p.v. '1,3,3,5,5' etc. '1,2,2,4,4' schrijven wilt dan begin je met
    '$i=1' en verhoog je na de for-lus ($i+=$n).

    WD



  12. #12
    John Bokma
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Warden Dave wrote:

    > "Maarten Wierda" <moart3nAT@chelloDOT.nl> wrote:
    >
    >> ik ga morgen even kijken hoe ik dat kan omtoveren in PHP-code.

    >
    > Om in deze vrolijke nieuwsgroep alvast een meer PHP toegesneden simpel
    > voorbeeld te geven, bijv. ('$arr' is je array):
    >
    > $i=0;
    > foreach (array_count_values($arr) as $v=>$n)
    > for ($i+=$n, $r=0; $r<$n; $r++) echo "$i. $v\n";


    Mooi kort, lijkt op een PHP versie van mijn Perl snippet, dus ik gok dat ik
    op de goede weg qua wat de OP wilde (was voor mij niet 100% duidelijk)

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  13. #13
    John Bokma
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    John Bokma wrote:

    > Warden Dave wrote:
    >
    >> "Maarten Wierda" <moart3nAT@chelloDOT.nl> wrote:
    >>
    >>> ik ga morgen even kijken hoe ik dat kan omtoveren in PHP-code.

    >>
    >> Om in deze vrolijke nieuwsgroep alvast een meer PHP toegesneden
    >> simpel voorbeeld te geven, bijv. ('$arr' is je array):
    >>
    >> $i=0;
    >> foreach (array_count_values($arr) as $v=>$n)
    >> for ($i+=$n, $r=0; $r<$n; $r++) echo "$i. $v\n";

    >
    > Mooi kort, lijkt op een PHP versie van mijn Perl snippet, dus ik gok
    > dat ik op de goede weg qua wat de OP wilde (was voor mij niet 100%
    > duidelijk)


    my %cnt;
    print 1 + $cnt{ $nrs[ $_ ] }, ". $nrs[ $_ ]\n"
    for map $cnt{ $nrs[ $_ ] } = $_, 0 .. $#nrs;

    nifty, en we schakelen nu over op Perl golf :-D.

    --
    John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
    Website design: http://johnbokma.com/websitedesign/
    Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
    Tevreden opdrachtgevers: http://castleamber.com/testimonials.html



  14. #14
    Maarten Wierda
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Rene Pijlman wrote:

    >> Dank je wel voor je snelle reactie, René. Het is al
    >> laat dus ik ga morgen even kijken hoe ik dat kan
    >> omtoveren in PHP-code.

    >
    > Ja, ik zag PHP pas in het subject toen ik al bijna klaar
    > was. Maar los daarvan, Python leest als pseudocode :-)


    En inmiddels zijn er al zat andere antwoorden gegeven. Maar
    desondanks ga ik zeker even je code bestuderen straks.

    >> En nog even ter info m.b.t. je ploink-beleid, het kan
    >> zijn dat ik 's avonds pas weer antwoord

    >
    > Je hebt al geantwoord! Je hebt zelfs dankjewel gezegd :-)
    > Zie je wel, zo doen beleefde mensen dat. Het is hier net
    > als in het echte leven.


    Was het maar zo. In het echte leven zou zo'n kill filter
    verdomde handig zijn!


    --
    Cheers,
    Maarten Wierda

    "Shit happens. Then you wipe."

  15. #15
    Maarten Wierda
    [PHP] Rangorde bepalen
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Rangorde bepalen

    Warden Dave wrote:

    >> ik ga morgen even kijken hoe ik dat kan omtoveren in
    >> PHP-code.

    >
    > Om in deze vrolijke nieuwsgroep alvast een meer PHP
    > toegesneden simpel voorbeeld te geven, bijv. ('$arr' is
    > je array):


    Is het hier echt zo vrolijk?

    > $i=0; foreach (array_count_values($arr) as $v=>$n) for
    > ($i+=$n, $r=0; $r<$n; $r++) echo "$i. $v\n";
    >
    > Als je i.p.v. '1,3,3,5,5' etc. '1,2,2,4,4' schrijven wilt
    > dan begin je met '$i=1' en verhoog je na de for-lus
    > ($i+=$n).


    Je hebt inderdaad gelijk dat ik eigenlijk twee nummers 2 heb
    en twee nummers 4. Maar met onderstaande code bereik ik toch
    niet het gewenste resultaat:

    $arr = array("100%", "100%", "80%", "70%", "50%", "50%", "20%");

    $i=0;
    foreach (array_count_values($arr) as $v=>$n) {
    for ($i+=$n, $r=0; $r<$n; $r++) {
    echo "<p>$i. $v\n</p>";
    $i+=$n;
    }
    }

    Heb ik je opmerking verkeerd geinterpreteerd?


    --
    Cheers,
    Maarten Wierda

    "Shit happens. Then you wipe."

Pagina 1 van de 3 1 2 3 LaatsteLaatste

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics