1
+ --[[
2
+ ```
3
+ /*
4
+ * EJERCICIO:
5
+ * Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
6
+ * en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
7
+ * - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
8
+ * conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
9
+ *
10
+ * DIFICULTAD EXTRA (opcional):
11
+ * Crea un programa que analice dos palabras diferentes y realice comprobaciones
12
+ * para descubrir si son:
13
+ * - Palíndromos
14
+ * - Anagramas
15
+ * - Isogramas
16
+ */
17
+ ```
18
+ ]]
19
+
20
+ -- strings
21
+ local cadena = " Hola Mundo"
22
+ print (cadena )
23
+ print (string.len (cadena ))
24
+ print (# cadena )
25
+
26
+ -- concatenacion
27
+ local palabra1 = " Hola"
28
+ local palabra2 = " Mundo"
29
+ print (palabra1 .. " , " .. palabra2 )
30
+
31
+ -- repeticion
32
+ local repeticion = string.rep (palabra1 .. " " , 5 )
33
+ print (repeticion )
34
+
35
+ -- acceso a caracteres especificos
36
+ local cadena = " Mundo"
37
+ print (cadena :sub (2 , 3 ))
38
+
39
+ -- subcadenas
40
+ local cadena = " Hola Mundo"
41
+ print (cadena :sub (1 , 4 ))
42
+
43
+ local cadena = " Hola Mundo"
44
+ local encuentra = string.find (cadena , " Mundo" )
45
+ print (encuentra ) -- esto nos dice la posicion
46
+
47
+ -- conversion de mayusculas a minusculas
48
+ local cadena = " Hola Mundo"
49
+ print (string.upper (cadena ))
50
+ print (string.lower (cadena ))
51
+
52
+ -- remplazo (string.gsub)
53
+ local cadena = " Hola Mundo"
54
+ print (cadena :gsub (" Mundo" , " Lua" ))
55
+
56
+ -- cadena
57
+ local cadena = " Hola, Mundo"
58
+ for i in cadena :gmatch (" [^,]+" ) do
59
+ print (i )
60
+ end
61
+
62
+ -- union
63
+ local cadena = {" Hola" , " mundo" , " Hola" , " amigo" }
64
+ print (table.concat (cadena , " " ))
65
+
66
+ local cadena = " Hola Mundo"
67
+ print (cadena :match (" ^Hola" ))
68
+ print (cadena :match (" Mundo$" ))
69
+
70
+ -- interpolacion
71
+ local palabra1 , palabra2 = " Hola" , " mundo"
72
+ print (string.format (" La palabra 1 es: %s, y la segunda palabra seria: %s" , palabra1 , palabra2 ))
73
+
74
+ -- extra
75
+ function analizarPalabra (palabra )
76
+ return palabra :lower ():gsub (" %s+" , " " )
77
+ end
78
+
79
+ local function palindromo (palabra )
80
+ palabra = analizarPalabra (palabra )
81
+ local longitud = # palabra
82
+
83
+ for i = 1 , math.floor (longitud / 2 ) do
84
+ if palabra :sub (i , i ) ~= palabra :sub (longitud - i + 1 , longitud - i + 1 ) then
85
+ return false
86
+ end
87
+ end
88
+ return true
89
+ end
90
+
91
+ local function anagrama (palabra1 , palabra2 )
92
+ palabra1 = analizarPalabra (palabra1 )
93
+ palabra2 = analizarPalabra (palabra2 )
94
+
95
+ if # palabra1 ~= # palabra2 then
96
+ return false
97
+ end
98
+
99
+ local function contar_letras (palabra )
100
+ local conteo = {}
101
+ for letra in palabra :gmatch (" ." ) do
102
+ conteo [letra ] = (conteo [letra ] or 0 ) + 1
103
+ end
104
+ return conteo
105
+ end
106
+
107
+ local conteo1 = contar_letras (palabra1 )
108
+ local conteo2 = contar_letras (palabra2 )
109
+
110
+ for letra , cantidad in pairs (conteo1 ) do
111
+ if conteo2 [letra ] ~= cantidad then
112
+ return false
113
+ end
114
+ end
115
+
116
+ return true
117
+ end
118
+
119
+ local function isograma (palabra )
120
+ palabra = analizarPalabra (palabra )
121
+ local letras_vistas = {}
122
+
123
+ for letra in palabra :gmatch (" ." ) do
124
+ if letras_vistas [letra ] then
125
+ return false
126
+ end
127
+ letras_vistas [letra ] = true
128
+ end
129
+ return true
130
+ end
131
+
132
+ -- Pruebas
133
+ local word1 = " oso"
134
+ local word2 = " aibofobia"
135
+ print (" ¿La palabra '" .. word1 .. " ' es un palíndromo?: " , palindromo (word1 ))
136
+ print (" ¿La palabra '" .. word2 .. " ' es un palíndromo?: " , palindromo (word2 ))
137
+
138
+ print (" \n Pruebas de anagramas:" )
139
+ print (" roma - amor:" , anagrama (" roma" , " amor" )) -- true
140
+ print (" hola - aloh:" , anagrama (" hola" , " aloh" )) -- true
141
+ print (" lobo - bolo:" , anagrama (" lobo" , " bolo" )) -- true
142
+ print (" perro - pera:" , anagrama (" perro" , " pera" )) -- false
143
+
144
+ print (" \n Pruebas de isogramas:" )
145
+ print (" murciélago:" , isograma (" murcielago" )) -- true
146
+ print (" repetir:" , isograma (" repetir" ))
0 commit comments