reto08 terminado
This commit is contained in:
8
ejercicios/reto09/Cargo.toml
Normal file
8
ejercicios/reto09/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "reto09"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
78
ejercicios/reto09/src/main.rs
Normal file
78
ejercicios/reto09/src/main.rs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Crea 3 funciones, cada una encargada de detectar si una cadena de
|
||||||
|
* texto es un heterograma, un isograma o un pangrama.
|
||||||
|
* - Debes buscar la definición de cada uno de estos términos.
|
||||||
|
* Heterograma: un conjunto de caracteres que no se repiten.
|
||||||
|
* Isograma: palabra sin letras repetidas (como ambidiestramente ) o, más ampliamente, una palabra en la que las letras aparecen el mismo número de veces.
|
||||||
|
* Pangrama: texto que contiene todas las letras del abecedario. Tengo un libro de papiroflexia sobre las hazañas y aventuras de Don Quijote de la Mancha en Kuwait.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fn esheterograma(cadena: &str) -> bool {
|
||||||
|
let vectorcadena: Vec<char> = cadena.chars().collect();
|
||||||
|
let mut vectorvacio: Vec<char> = vec![];
|
||||||
|
for letra in vectorcadena.iter() {
|
||||||
|
if vectorvacio.contains(letra) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
vectorvacio.push(*letra);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn esisograma(cadena: &str) -> bool {
|
||||||
|
let vectorcadena: Vec<char> = cadena.chars().collect();
|
||||||
|
let mut vectorcadenasinrepetir: Vec<char> = vec![];
|
||||||
|
let mut vectorvacio: Vec<i32> = vec![];
|
||||||
|
for letra in vectorcadena.iter() {
|
||||||
|
if !vectorcadenasinrepetir.contains(letra) {
|
||||||
|
// si no está se le añade un 1 al vector de numeros
|
||||||
|
vectorcadenasinrepetir.push(*letra);
|
||||||
|
vectorvacio.push(1);
|
||||||
|
} else {
|
||||||
|
// si está hay que buscarla y sumarle un 1 al vector de numeros
|
||||||
|
let index = vectorcadenasinrepetir
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.find(|&r| r.1.to_string() == letra.to_string())
|
||||||
|
.unwrap()
|
||||||
|
.0;
|
||||||
|
vectorvacio[index] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for i in vectorvacio.iter() {
|
||||||
|
if i != &vectorvacio[0] {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn espangrama(cadena: &str) -> bool {
|
||||||
|
let vectorcadena: Vec<char> = cadena.chars().collect();
|
||||||
|
let mut vectorabecedario: Vec<char> = [
|
||||||
|
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q',
|
||||||
|
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||||
|
]
|
||||||
|
.to_vec();
|
||||||
|
for letra in vectorcadena.iter() {
|
||||||
|
if !vectorabecedario.contains(letra) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
let index = vectorabecedario
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.find(|&r| r.1.to_string() == letra.to_string())
|
||||||
|
.unwrap()
|
||||||
|
.0;
|
||||||
|
vectorabecedario.remove(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("{}", esheterograma("mis coj"));
|
||||||
|
println!("{}", esisograma("aabbccdgged"));
|
||||||
|
println!("{}", espangrama("abcdefghijklmnñopqrstuwxyza"));
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user