Kurzusok
/
Common Lisp
Common Lisp
/
Feladatok
/
Karaktervizsgálat
Karaktervizsgálat

Karaktervizsgálat

Tanulófeladat

Bevezetés

Karakterek

A Common Lisp is rendelkezik karakterekkel, akárcsak a többi programozási nyelv. A karakterek olyan objektumok, amelyek egy szövegmennyiség (például egy string vagy egy szövegfolyam) egyetlen elemét képviselik.

A karakterek egész számokká alakíthatók és vissza. (De nem egész számok: önálló típust alkotnak.)

A karaktereket #\ jelöli, amelyet a nevük követ. A gyakori karakterek „neve”, például az 'A', a 'b', a '9' vagy a '!' egyszerűen maga a karakter: tehát #\A, #\b, #\9 és #\!. Néhány nem grafikus karakter, például a szóköz vagy a sortörés, névvel is rendelkezik, például #\Space és #\Newline.

A szabvány csak annyit ír elő, hogy egy implementáció 96 karakterrel rendelkezzen (kis- és nagybetűs latin betűk (A-Za-z), a számjegyek (0-9), a szóköz (#\Space), a sortörés (#\Newline) és az írásjelek (például !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~)). A legtöbb implementáció azonban ennél többet kínál, köztük olyanok is, amelyek minden Unicode-karaktert biztosítanak.

Karakterek összehasonlítása.

A karakterek egyenlőségét a char= vagy a char-equal hasonlítja össze (utóbbi nem tesz különbséget kis- és nagybetű között).

A karakterek sorba rendezhetők olyan függvényekkel, mint a char<, char>, char<=, char>=, valamint ezek kis- és nagybetűt nem megkülönböztető változatai, a char-lessp és a char-greaterp.

A karakterek típusai

A karakterek különböző típusokba sorolhatók: grafikus, alfabetikus, alfanumerikus, számjegy, nagybetűs vagy kisbetűs. Egy karakter egyszerre több típusba is tartozhat, például egy nagybetűs alfabetikus karakter. Mindegyik típushoz tartozik egy predikátum: graphic-char-p, alpha-char-p, alphanumericp, digit-char-p, upper-case-p és lower-case-p.

A karakterek kis- és nagybetűsségének átalakítása

Néhány karakter lehet kis- vagy nagybetűs, és a char-upcase és char-downcase segítségével alakíthatók át egymásba.

Utasítások

Lewis, egy fiatal Lisp Alien, szeretne egy kicsit haladni a Human alphabets projektjével, és megkérdezi, hogy tudsz-e segíteni megírni néhány függvényt, amire szüksége lesz.

1. Karakterek összehasonlítása

Lewisnek szüksége lesz egy függvényre, amely összehasonlít két karaktert, és megállapítja, hogy az első nagyobb-e, kisebb-e vagy egyenlő-e a másodikkal. Írj egy compare-chars függvényt, amely két karaktert vesz át, és a helyzetnek megfelelően :greater-than, :less-than vagy :equal-to értéket ad vissza. A függvény a kis- és nagybetűket megkülönböztetve hasonlítson össze.

2. A karakter „méretének” meghatározása

Lewisnek tudnia kell, hogy egy karakter „big” (nagybetűs karakter) vagy „little” (kisbetűs karakter), illetve „no-size”, ha egyik sem. Írj egy size-of-char függvényt, amely a karakter „méretétől” függően :big, :small vagy :no-size értéket ad vissza:

3. A karakter „méretének” módosítása

Lehet, hogy Lewisnak egy nagy karaktert kicsivé kell tennie, vagy egy kicsi karaktert naggyá. Írj egy change-size-of-char függvényt, amely két paramétert vesz át: egy karaktert és egy kívánt méretet (:big vagy :small). Az adott méretnek megfelelő karaktert kell visszaadnia.

4. A karakter „típusának” meghatározása

Lewisnek nemcsak a karakter „méretét” kell tudnia, hanem a „típusát” is. Írj egy type-of-char függvényt, amely :alpha értéket ad vissza, ha a karakter betű, :numeric értéket, ha számjegy, :space értéket, ha szóköz, :newline értéket, ha sortörés, egyébként pedig :unknown értéket

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Common Lisp Exercism

Készen állsz elkezdeni a(z) Karaktervizsgálat feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Common Lisp nyelvet 27 fogalom92 feladat segítségével, valódi emberi mentorálással, mindez ingyen.