[quote=Ronnie,08.05.2004, 14:52]@crian: Müsste es nicht:
1 5 + 1 2 - 5 * + 1 + sein?![/quote]
Nein, das ist dann die umgekehrte Notation.
[quote=janek,08.05.2004, 12:50]Was meinst Du denn mit der logischen Eingabe? Kannst Du mir vieleicht das mit +++15*-1251 erklären?[/quote]
Naja, eigentlich sind die Grundrechenarten doch Funktionen auf zwei Argumenten:
+(x,y) = x+y
-(x,y) = x-y
*(x,y) = x*y
/(x,y) = x/y
Wenn man sie in der logischen Funktionenschreibweise schreibt, werden die Klammern und die Kommata aber überflüssig, da klar ist, was die Parameter sind:
Fangen wir vorne an: das erste Plus braucht zwei Parameter, nämlich + + 1 5 * - 1 2 5 und 1. Immer wenn man statt auf eine Zahl auf eine Funktion stößt, muss man deren Wert natürlich berechnen. So kommt man ganz zwangsläufig zu einer leichten rekursiven Abarbeitung:
+ ( + + 1 5 * - 1 2 5 , 1 )
+ ( + 1 5 , * - 1 2 5)
+ ( 1 , 5 ) = 6
* ( - 1 2 , 5)
- (1, 2) = -1
* ( -1, 5) = -5
+ ( 6, -5) = 1
+ (1, 1) = 2
So wird nach und nach folgendermaßen umgewandelt:
+ + + 1 5 * - 1 2 5 1
+ + 6 * - 1 2 5 1
+ + 6 * -1 5 1
+ + 6 -5 1
+ 1 1
2
Alles klar?\n\n
<!--EDIT|Crian|1084278945-->
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