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