Donnerstag, 30. September 2010

Auflösung des Rätsels

In einem vorigen Post gab es ein kleines Programmierrätsel. Hier jetzt die Auflösung:
Das gesuchte "Gerät" aus dem Rätsel ist ein Volladdierer.
Ein Volladdierer ist ein Schaltznetz, mit dem sich 3 Binärzahlen addieren lassen.
Folglich hat die Schaltung 3 Eingänge für die 3 zu addierenden Zahlen und 2 Ausgänge, s und c.
Der Ausgang s (engl. sum = Summe) liefert die niederwertige Stelle des Ergebnisses, der Ausgang c (engl. carry = Übertrag) die höherwertige.
Genauere Informationen und die Wahrheitstabelle (in diesem Fall die Ergebnisse der Additionen abhängig von den Eingabewerten) entnehme man Wikipedia.
In der Codeklasse aus dem Rätsel wird die Berechnung durch Aufruf der Methode ABC() angeregt. Diese erwartet 3 Strings als Parameter, welche die zu addierenden Binärzahlen darstellen.
Der Buchstabe "x" steht hierbei für die Ziffer 0, der Buchstabe "y" für 1. Zuerst wird nun die Methode DEF() aufgerufen, in welcher auf verschiedene Arten geprüft wird, ob wirklich nur "x" und "y" als Eingabe übergeben wurde.
Wurde eine ungültige Eingabe übergeben, gibt das Programm "d" stellvertretend für Fehler zurück.
In ABC() wird andernfalls die Summe der 3 Zahlen berechnet und das Ergebnis als String zurückgegeben.
Die linke Stelle des Ergebnisstrings ist die niederwertige Stelle der Summe (s), die rechte Stelle die höherwertige (c).
Beim Ergebnis steht nun der Buchstabe "a" für eine 0 und der Buchstabe "b" für eine 1.

Danke an alle für's Mitmachen und Mitraten!

Keine Kommentare:

Kommentar veröffentlichen