Skip to content

Commit 69c6126

Browse files
authored
Merge pull request mouredev#6399 from RianoJNicolas/dev_scala
#4 - Scala
2 parents 4fc17da + c1ffefd commit 69c6126

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
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("\nRecorrido 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"\nSaludo 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

Comments
 (0)