Thread Routine für Lösg. math. Funktionen: Brauche Idee oder Vorschlag (36 answers)
Opened by janek at 2004-05-06 15:50

Crian
 2004-05-11 16:26
#10987 #10987
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[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:

Code: (dl )
1
2
3
4
+(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:

Code: (dl )
+ + + 1 5 * - 1 2 5 1

 

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:

Code: (dl )
1
2
3
4
5
6
7
8
+ ( + + 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:

Code: (dl )
1
2
3
4
5
6
+ + + 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

View full thread Routine für Lösg. math. Funktionen: Brauche Idee oder Vorschlag