Lerne und übe ABAP – Hamming

Lerne und übe ABAP. In der ABAP-Übung „Hamming“ implementierst Du ein ABAP-Programm, um die Hamming-Distanz zweier DNA-Strängen zu berechnen. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.

Aufgabenstellung

Berechne den Hamming-Abstand zwischen zwei DNA-Strängen.

Dein Körper besteht aus Zellen, die DNA enthalten. Diese Zellen nutzen sich regelmäßig ab und müssen ersetzt werden, was durch Teilung in Tochterzellen geschieht. Tatsächlich teilt sich der menschliche Körper im Laufe seines Lebens etwa 10 Billiarden Mal!

Wenn sich Zellen teilen, wird auch ihre DNA repliziert. Manchmal passieren bei diesem Prozess Fehler, und einzelne DNA-Stücke werden mit falschen Informationen kodiert. Wenn wir zwei DNA-Stränge vergleichen und die Unterschiede zwischen ihnen zählen, können wir sehen, wie viele Fehler aufgetreten sind. Dies ist als „Hamming-Distanz“ bekannt.

Wir lesen DNA mit den Buchstaben C, A, G und T. Zwei Stränge könnten so aussehen:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

Sie haben 7 Unterschiede, und daher ist die Hamming-Distanz 7.

Die Hamming-Distanz ist für viele Dinge in der Wissenschaft nützlich, nicht nur in der Biologie, es ist also ein schöner Ausdruck, mit dem man vertraut sein sollte 🙂

Die Hamming-Distanz ist nur für Sequenzen gleicher Länge definiert. Ein Versuch, sie zwischen Sequenzen unterschiedlicher Länge zu berechnen, sollte daher nicht funktionieren.

Beispiel Programmierung

CLASS zcl_hamming DEFINITION PUBLIC.
  PUBLIC SECTION.
    METHODS hamming_distance
      IMPORTING
        first_strand  TYPE string
        second_strand TYPE string
      RETURNING
        VALUE(result) TYPE i
      RAISING
        cx_parameter_invalid.
ENDCLASS.

CLASS zcl_hamming IMPLEMENTATION.

  METHOD hamming_distance.
    " add solution here
    DATA(index) = 0.
  
    IF strlen( first_strand ) NE strlen( second_strand ).
      RAISE exception type cx_parameter_invalid.
    ENDIF.
  
    DO strlen( first_strand ) TIMES.
      IF first_strand+index(1) NE second_strand+index(1).
        result = result + 1.
      ENDIF.
    index = index + 1.
    ENDDO.

  ENDMETHOD.

ENDCLASS.

Erklärung

Dieses Programm implementiert eine ABAP-Klasse zcl_hamming, die die Hamming-Distanz berechnet, indem sie zwei DNA-Stränge (als Zeichenketten) vergleicht.

Die Klasse definiert eine öffentliche Methode hamming_distance, die den ersten und zweiten Strang als Eingabeparameter erwartet und das Ergebnis als Integer zurückgibt. Wenn die Länge der beiden Strings unterschiedlich ist, wird die Ausnahme cx_parameter_invalid ausgelöst.

Im Rumpf der Methode wird zunächst geprüft, ob die Längen der beiden Strings gleich sind. Wenn nicht, wird eine Ausnahme ausgelöst. Andernfalls wird in einer Schleife jedes Zeichen in den beiden Strings verglichen. Wenn die Zeichen an der gleichen Stelle in beiden Strings unterschiedlich sind, wird das Ergebnis um 1 erhöht. Am Ende wird das Ergebnis zurückgegeben.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar