Rutas
/
Common Lisp
Common Lisp
/
Ejercicios
/
Estudio de caracteres
Estudio de caracteres

Estudio de caracteres

Ejercicio de aprendizaje

Introducción

Caracteres

Common Lisp tiene caracteres como otros lenguajes de programación. Los caracteres son objetos que representan un elemento dentro de una cantidad de texto (por ejemplo, un string o un flujo de texto).

Los caracteres se pueden convertir a números enteros y desde ellos. (Pero no son números enteros: son un tipo distinto).

Los caracteres se representan como #\ seguido de su nombre. El «nombre» de los caracteres comunes como «A», «b», «9» o «!» es simplemente ese: así, #\A, #\b, #\9 y #\!. Algunos caracteres no gráficos, como el espacio o el salto de línea, tienen nombres como #\Space y #\Newline.

El estándar solo exige que una implementación tenga 96 caracteres (los caracteres alfabéticos latinos en mayúscula y minúscula (A-Za-z), los dígitos (0-9), el espacio (#\Space), el salto de línea (#\Newline) y la puntuación (por ejemplo, !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~)). Sin embargo, la mayoría de las implementaciones ofrecen más que eso, incluidas las que proporcionan todos los caracteres Unicode.

Comparar caracteres

Los caracteres se pueden comparar por igualdad con char= o char-equal (este último no distingue entre mayúsculas y minúsculas).

Los caracteres se pueden ordenar con funciones como char<, char>, char<=, char>= y sus versiones que no distinguen entre mayúsculas y minúsculas, char-lessp y char-greaterp.

Tipos de caracteres

Los caracteres se pueden clasificar en distintos tipos: gráficos, alfabéticos, alfanuméricos, dígitos, mayúsculas o minúsculas. Un carácter puede ser de más de un tipo, como un carácter alfabético en mayúscula. Hay predicados para cada uno de estos tipos: graphic-char-p, alpha-char-p, alphanumericp, digit-char-p, upper-case-p y lower-case-p.

Convertir el caso de un carácter

Algunos caracteres pueden ser mayúsculas o minúsculas y se pueden convertir entre sí con char-upcase y char-downcase.

Instrucciones

Lewis, un joven Lisp Alien, necesita avanzar en su proyecto de alfabetos humanos y te pregunta si puedes ayudarle a programar algunas funciones que va a necesitar.

1. Comparar caracteres

Lewis necesitará una función que compare dos caracteres y determine si el primero es mayor que, menor que o igual que el segundo. Escribe una función compare-chars que tome dos caracteres y evalúe a :greater-than, :less-than o :equal-to según corresponda. La función debe comparar distinguiendo entre mayúsculas y minúsculas.

2. Determinar el «tamaño» del carácter

Lewis necesita saber si un carácter es «grande» (un carácter en mayúscula), «pequeño» (un carácter en minúscula) o «sin tamaño» si no es ninguna de las dos cosas. Escribe una función size-of-char que evalúe a :big, :small o :no-size según el «tamaño» del carácter:

3. Cambiar el «tamaño» del carácter

Es posible que Lewis necesite convertir un carácter grande en pequeño, o uno pequeño en grande. Escribe una función change-size-of-char que tome dos parámetros: un carácter y un tamaño deseado (:big o :small). Debe evaluar al carácter correspondiente con el tamaño correcto.

4. Determinar el «tipo» de un carácter

Lewis no solo necesitará saber cuál es el «tamaño» del carácter, sino también su «tipo». Escribe una función type-of-char que evalúe a :alpha si el carácter es alfabético, :numeric si es un carácter numérico, :space si es un carácter de espacio, :newline si es un carácter de salto de línea y :unknown en cualquier otro caso

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Common Lisp Exercism

¿Listo para empezar Estudio de caracteres?

Regístrate en Exercism para aprender y dominar Common Lisp con 27 conceptos92 ejercicios y mentoría humana real, todo gratis.