Observações
[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.02] Defina uma função que encontre o $k$-ésimo elemento de uma lista. Exemplo
> (list-ref (list 10 40 70 20) 2)
70
Defina uma função que devolve os $n$ primeiros elementos de uma lista. Exemplo
> (take (list 10 40 70 20 3) 2)
'(10 40)
Defina uma função que remova os $n$ primeiros elementos de uma lista. Exemplo
> (drop (list 10 40 70 20 3) 2)
'(70 20 3)
Defina uma função que remova o elemento de uma posição específica de uma lista.
> (remove-at (list 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 (list 3 6 1 2) 5 2)
'(3 6 5 1 2)
[pp99 1.18] Defina uma função que crie uma sub-lista de uma lista com um intervalo especificado. Exemplo
> (sub-list (list 10 20 30 40 50) 1 4)
'(20 30 40)
Define uma função que inverta o elementos de uma lista. Exemplo
> (reverse (list 10 20 30 40 50))
'(50 40 30 20 10)
[pp99 1.16] Defina uma função que rotacione $n$ posições a esquerda de uma lista. Exemplo
> (rotate-left (list 10 20 30 40 50) 2)
'(30 40 50 10 20)
[pp99 1.01] Defina uma função que devolva o último elemento de uma lista.
[pp99 1.06] Defina uma função que determine se uma lista é palíndromo.
Defina uma função que verifique se um determinado elemento está em uma lista.
Defina uma função que adicione uma constante a cada número de uma lista. Exemplo
> (lista-add-num (list 2 6 1 4 10) 3)
'(5 9 4 7 13)
Defina uma função que remova todos os números pares de uma lista.
Defina uma função que encontre o maior valor de uma lista.
Defina uma função que ordene uma lista de números. (Lembre-se de aplicar a receita de projeto, não tente implementar um método de ordenação qualquer, a receita te levará a implementar um método específico).
Defina uma função que inverta uma lista aninhada. Exemplo
> (reverse* (list (list 2 3) 8 (list 9 (list 10 11) 50) (list 10) 70))
'(70 (10) (50 (11 10) 9) 8 (3 2))
Defina uma função que avalie uma expressão aritmética em Racket que contenha apenas constantes. Cada operação precisa de exatamente 2 parâmetros. Exemplo
> (avalie '(+ (* 3 (- 4 5)) (/ 10 2))
2
Defina uma função que adicione uma constante a cada número de uma árvore binária.
Defina uma função que verifique se uma árvore binária é uma árvore binária de busca. Uma árvore binária de busca tem as seguintes propriedades: 1) A subárvore a esquerda contém valores nos nós menores que o valor no nó raiz. 2) A subárvore a direita contém valores nos nós maiores que o valor no nó raiz. 3) As subárvores a esquerda e a direita também são árvores binárias de busca.
Defina uma função que verifique se um elemento está em uma árvore binária de busca.
[pp99 1.10] Defina uma função que remova os elementos consecutivos repetidos de uma lista. Exemplo
> (remove-duplicates (list 1 1 1 1 2 3 3 4 4 5 5 5))
'(1 2 3 4 5)
Defina uma função que faça a ordenação de uma lista usando o algoritmo mergesort.
> (mergesort (list 7 3 6 1 2 5 4))
'(1 2 3 4 5 6 7)
[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)