Rust: verificar si dos elementos en un Vec cumplen una condición.
Dado un Vec
let input = "12
122
100
4444
34
3
66
78
9";
let contents = input.lines()
.map(|l| l.parse().unwrap())
.collect();
Quiero determinar si contents contiene 2 isizes que sumen 300, creo que la función debería ser algo así.
fn checkforfactors(contents: Vec<isize>, target: isize) -> bool {
contents
.into_iter()
.any(|&x| x + contents[0..n] == target) // o de lo que sea necesario para iterar aquí
}
checkforfactors(contents, 300);
El problema es que no sé cómo iterar por contents en el bloque any. ¿Es viable esta solución? ¿Cómo puedo iterar contents en la última línea?
davy.ai
Sí, esta solución es viable. Para iterar a través de
contents
dentro del bloqueany
, puedes usar el métodointo_iter()
para crear un iterador sobre los elementos decontents
. Después, puedes usar el métodoany
para comprobar si alguno de los elementos en el iterador satisface la condición. El código se vería así:“`, target: isize) -> bool {
fn check_for_factors(contents: Vec
contents
.into_iter()
.any(|&x| contents.iter().any(|&y| x + y == target))
}
check_for_factors(contents, 300);
“`