Skip to content

Commit 8c7ccd2

Browse files
authored
Merge pull request mouredev#6861 from Micromantic/main
[#4] - [R]
2 parents 03641c6 + 7ba7922 commit 8c7ccd2

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
#
2+
# EJERCICIO:
3+
# Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
4+
# en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
5+
# - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
6+
# conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
7+
#
8+
9+
## Operaciones con cadenas de caracteres
10+
11+
# Concatenación
12+
13+
cat("Hola,", "R")
14+
15+
# Repeticion
16+
17+
strrep("Hola, R.", 3)
18+
19+
# Longitud de una cadena de caracteres
20+
21+
nchar("Murcielago")
22+
23+
# Subcadenas
24+
25+
substr("Murcielago", start = 4, stop = 8)
26+
substr("Murcielago", 4, 7)
27+
28+
# Cambio de mayúsculas/minúsculas
29+
30+
toupper("Murcielago")
31+
tolower("MURCIELAGO")
32+
tools::toTitleCase("murcielago")
33+
34+
# Eliminación de espacios al principio y al final
35+
36+
trimws(" Murcielago en el ático. ")
37+
38+
# Reemplazo de patrones
39+
# gsub cambia el patrón en todas las ocasiones, mientras que sub solamente la primera vez
40+
41+
sub(x = "Murcielago en el lago", pattern = "la", replacement = "ga")
42+
43+
gsub(x = "Murcielago en el lago", pattern = "la", replacement = "ga")
44+
45+
# Dividir cadenas
46+
47+
strsplit(x = c("1,2,3,4,5"), split = ",")
48+
49+
strsplit(x = c("Murcielago en el lago"), split = " ")
50+
51+
# Buscar patrones
52+
53+
# grep devuelve la posición donde se cumple el patrón de la regex
54+
grep("[a-z]", c("123", "b"))
55+
56+
grep("[a-z]", c("12d3", "b"))
57+
58+
# grepl devuelve si el patrón se cumple o no
59+
60+
grepl("[a-z]", c("123", "b"))
61+
62+
grepl("[a-z]", c("12d3", "b"))
63+
64+
# Coincidencias de patrones
65+
66+
# regexpr indica la posición del patrón en la primera aparición
67+
regexpr(c("Murcielago en el lago"), pattern = "el")
68+
69+
# gregexpr indica la posición del patrón en todas las repeticiones
70+
gregexpr(c("Murcielago en el lago"), pattern = "el")
71+
72+
# Formateo de texto
73+
74+
s1 <- "Hola"
75+
s2 <- "R"
76+
77+
sprintf("Saludo: %s, lenguaje: %s!", s1, s2)
78+
79+
80+
81+
# DIFICULTAD EXTRA (opcional):
82+
# Crea un programa que analice dos palabras diferentes y realice comprobaciones
83+
# para descubrir si son:
84+
# - Palíndromos
85+
# - Anagramas
86+
# - Isogramas
87+
#
88+
89+
analizar_palabras <- function(x, y) {
90+
91+
x_lower <- tolower(x)
92+
y_lower <- tolower(y)
93+
94+
x_letras <- unlist(strsplit(x_lower, split = ""))
95+
y_letras <- unlist(strsplit(y_lower, split = ""))
96+
97+
x_inversa <- rev(x_letras)
98+
y_inversa <- rev(y_letras)
99+
100+
x_sorted <- sort(x_letras)
101+
y_sorted <- sort(y_letras)
102+
103+
x_unique <- unique(x_sorted)
104+
y_unique <- unique(y_sorted)
105+
106+
verificar_palindromo <- function(palabra, letras, letras_inv) {
107+
108+
if (all(letras == letras_inv)) {
109+
cat("La palabra", palabra, "es un palíndromo.\n")
110+
} else cat("La palabra", palabra, "no es un palíndromo.\n")
111+
}
112+
113+
verificar_palindromo(x, x_letras, x_inversa)
114+
verificar_palindromo(y, y_letras, y_inversa)
115+
116+
if (length(x_sorted) == length(y_sorted) && all(x_sorted == y_sorted)) {
117+
cat("Las palabras", x, "y", y, "son anagramas.\n")
118+
} else cat("Las palabras", x, "y", y, "no son anagramas.\n")
119+
120+
verificar_isograma <- function(palabra, letras_ord, letras_uniq) {
121+
122+
if (length(letras_ord) == length(letras_uniq)) {
123+
cat("La palabra", palabra, "es un isograma.\n")
124+
} else if (sum(table(letras_ord)) / length(table(letras_ord)) == table(letras_ord)[[1]]) {
125+
cat("La palabra", palabra, "es un isograma.\n")
126+
} else cat("La palabra", palabra, "no es un isograma.\n")
127+
}
128+
129+
verificar_isograma(x, x_sorted, x_unique)
130+
verificar_isograma(y, y_sorted, y_unique)
131+
}
132+
133+
analizar_palabras("Roma", "Amor")
134+
analizar_palabras("arepera", "salas")
135+

0 commit comments

Comments
 (0)