es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rust: verificar si dos elementos en un Vec cumplen una condición.

Dado un Vec así:

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?

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, esta solución es viable. Para iterar a través de contents dentro del bloque any, puedes usar el método into_iter() para crear un iterador sobre los elementos de contents. Después, puedes usar el método any para comprobar si alguno de los elementos en el iterador satisface la condición. El código se vería así:

    “`
    fn check_for_factors(contents: Vec, target: isize) -> bool {
    contents
    .into_iter()
    .any(|&x| contents.iter().any(|&y| x + y == target))
    }

    check_for_factors(contents, 300);
    “`

Comments are closed.