1
+ object Source {
2
+ def main (args : Array [String ]): Unit = {
3
+ // OPERACIONES CON CADENAS DE CARACTERES
4
+
5
+ // 1. Asignacion
6
+ val saludo = " Hola, "
7
+ val nombre = " Mr X"
8
+
9
+ // 2. Concatenacion
10
+ val final_saludo_1 = saludo + nombre
11
+ println(s " ${final_saludo_1}\n " )
12
+ val final_saludo_2 = saludo.concat(nombre)
13
+ println(s " ${final_saludo_2}\n " )
14
+
15
+ // 3. Operaciones "Aritmeticas"
16
+ val saludoTotal = saludo* 3
17
+ println(s " ${saludoTotal}\n " )
18
+
19
+ // 4. Subcadenas
20
+ val secuencia = " 123456789"
21
+ val primerSub = secuencia.substring(0 , 5 )
22
+ val secondSub = secuencia.substring(3 )
23
+ val thirdSub = secuencia.substring(2 ,6 )
24
+ println(s " Primera subcadena $primerSub" ) // Se toma 12345
25
+ println(s " Segunda subcadena $secondSub" ) // Se toma 456789
26
+ println(s " Tercera subcadena $thirdSub \n " ) // Se toma 3456
27
+
28
+ // 5. Indexacion
29
+ val char1 = final_saludo_1(1 )
30
+ val char2 = final_saludo_1(2 )
31
+ val char3 = final_saludo_1(3 )
32
+ println(s " caracter de saludo 1 = $char1" )
33
+ println(s " caracter de saludo 2 = $char2" )
34
+ println(s " caracter de saludo 3 = $char3 \n " )
35
+
36
+ // 6. Longitud
37
+ val lenghtStr = final_saludo_1.length()
38
+ println(s " Longitud del saludo es $lenghtStr \n " )
39
+
40
+ // 7. Recorrido
41
+ println(" Recorrido de Str - Forma 1: Ciclo for" )
42
+ for (caracter <- final_saludo_1) {
43
+ println(s " Recorriendo el String $final_saludo_1 -> $caracter" )
44
+ }
45
+ println(" \n Recorrido de Str - Forma 2: Metodo foreach" )
46
+ final_saludo_1.foreach {
47
+ caracter => println(s " Caracter: $caracter" )
48
+ }
49
+
50
+ // 8. Mayusculas y Minusculas
51
+ val salMayus = final_saludo_1.toUpperCase()
52
+ val salMinus = salMayus.toLowerCase()
53
+ println(s " \n Saludo en Mayuscula -> $salMayus" )
54
+ println(s " Saludo en Minuscula -> $salMinus \n " )
55
+
56
+ // 9. Reemplazo
57
+ val newName = final_saludo_1.replace(" X" , " Z" )
58
+ println(s " Nuevo saludo = $newName" )
59
+ val newName2 = final_saludo_1.replaceAll(" Mr X" , " Señor X" )
60
+ println(s " Nuevo saludo = $newName2 \n " )
61
+
62
+ // 10. Division o Separacion
63
+ println(s " Frase Inicial -> $final_saludo_1" )
64
+ val divSal = final_saludo_1.split(" ," )
65
+ println(s " Resultado de dividir -> ${divSal.toList} \n " )
66
+
67
+ // 11. Union
68
+ val myStringList = List (" uno" , " dos" , " tres" , " cuatro" )
69
+ println(s " Lista de Strings -> $myStringList.toString() " )
70
+ val myString = myStringList.mkString(" , " )
71
+ println(s " Strings unidos -> $myString \n " )
72
+
73
+ // 12. Verificacion/Contiene
74
+ val word = " scala"
75
+ val subChar = " al"
76
+ println(s " String Base -> ${word}" )
77
+ if (word.contains(subChar)) {
78
+ println(s " la palabra ' ${word}' posee la cadena ' ${subChar}' \n " )
79
+ }
80
+ else {
81
+ println(s " la palabra ' ${word}' NO posee la cadena ' ${subChar}' \n " )
82
+ }
83
+
84
+ // 13. Eliminar espacios en Blanco
85
+ val saludoNoTrim = " Hola, Mr X.... "
86
+ println(s " Sin trimeo -> ' ${saludoNoTrim}' " )
87
+ val saludoTrim = saludoNoTrim.trim
88
+ println(s " Con trimeo -> ' ${saludoTrim}' \n " )
89
+
90
+ // DIFICULTAD EXTRA
91
+ def palindromo (palabra : String ): Boolean = {
92
+ var palabra_inver = palabra.trim.toLowerCase().reverse
93
+ val numeros = Seq (" 0" , " 1" , " 2" , " 3" , " 4" , " 5" , " 6" , " 7" , " 8" , " 9" )
94
+
95
+ try {
96
+ for (index <- numeros) {
97
+ if (palabra.contains(index)) {
98
+ throw new IllegalArgumentException (" Por favor ingresa una palabra, por lo menos hay un número dentro de ella" )
99
+ }
100
+ }
101
+ return palabra_inver == palabra
102
+ }
103
+ catch {
104
+ case e : IllegalArgumentException => println(s " Error: ${e.getMessage}" )
105
+ return false
106
+ }
107
+ }
108
+
109
+ def anagrama (palabra1 : String , palabra2 : String ): Boolean = {
110
+ val palabra1_clean = palabra1.trim.toLowerCase()
111
+ val palabra2_clean = palabra2.trim.toLowerCase()
112
+ // organizo en orden alfabetico los caracteres del String en otro String
113
+ val palabra1_sorted = palabra1_clean.toCharArray.sorted.mkString(" " )
114
+ val palabra2_sorted = palabra2_clean.toCharArray.sorted.mkString(" " )
115
+ return palabra1_sorted == palabra2_sorted
116
+ }
117
+
118
+ def isograma (palabra : String ): Boolean = {
119
+ val palabra_clean = palabra.trim.toLowerCase()
120
+ // Crear un set vacio
121
+ var set_letters = Set [Char ]()
122
+ for (letter <- palabra_clean) {
123
+ if (set_letters.contains(letter)) {
124
+ println(s " Se repite la letra ${letter}" )
125
+ return false
126
+ }
127
+ else {
128
+ set_letters + letter
129
+ }
130
+ }
131
+ return true
132
+ }
133
+
134
+ def run (): Unit = {
135
+ println(" Ingresa la primer palabra: " )
136
+ val palabra1 = scala.io.StdIn .readLine()
137
+
138
+ println(" Ingresa la segunda palabra: " )
139
+ val palabra2 = scala.io.StdIn .readLine()
140
+
141
+ // Seccion Palindromo
142
+ val es_palindromo1 = palindromo(palabra1)
143
+ val es_palindromo2 = palindromo(palabra2)
144
+
145
+ if (es_palindromo1) {
146
+ println(s " ${palabra1}, es palindroma " )
147
+ }
148
+ else {
149
+ println(s " ${palabra1}, NO es palindroma " )
150
+ }
151
+
152
+ if (es_palindromo2) {
153
+ println(s " ${palabra2}, es palindroma " )
154
+ }
155
+ else {
156
+ println(s " ${palabra2}, NO es palindroma " )
157
+ }
158
+
159
+ // Seccion Anagrama
160
+ val es_anagrama = anagrama(palabra1, palabra2)
161
+ if (es_anagrama) {
162
+ println(s " ${palabra1} y ${palabra2} son anagramas " )
163
+ }
164
+ else {
165
+ println(s " ${palabra1} y ${palabra2} NO son anagramas " )
166
+ }
167
+
168
+ // Seccion Isograma
169
+ val es_isograma1 = isograma(palabra1)
170
+ val es_isograma2 = isograma(palabra2)
171
+
172
+ if (es_isograma1) {
173
+ println(s " ${palabra1}, si es isograma " )
174
+ }
175
+ else {
176
+ println(s " ${palabra1}, NO es isograma " )
177
+ }
178
+
179
+ if (es_isograma2) {
180
+ println(s " ${palabra2}, si es isograma " )
181
+ }
182
+ else {
183
+ println(s " ${palabra2}, NO es isograma " )
184
+ }
185
+ }
186
+
187
+ run()
188
+ }
189
+ }
0 commit comments