Tracks
/
Common Lisp
Common Lisp
/
Übungen
/
Charakterstudie
Charakterstudie

Charakterstudie

Lernübung

Einführung

Zeichen

Common Lisp hat wie andere Programmiersprachen Zeichen. Zeichen sind Objekte, die ein Element in einer Menge von Text darstellen (z. B. ein String oder ein Textstrom).

Zeichen lassen sich in Ganzzahlen umwandeln und zurück. (Aber sie sind keine Ganzzahlen, sie sind ein eigener Typ.)

Zeichen werden als #\ gefolgt von ihrem Namen dargestellt. Der „Name" für gewöhnliche Zeichen wie 'A' oder 'b' oder '9' oder '!' ist einfach genau das: also #\A, #\b, #\9 und #\!. Einige nicht-grafische Zeichen wie das Leerzeichen oder der Zeilenumbruch haben Namen wie #\Space und #\Newline.

Der Standard verlangt von einer Implementierung nur 96 Zeichen (Groß- und Kleinbuchstaben des lateinischen Alphabets (A-Za-z), die Ziffern (0-9), das Leerzeichen (#\Space), den Zeilenumbruch (#\Newline) und Satzzeichen (z. B. !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~)). Allerdings bieten die meisten Implementierungen mehr als das, darunter auch solche, die alle Unicode-Zeichen bereitstellen.

Zeichen vergleichen

Zeichen lassen sich mit char= oder char-equal auf Gleichheit prüfen (letzteres ignoriert Groß- und Kleinschreibung).

Zeichen lassen sich mit Funktionen wie char<, char>, char<=, char>= und deren Varianten char-lessp und char-greaterp sortieren, die Groß- und Kleinschreibung ignorieren.

Arten von Zeichen

Zeichen können in verschiedene Typen eingeteilt werden: grafisch, alphabetisch, alphanumerisch, Ziffer, Großbuchstabe oder Kleinbuchstabe. Ein Zeichen kann mehr als einen Typ haben, zum Beispiel ein alphabetischer Großbuchstabe. Für jeden dieser Typen gibt es Prädikate: graphic-char-p, alpha-char-p, alphanumericp, digit-char-p, upper-case-p und lower-case-p.

Groß- und Kleinschreibung von Zeichen ändern

Manche Zeichen können groß- oder kleingeschrieben sein und mit char-upcase und char-downcase ineinander umgewandelt werden.

Anleitung

Lewis, ein junger Lisp-Alien, muss etwas für das Projekt „Menschliche Alphabete" erledigen und fragt, ob du ihnen helfen kannst, ein paar Funktionen zu programmieren, die sie brauchen werden.

1. Zeichen vergleichen

Lewis braucht eine Funktion, die zwei Zeichen vergleicht und feststellt, ob das erste größer als, kleiner als oder gleich dem zweiten ist. Schreibe eine Funktion compare-chars, die zwei Zeichen entgegennimmt und entsprechend zu :greater-than, :less-than oder :equal-to auswertet. Die Funktion soll unter Berücksichtigung der Groß- und Kleinschreibung vergleichen.

2. Die „Größe" eines Zeichens bestimmen

Lewis muss wissen, ob ein Zeichen „big" (ein Großbuchstabe) oder „little" (ein Kleinbuchstabe) ist, oder „no-size", wenn es keins von beidem ist. Schreibe eine Funktion size-of-char, die abhängig von der „Größe" des Zeichens zu :big, :small oder :no-size auswertet:

3. Die „Größe" eines Zeichens ändern

Lewis muss vielleicht ein großes Zeichen klein oder ein kleines Zeichen groß machen. Schreibe eine Funktion change-size-of-char, die zwei Parameter entgegennimmt: ein Zeichen und eine gewünschte Größe (:big oder :small). Sie soll zum entsprechenden Zeichen der richtigen Größe auswerten.

4. Den „Typ" eines Zeichens bestimmen

Lewis muss nicht nur die „Größe" eines Zeichens kennen, sondern auch seinen „Typ". Schreibe eine Funktion type-of-char, die zu :alpha auswertet, wenn das Zeichen alphabetisch ist, zu :numeric, wenn es eine Ziffer ist, zu :space, wenn es ein Leerzeichen ist, zu :newline, wenn es ein Zeilenumbruch ist, und ansonsten zu :unknown

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Common Lisp Exercism

Bereit, mit Charakterstudie zu starten?

Melde dich bei Exercism an, um Common Lisp mit 27 Konzepte92 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.