Schrift
[thread]5681[/thread]

Kleines mathe-skript (Seite 3)

Leser: 2


<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten
snadra
 2003-09-02 19:04
#82991 #82991
User since
2003-08-11
265 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, fein!
Ich bin ja immer noch hier, jetzt aber husch, husch ins Körbchen...
Bis morgen!
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
pq
 2003-09-02 19:34
#82992 #82992
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=SirLant,02.09.2003, 16:18]
Code (perl): (dl )
  ($x,$y) = ($y,$x) if $y > $x;


Diese zeile verwirrt mich irgendwie, du vertauscht 8 und 9,
wenn 9 größer 8 ist(was ja der Fall ist).Nun ist 8 = 9 und 9 = 8.
Aber wozu ist dieser Schritt den wichtig?
Ich denke mal, dass die größere Zahl durch die kleinere geteilt wird, oder?
[/quote]
ja
Quote
Diese Zeile:
Code (perl): (dl )
$y -= ($x % $y);

versteh ich nicht so ganz, du berechnest $x % $y, soweit ist das
auch klar, wäre bei 9 % 8 , ja 1 , nun rechnest du $y(8) - 1,
das entspricht ja 7, aber wie kommst du so auf den ggT?

es war falsch, hatte den algorithmus nicht mehr so im kopf.
siehe editiertes posting
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
SirLant
 2003-09-02 20:43
#82993 #82993
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Dann sieht es jetzt so aus:
Code (perl): (dl )
$x -= $y;


9 = 9-8
das wäre 1, dann würde im nächsten Durchlauf
ne 1 zurückgegeben werden, da $x ja kleiner 2 ist
Oder steh ich gerade total aufm Schlauch?
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Crian
 2003-09-02 20:45
#82994 #82994
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Nimm einfach Snadras von mir verhübschten Code (über den bunten Edit-Kommentaren) und freu Dich ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2003-09-02 22:02
#82995 #82995
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=SirLant,02.09.2003, 18:43]9 = 9-8
das wäre 1, dann würde im nächsten Durchlauf
ne 1 zurückgegeben werden, da $x ja kleiner 2 ist[/quote]
richtig
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Ishka
 2003-09-03 02:10
#82996 #82996
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
my $sek=1;
while($sek % 8 || $sek % 9){$sek++}
print "Sie treffen sich nach $sek Sekunden wieder\n";
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
SirLant
 2003-09-03 02:25
#82997 #82997
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Das geht sogar, aber verstehe nicht weshalb
$sek % 8 || $sek %9 zu diesem Ergebnis kommen
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Ishka
 2003-09-03 02:34
#82998 #82998
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
$sek % 8 ist falsch, wenn die Zahl durch 8 teilbar ist
$sek %9 ist falsch, wenn die Zahl durch 9 teilbar ist

Wenn die Zahl jetzt sowohl durch 8, wie auch durch 9 teilbar sind, sind beide falsch

»0 || 0« ist wieder falsch, aber
»1 || 0« und »0 || 1« sind beide wahr

und wenn ich jetzt mit while durchlauf...
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Dubu
 2003-09-03 02:36
#82999 #82999
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
$sek % 8 == 0 bedeutet, der Ferrari hat in dieser Sekunde eine ganze Runde zurueckgelegt; $sek % 9 == 0 bedeutet, der Lotus hat in dieser Sekunde eine ganze Runde zurueckgelegt. Wenn beide gleichzeitig gleich null sind, bedeutet das, dass die Wagen in dieser Sekunde gleichzeitig ueber die Ziellinie fahren. Das ist trivialerweise fuer $sek == 0 der Fall - also beim Start - und dann wieder nach 72 Sekunden.
Ishka
 2003-09-03 02:38
#83000 #83000
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Effizient ist der code nicht - für größere Zahlen, mach das lieber so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $sek=8*9/ggT(8,9);

print "Sie treffen sich nach $sek Sekunden wieder\n";

sub ggT
{
my ($flip,$flop)=@_;
($flip,$flop)=($flop,$flip) if $flip<$flop;
while(1)
{
$flip %= $flop;
($flip,$flop)=($flop,$flip) if $flip<$flop;
last if $flop==0;
}
return $flip;
}

edit:
Das Forum hat nen Bug mit '\n's\n\n

<!--EDIT|Ishka|1062542486-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten



View all threads created 2003-09-02 16:39.