[tspl 2.2.4] O resultado da avaliação da expressão (car (car '((a b) (c d))))
é a
. Determine que composição de car
e cdr
aplicada a '((a b) (c d))
resulta em b
, c
e d
.
[tspl 2.2.6] Desenhe a estrutura interna produzida pela expressão
(cons 1 (cons '(2 . ((3) . ())) (cons '(()) (cons 4 5))))
[tspl 2.3.1] Defina os passos necessários para avaliar a expressão
((car (cdr (list + - * /))) 17 5)
[pp99 1.01] Defina uma função que retorne o último elemento de uma lista.
[pp99 1.02] Defina uma função que encontre o $k$-ésimo elemento de uma lista. Exemplo
> (list-ref '(10 40 70 20) 2)
70
[pp99 1.06] Defina uma função que determine se uma lista é palíndromo.
[pp99 1.07] Defina uma função que aplaine (do inglês flatten) uma lista de listas aninhadas. Exemplo
> (flatten '(1 (2 (3 4) 5)))
'(1 2 3 4 5)
Dica: use as funções list?
e append
.
[pp99 1.10] Defina uma função que remova os elementos consecutivos repetidos de uma lista. Exemplo
> (remove-duplicates '(1 1 1 1 2 3 3 4 4 5 5 5))
'(1 2 3 4 5)
[pp99 1.18] Defina uma função que crie uma sub-lista de uma lista com um intervalo especificado. Exemplo
> (sub-list '(10 20 30 40 50) 1 4)
'(20 30 40)
[pp99 1.16] Defina uma função que rotacione $n$ posições a esquerda de uma lista. Exemplo
> (rotate-left '(10 20 30 40 50) 2)
'(30 40 50 10 20)
[pp99 2.02] Defina uma função que encontre os fatores primos de um número inteiro positivo. Exemplo
> (prime-factors 315)
'(3 3 5 7)
Defina uma função que faça a concatenação de duas listas. Exemplo
> (append '(1 2 3) '(4 5 6))
'(1 2 3 4 5 6)
Defina uma função que faça a ordenação de uma lista usando o algoritmo mergesort.
> (mergesort '(7 3 6 1 2 5 4))
'(1 2 3 4 5 6 7)
Defina uma função que remova o elemento de uma posição específica de uma lista.
> (remove-at '(3 6 1 2) 2)
'(3 6 2)
Defina uma função que insira um elemento em uma posição específica de uma lista.
> (insert-at '(3 6 1 2) 5 2)
'(3 6 5 1 2)