Die ganze Wahrheit: Boole'sches mit Perl
Ein kleines Perl-Script kann bei der Erstellung von
Wahrheitstabellen für Boole'sche Ausdrücke sehr behilflich s sein.
Das "händische" Erstellen einer solchen Tabelle zur Bestimmmung
der Werte eines Boole'schen Ausdruckes kann ja bei mehr als vier
Variablen schon sehr aufwendig werden, da
die maximale Anzahl der Kombinationen
von Variablenbelegungen 2^n (n = Anzahl der Variablen) ist.
Mit dem kleinen Script "bool.pl" weiter unten ist es
möglich, die ganze Arbeit
von Perl erledigen zu lassen. Das Script akzeptiert als Eingabe
einen Boole'schen Ausdruck (| steht für OR und
& für AND). Die Ausgabe ist ein Script, welches
für den eingegebenen Ausdruch ein Script zur Erzeugung einer
Wahrheitstabelle erzeugt.
Ein kleines Beispiel dazu: Der Aufruf
# bool.pl '(a | b) & c'liefert als Ausgabe das Perl-Script:
print "a b c (a | b) & c\n"; foreach $a (0..1) { foreach $b (0..1) { foreach $c (0..1) { print "$a $b $c ",(($a | $b) & $c),"\n"; } } }Führt man dieses Script aus, so erhält man als Ausgabe die folgende "Wahrheitstabelle" für (a OR b) AND c:
a b c (a | b) & c 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1Natürlich is es möglich, die Tabelle beispielsweise mit "eval" sofort ausgeben zu lassen, und den Aufruf zu vereinfachen. Der Fantasie sind ja bei Perl keine Grenzen gesetzt. Hier nun das Script:
#!/usr/bin/perl use strict; use warnings; my %vars; my @vars; my $expr = $ARGV[0]; my $vars = $expr; my $spc = 0; my $line = ""; $vars =~ s/[\|\&\(\)]//g; @vars = split /\s+/, $vars; foreach (@vars) { next if $vars{$_}; $vars{$_} = $_; } print "print \""; foreach my $var (sort keys %vars) { print "$var "; } print " $expr\\n\";\n\n"; foreach my $var (sort keys %vars) { printspc(+2); print 'foreach $'.$var." (0..1) {\n"; $expr =~ s/$var/\$$var/g; $line .= "\$$var "; } printspc(0); print "print \"$line \",($expr),\"\\n\";\n"; foreach my $var (sort {$b cmp $a} keys %vars) { printspc(-2); print "}\n"; } sub printspc { if ($_[0] < 0) { $spc += $_[0]; print " " x $spc; } else { print " " x $spc; $spc += $_[0]; } }
Alle Touren
Schneebergwege
- Bergrettungssteig
- Emmysteig
- Fadensteig
- Ferdinand Mayr-Weg
- Fischersteig
- Franz-Josef-Promenade
- Hotelries
- Hochgang
- Krummbachgraben
- Kuhschneeberg
- Kuhsteig
- Lärchkogelgrat
- Nandlgraben
- Nandlgrat
- Nandlgrat (Alter Nandlsteig)
- Niederlauf
- Novembergrat
- Nördlicher Grafensteig
- Oberer Herminensteig
- Oktobergrat
- Stadelwandgraben
- Südlicher Grafensteig
- Unterer Herminensteig
- Waxriegel
- Weichtalklamm
Raxsteige
- Alpenvereinssteig
- Altenbergsteig
- Bärenlochsteig
- Brandschneide
- Camillo Kronich-Steig
- Gaisloch
- Gamsecksteig
- Gretchensteig
- Göbl Kühn-Steig
- Großes Fuchsloch
- Großes Wolfstal
- Großer Kesselgraben
- Ho Chi Minh Pfad
- Hoyossteig
- Karl Kantner-Steig
- Kaisersteig
- Kontruszsteig
- Kronich Eisenweg
- Martinsteig
- Peter Jokel-Steig
- Preinerwandsteig
- Raxenmäuersteig
- Reisstalersteig
- Rudolfsteig
- Schlangenweg
- Staudengraben
- Wildfährte
- Teufelsbadstubensteig
- Törlweg
- Waxriegelsteig
- Wachthüttelkamm
Geführte Touren
- Gösing Hoyos-Steig
- Schneeberg Oktobergrat
- Gösing Hoyos-Steig
- Gösing und Flatzer Wand
- Gösing Hoyos-Steig
- Kienberg und Himberg
- Flatzer Wand und Gösing
- Gösing Hoyos-Steig
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Himberg und Kienberg
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Prettschachersteig und Krummbachstein
- Schneeberg Oktobergrat
- Gösing Hoyossteig
- Semmering Bahnwanderweg
- Miesenbach Biedermeierrunde
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Schneeberg Grafensteig und Hengst
- Schneeberg Nandlgrat
- Gösing Hoyossteig
- Gahns Saurüssel
- Biedermeierrunde Miesenbach
- Gösing Hoyossteig
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Krummbachstein
- Schneeberg Oktobergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Gösing und Flatzer Wand
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg_Novembergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Schneeberg Brandmauer und Stadelwand
- Schneeberg und Hengst
- Gösing Hoyos-Steig
- Rax mit Schneeschuhen
- Schneeberg Herminensteig und Hengst
- Schneeberg Novembergrat
- Schneeberg Herminensteig
- Schneeberg Herminensteig
- Schneeberg Alter Nandlsteig
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Dürre Leiten mit Schneeschuhen
- Rax mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Schneeberg Brandmauer
- Schneeberg Novembergrat
- Miesenbach Biedermeierrrunde
- Gahns Eng und Saurüssel mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Novembergrat
- Nördlicher Grafensteig und Hengst
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Herminensteigvariationen
- Gahns Saurüssel mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Biedermeierrunde in Miesenbach
- Gahns Saurüssel und Eng