skip to main content

kiesler.at

Hammingdistanz a la EPROG
updated by rck, 2004-11-06

Ich habe mal spaßhalber ein Programm aus der EPROG-Beispielsammlung umgesetzt. Es hat die Nummer 1074 und ermittelt die Hammingdistanz von ein paar übergebenen Codewörtern.

                     
1 | 2 | 3 | 4 | 5 | 6

Die Problemstellung

Wie so vieles im Leben beginnt das Programm mit einer Eingabe. In diesem Fall besteht sie aus drei Teilen:

- der Codewortlänge
- den Codewörtern
- dem Terminatorsymbol

Die Codewortlänge bestimmt, wie lange die folgenden Codewörter sein sollen. Das Terminatorsymbol darf kein Codewort sein und muß ein Zeichen lang sein. 0 und 1 fallen damit flach.

Die Hammingdistanz

Was ist eine Hammingdistanz? Die genauen Details werden in Grundzüge der Informatik (früher: Einführung in die Informatik, danke Wings-Of-Glory/Informatik-Forum) gelehrt. Im wesentlichen sagt die Hammingdistanz aus, wie stark sich zwei Wörter unterscheiden. Genauer gibt sie die Anzahl der unterschiedlichen Bits in zwei Codewörtern an.

Beispiel 1: A="0111" B="0111".

Hier ist die Hammingdistanz 0, beide Codewörter sind gleich.


Beispiel 2: A="1110" B="0001".

Hier ist die Hammingdistanz 4, beide Codewörter sind komplett unterschiedlich.

Wir sehen hier auch gleich, dass die Hammingdistanz a priori nur für gleichlange Codewörter definiert ist, 0 als kleinsten und die Länge eines Codewortes als größten Wert hat.

Die Ausgabe

Die Hammingdistanz des ersten Beispiels bekommen wir durch die Eingabe "4 0111 0111 =", die Ausgabe soll hier HD=0 lauten.

Beim zweiten Beispiel lautet die Eingabe beispielsweise "4 1110 0001 =", die Ausgabe entsprechend HD=4.

Wir haben auch einige Fehlerfälle.

Entspricht die Eingabe nicht dem gewünschtem Datentyp, soll ein '?' ausgegeben werden. Meines Erachtens ist dieser Fehler nur bei der Eingabe der Codelänge möglich.

Interessanter ist der allgemeine Fehlerfall "FALSCHE EINGABE". Er kann erfolgen bei

- Codelänge < 1 oder Codelänge > 4
- Anzahl Codewörter < 2 oder Anzahl Codewörter > 8
- wenn ein Wort eine andere als die gewünschte Codelänge hat
- wenn das Abschlußsymbol nicht einstellig ist
- wenn keine Binärzahlen (=nur aus 0 oder 1 bestehende) als Codewörter angegeben werden

und erfolgt in meinem Programm auch bei jedem anderen möglichen Fehler.
                     
1 | 2 | 3 | 4 | 5 | 6



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004