reto08 terminado

This commit is contained in:
2023-06-23 11:06:07 +02:00
parent 05a39284f9
commit e5271ed247
2 changed files with 86 additions and 0 deletions

View 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]

View 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"));
}