Solltet ihr mal eine Herausforderung suchen...

Ich glaube wir können mal an der stelle das Rätsel auflösen.
Hier ist meine Lösung. Rekursiv also bei grossen n nicht gerade sehr schnell für sehr grosse n sogar fast unmöglich.

PHP:
<?php
$aktjahr = 2002;
function AnzahlFrauen ($gebjahr)
{
	global $aktjahr;
	$diff= $aktjahr - $gebjahr;
	if ($diff >= 23)
	{
		$tmp1=$gebjahr + 20;
		$tmp2=$gebjahr + 23;
		return (AnzahlFrauen($tmp1)+ AnzahlFrauen($tmp2) + 1);
	}
	elseif ($diff >= 20)
	{
		$tmp=$gebjahr + 20;
		return (AnzahlFrauen($tmp) + 1);
	}
	else
	{
		return 1;
	}
}

echo (AnzahlFrauen(1801));
?>

Sieht wüsst aus aber wenn man sich das mal genauer anguckt merkt man eigentlich, dass es nur logisch ist. Die interative Lösung von Reima ist deutlich fixer. Muss er aber schon selber hier posten, is ja seine Lösung! ;-)

So Long
TheVirus

P.S.: Interesse an mehr von dem Zeug?! *g*
 
Ok, dann will ich euch mal meine Lösung nicht vorenthalten:
PHP:
function albertoni($anfangsjahr, $endjahr)
{
	$anzahl = 0;
	$dazu[$anfangsjahr] = 1;
	for ($jahr=$anfangsjahr;$jahr<=$endjahr;$jahr++)
	{
		if ($dazu[$jahr] > 0)
		{
			$anzahl += $dazu[$jahr];
			$dazu[$jahr+20] += $dazu[$jahr];
			$dazu[$jahr+23] += $dazu[$jahr];
		}
	}
	return $anzahl;
}
Relativ simpel (wenn man´s geblickt hat :)), und vor allem: Sauschnell! Die Berechnung für den Zeitraum 0 - 10000 dauert nicht mal eine Viertel-Sekunde (1.0 GHz Proz) ;-)


reima

PS: Keep them coming, please :)
 
Ok hier ne ganz einfache. Reima ich hoffe die langweilt dich nicht zu sehr! Ich geh mal davon aus dass jeder weiss was ne Matrix und was ein Vektor ist:

Gegeben sei eine (m,n) Matrix M und ein Vektor B mit n Elementen. Der Vektor B und die Matrix M sollen miteinander multipliziert werden.

(Hinweis: Die Multiplikation eines Zeilenvektors A =(a1 a2 .. an) der Matrix M mit dem Vektor B = (b1 b2 .. bn) ist folgendermaßen definiert:
A * B = (a1 * b1) + (a2 * b2) + .... + (an * bn))

Schreibe eine PHP Funktion, die eine (m,n) Matrix und einen
Vektor mit n Elementen als Eingabe erhält und den Ergebnisvektor der
Multiplikation von Matrix und Vektor zurückgibt.

Hoffe das ist eingermassen verständlich auch für nicht mathematiker. Wenn nicht dann erkläre ich gerne nochmal das Produkt.

So Long
TheVirus
 
hab ich das so richtig verstanden :
A:
a1,a2,a3,a4
a5,a6,a7,a8
a9,a10,a11,a12
.....
B:
b1,b2,b3

A*B = ((a1*b1)+(a2*b1)+(a3*b1)+(a4*b1))+((a5*b2)+(a6*b2)+(a7*b2)+(a8*b2)).....?

also zuerst alle elemente der Ersten Zeile von A mit dem ersten Elemt von B multiplizieren und dann addieren
und dann " " " " " " der zweiten Zeile von A mit dem zweiten Elemt von B multiplizieren und dann addieren etc. ??

tob
 
Nicht ganz:

Also das ist deine Matrix M (eine (4,4) Matrix):
a1 , a2 , a3 , a4
a5 , a6 , a7 , a8
a9 , a10, a11, a12

Das dein Vektor B
b1
b2
b3
b4

Also ist n=4 (Anzahl der spalten in der Matrix) und m=4 (anzahl der Zeilen der Matrix).

Als ergebnis kommt ein vektor C raus der Form:
a1*b1 + a2*b2 + a3*b3 + a4*b4 = c1
a5*b1 + a6*b2 + a7*b3 + a8*b4 = c2
... = c3
... = c4

Also sieht C dann so aus:
c1
c2
c3
c4


Jetzt hab ich das ergebnis eigentlich schon verraten. Naja das ganze halt für beliebige m,n... wobei die anzahl der spanten der Matrix und die Anzahl der Zeilen des Vektors B immer n sind... also gleich sind... m ist egal.

So Long
TheVirus
 
hmm, wenn ich mal eure beredung(die ich nich verstehe :)) unterbrechen darf :)-)), ich hab noch ne andere(bessere?!) lösung für meine aufgabe:
PHP:
<?php
for ($i=1;$i<=9999;$i++) {
if (strrev($i)*4==$i){
echo "Die gesuchte Zahl ist " .$i / 4 ."<br>\n";  
}  
}
?>
sicher, dauert ein bisschen länger (och... ;)) aber ich denke ist immer noch ein bisschen einfacher zu proggen :D
 
Zurück