Zahlenspielereien |
|---|
n = 70 / pBeispielsweise möchte man wissen, wie lange es dauert, bis sich die Bevölkerungzahl der Erde verdoppelt, wenn die Zahl der Menschen auf der Erde jährlich um 2% zunimmt. Man rechnet hier einfach 70 / 2 = 35. Also gibt es in 35 Jahren demnach doppelt so viele Erdenbürger im Vergleich zu heute.
x = A + B - x;Dies wird zwar nicht dem Prinzip der Strukturierten Programmierung gerecht und man sollte deshalb auch auf die Implementierung dessen verzichten, da es nur schwer lesbar ist ... aber ich finde es nett. :)
x = 7; y = 3; h = x; // h = 7 x = y; // x = 3 y = h; // y = 7Anschließend steht also dann in x der Wert aus y und umgekehrt. Man kommt allerdings auch ohne diese Hilfvariable h aus. Nämlich folgendermaßen:
x = 7; y = 3; x = x - y; // x = 7 - 3 = 4 y = x + y; // y = 4 + 3 = 7 x = y - x; // x = 7 - 4 = 3Noch rafinierter geht es mit der XOR-Verknüpfung. Damit benötigt man statt wie oben zwei Operatoren (+ und -) nur noch einen Einzigen, nämlich den XOR-Operator. Dazu das selbe Beispiel wie oben nur Dieses - wegen der besseren Lesbarkeit - in Binärdarstellung:
x = 111; y = 011; x = x XOR y; // x = 111 XOR 011 = 100 y = x XOR y; // y = 100 XOR 011 = 111 x = x XOR y; // x = 100 XOR 111 = 011Selbiges funktioniert beispielsweise auch mit der Umkehrfunktion von XOR (also NOT XOR) oder entsprechend dem obigen +/- Verfahren auch mit * (Mal) und / (Geteilt). Bei Letzterem darf allerdings weder x noch y den Wert 0 enthalten (Division durch 0!).
int x = 7;
int y = 3;
x ^= y ^ (y = x);
Oder alternativ:
x += y - (y = x);
4. Rekursive anonyme Funktionen
var r =
function (x) {
return function (fn) {
return fn(fn);
} (function (fn) {
return x(function (x) {
return fn(fn)(x);
});
});
}
(function (rec) {
return function (n) {
if (n == 1) return 1;
else return n * rec(n - 1);
};
})(5);