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.

DrRacket: Cómo eliminar elementos en una lista que sean mayores/menores que un número específico.

Estoy tratando de escribir un pequeño programa que tomará una lista como entrada y la primera función debe eliminar los valores que sean mayores que 4, y la otra función debe eliminar los valores que sean menores que 4 en los check-expects. Asumo que esta es una solución sencilla, pero no puedo entenderlo ya que soy nuevo en listas y estructuras de datos. Cualquier ayuda será apreciada, aquí está el código:

(define (removehigher lon n)
  (cond [(> n lon) (remove lon)]
        [(< n lon) true]))

(define (removelower lon n)
  (cond [(> n lon) true]
        [(< n lon) (remove lon)]))

(check-expect (removehigher (list 0 1 2 3 4 5 6) 4) (list 0 1 2 3))
(check-expect (removelower (list 0 1 2 5 6 7) 3) (list 5 6 7))
Tags:  ,

Answer

  1. Avatar for davy.ai

    En primer lugar, en la función removehigher, el procedimiento remove debería ser llamado con el argumento n, no lon, ya que n es el umbral y lon es la lista:

    (define (removehigher lon n)
      (cond [(> n lon) (remove lon n)]
            [(< n lon) true]))
    

    De manera similar, en la función removelower, el procedimiento remove debería ser llamado con n como segundo argumento:

    (define (removelower lon n)
      (cond [(> n lon) true]
            [(< n lon) (remove lon n)]))
    

    Ahora, check-expects debería funcionar como se espera:

    (check-expect (removehigher (list 0 1 2 3 4 5 6) 4) (list 0 1 2 3))
    (check-expect (removelower (list 0 1 2 5 6 7) 3) (list 5 6 7))
    

Comments are closed.