Lerne und übe ABAP – Scrabble Score

In diesem Artikel zeige ich Dir, wie Du mit der Programmiersprache ABAP die Punktzahl eines Scrabble-Wortes berechnen kannst. Dazu gibt es die ABAP-Übung namens „Scrabble Score“, die Du entweder direkt in Deinem SAP-System oder auf der kostenlosen Online-Plattform „exercism“ durchführen kannst. Trainiere Deine ABAP-Kenntnisse mit 40 guten Übungen auf dieser Plattform.

Aufgabenstellung

Berechne für ein gegebenes Wort die Scrabble-Punktzahl für dieses Wort.

Diese werden benötigt:

Letter                           Value
A, E, I, O, U, L, N, R, S, T       1
D, G                               2
B, C, M, P                         3
F, H, V, W, Y                      4
K                                  5
J, X                               8
Q, Z                               10

Beispiele

Das Wort „cabbage“ (zu Deutsch „Kohl“) sollte mit 14 Punkten bewertet werden:

  • 3 Punkte für C
  • 1 Punkt für A, zweimal
  • 3 Punkte für B, zweimal
  • 2 Punkte für G
  • 1 Punkt für E

Und insgesamt:

  • 3 + 21 + 23 + 2 + 1
  • = 3 + 2 + 6 + 3
  • = 5 + 9
  • = 14

Erweiterungen

  • Man kann einen doppelten oder einen dreifachen Buchstaben spielen.
  • Du kannst ein doppeltes oder dreifaches Wort spielen.

Beispiel Programmierung

CLASS zcl_scrabble_score DEFINITION PUBLIC .

  PUBLIC SECTION.
    METHODS score
      IMPORTING
        input         TYPE string OPTIONAL
      RETURNING
        VALUE(result) TYPE i.
  PROTECTED SECTION.
  PRIVATE SECTION.

ENDCLASS.


CLASS zcl_scrabble_score IMPLEMENTATION.
  METHOD score.
    " add solution here
    DATA(lv_total) = 0.
    DO strlen( input ) TIMES.
      DATA(lv_current_char) = TO_UPPER( SUBSTRING( val = input off = sy-index - 1 len = 1 ) ).
      DATA(lv_value_of_char) = COND #(
        WHEN lv_current_char CA 'AEIOULNRST' THEN 1
        WHEN lv_current_char CA 'DG' THEN 2
        WHEN lv_current_char CA 'BCMP' THEN 3
        WHEN lv_current_char CA 'FHVWY' THEN 4
        WHEN lv_current_char CA 'K' THEN 5
        WHEN lv_current_char CA 'JX' THEN 8
        WHEN lv_current_char CA 'QZ' THEN 10
        ELSE 0
      ).
    lv_total = lv_total + lv_value_of_char.
  enddo.
  result = lv_total.

  ENDMETHOD.

ENDCLASS.

Erklärung

Diese Implementierung berechnet die Scrabble-Punktzahl für ein gegebenes Wort. Dabei wird die Methode „score“ verwendet, um die Punktzahl zu berechnen und als Ergebnis zurückzugeben.

Zuerst wird die Variable „lv_total“ mit einem Anfangswert von 0 initialisiert, um die Gesamtsumme der Punkte zu speichern. Dann wird eine Schleife über die Länge des gegebenen Wortes gestartet, wobei jeder Buchstabe einzeln betrachtet wird.

Bei jedem Schleifendurchlauf wird der aktuelle Buchstabe aus dem Wort extrahiert und als „lv_current_char“ gespeichert. Die Groß-/Kleinschreibung wird hier durch die Verwendung von „TO_UPPER“ sichergestellt, um mögliche Abweichungen in der Schreibweise zu ignorieren.

Anschließend wird die Variable „lv_value_of_char“ berechnet, indem eine Schalteranweisung (COND) verwendet wird, um den Wert jedes Buchstabens auf der Grundlage seiner vordefinierten Bewertung zu bestimmen (siehe Tabelle oben). Wenn keiner der Fälle zutrifft, wird „lv_value_of_char“ auf 0 gesetzt.

Die errechnete Punktzahl des aktuellen Buchstabens wird dann zur Gesamtsumme addiert und die Schleife für den nächsten Buchstaben wiederholt.

Am Ende wird die Summe in „result“ gespeichert und zurückgegeben, um die Scrabble-Punktzahl für das gegebene Wort zu liefern.

Ü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