| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Nopan heittelyäEnec 24.02.08 21:35 Nopea Perlikäännös nopanheittokoodista ja SVG:llä kaavion piirtämisestä, joka on Javamuodossaan täällä: http://mureakuha.com/koodikirjasto/1056
#!/usr/bin/perl -w =moo Täysin ajan puutteessa tehty, lähinnä SVG:n luomista "harjoittelin" tässä. POhjana käytetty Entropian samaan ideaan perustuvaa Javapätkää täältä: http://mureakuha.com/koodikirjasto/1056 (c) Joeli Hokkanen, 2008 <cene @ fix.fi> =cut use strict; print "Content-type: image/svg+xml\n\n"; # kerrotaan selaimelle, että tulossa on svg my $max; my $heittokerrat = 500; # kuinka monesti heitetään my @heitot; # Heittojen silmälukujen esiintymiskerrat my @alut; # Palkkien alkupisteiden säilytys my @korkeudet; # Palkkien korkeudet $heitot[rand 6]++ for (1 .. $heittokerrat); # heitetään nopat for (@heitot) { $max = $_ if ($_ > $max); } # etsitään eniten heitetty luku my $yksikko = int(400 / $max); # lasketaan palkin korkeuden yksikkö @korkeudet = map { $_ * $yksikko } @heitot; # lasketaan palkkien korkeudet @alut = map { 400 - $_ } @korkeudet; # ja alkamispisteet # tulostetaan itse kuvan header print qq{<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="640" height="480">}; # ja lopulta piirretään palkit for (my $i = 0, my $g = 10; $i < 6; $i++, $g += 60) { print qq{ <rect x="$g" y="$alut[$i]" width="50" height="$korkeudet[$i]" rx="5" style="fill:#ff0000; stroke:#000000;stroke-width:2px;" /> <text x="$g" y="420" style="font-weight: bold">} , $i + 1 , qq{ </text> <text x="$g" y="440"> $heitot[$i] kpl</text>}; } print qq{ <text x="10" y="460">Yhteensä: $heittokerrat heittoa</text> </svg>}; Enec 21:36 24.2.08 Näyttää bugaavan toi kuhan hilighteri, =jotain kun aloittaa monirivisen kommentin, joka kestää aina =cut asti. Tää on testattavissa kokonaisuudessaan viidelläsadalla nopalla täällä: http://cene.ath.cx/noppa.pl editoitu: 15:30 26.2.08 snake 15:26 26.2.08 Perl my @heitot =( "0", "0", "0", "0", "0", "0" ); # Heittojen silmälukujen esiintymiskerrat my @alut =("0", "0", "0", "0", "0", "0" ); # Palkkien alkupisteiden säilytys my @korkeudet =( "0", "0", "0", "0", "0", "0" ); # Palkkien korkeudet Miksi nuo on merkkijonoja, kun niitä kuitenkin käytetään lukuina? Ja jos tykkää funktionaalisesta tyylistä, niin parista silmukasta pääsee eroon: Perl Enec 21:32 6.5.08 (Myöhäinen) kiitos vinkeistä, snake! Nyt kun taas jaksoin Perliin enemmän paneutua niin korjasin nuo pikkuviat ja muutenkin karsin turhia looppeja yms pois. Olipa sekaan päässyt neljä muuttujaakin, joita ei välttämättä olisi missään tarvinnut. |
![]() Haku
|