Replicar elementos de lista N vezes em Scheme?

1 resposta
scheme
Andre_Dorea_Mendes

Preciso desenvolver uma função Scheme que replique os valores de uma lista N vezes passado como parâmetro algo como (replicarlista '(1 2 3) '3) que retornaria '(1 1 1 2 2 2 3 3 3), consegui com este codigo duplicar um lista

(define (duplicarLista lis)
 (cond
   ((null? lis) '())
   (else (append (list (car lis) (car lis)) (duplicarLista (cdr lis))))
   )
)

consegui replicar n X o primeiro valor da lista com:
(define (replicar lis n)
  (define m n)
  (cond
    ((null? lis) '())
    ((> n 0) (cons (car lis) (replicar  lis (- n 1))))
    ;(else (replicar (cdr lis) m))
  )
)

mas não consigo aplicar a recursividade neste caso para fazer o mesmo aos outros valores da lista inicial

1 Resposta

Thiago_Nogueira

Resolvi essa questão criando um função que dentro da outra a função pai guadará o contexto original e a outra que será feito a replicação

(define (replicate argsList argstimes)

(define (replicateArgs lst times)

(cond

((null? lst) '())

((> times 0) (cons (car lst) (replicateArgs lst (- times 1))))

(else

(append (replicateArgs (cdr lst) argstimes)))

)

)

(replicateArgs argsList argstimes)

)
Criado 28 de março de 2017
Ultima resposta 23 de mar. de 2019
Respostas 1
Participantes 2