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.

Cómo puedo obtener los elementos pares positivos en Scheme.

Estoy intentando obtener todos los elementos pares y positivos en Scheme.

Tengo el siguiente código:

(define (getVals lis)
  (cond
    ((null? lis) lis)
    ((and (> (car lis) 0) (even? (car lis)))
     (cons (car lis) (getVals (cdr lis))))
    (else (getVals (cdr lis)))
))

Para verificar mi código estoy usando:

(getVals '(2 -2 4 6 5))

Lo cual debería generar una nueva lista con números positivos y pares (2 4 6).

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Estimado/a,

    Su código se ve casi correcto. Sin embargo, hay un pequeño error en la declaración “cons” que está causando que la función no cree una nueva lista con los elementos positivos y pares.

    Aquí está el código corregido:

    (define (getVals lis)
      (cond
        ((null? lis) lis)
        ((and (> (car lis) 0) (even? (car lis))) 
         (cons (car lis) (getVals (cdr lis))))
        (else (getVals (cdr lis)))
      )
    )
    

    En lugar de usar “cons (getVals (cdr lis))” para agregar los elementos positivos y pares a la nueva lista, directamente cons el elemento actual con la llamada recursiva a “getVals” para el resto de la lista. Además, utilizamos “and” en el predicado para asegurarnos de que ambas condiciones se cumplan.

    Ahora puede probar su código con:

    (getVals '(2 -2 4 6 5))
    

    Esto debería devolver la lista (2 4 6) como se esperaba.

    ¡Espero que esto ayude!

Comments are closed.