Neste exercício não pode usar definições por compreensão nem métodos. As únicas construções sobre listas permitidas são: lista vazia ([]
), acesso aos elementos da lista por posição (lista[posição]
), seccionamento da lista (lista[posição:posição]
), comparação com a lista vazia (==[]
) ou comprimento da lista (len(lista)
), e concatenação (+
).
Dado um número natural n
, usamos ddif(n)
para denotar a diferença entre o maior e o menor dígito que ocorrem na representação decimal de n
. Por exemplo, ddif(1353)
é 4=5-1, enquanto ddif(90)
é 9=9-0. Obviamente, ddif(n)
é 0 precisamente quando todos os dígitos de n
são iguais.
Defina recursivamente em Python a função ddif
, bem como uma outra função ddifbig
que dada uma lista w
de números naturais e um valor k
devolve a sublista contendo apenas os valores em w
cuja diferença entre o maior e o menor dígito seja maior do que k
. Por exemplo, ddifbig([1353,244,90,558],3)
deverá ser [1353,90]
pois ddif(244)
é apenas 2, e ddif(558)
é apenas 3.
def update(extr,n):
if n<extr[0]:
return [n,extr[1]]
elif n>extr[1]:
return [extr[0],n]
else:
return extr
def extremos(n):
if n<10:
return [n,n]
else:
return update(extremos(n//10),n%10)
def dif(p):
return p[1]-p[0]
def ddif(n):
return dif(extremos(n))
### ou em alternativa (mais simples, mas menos eficiente)
def dmax(n):
if n<10:
return n
else:
return max(n%10,dmax(n//10))
def dmin(n):
if n<10:
return n
else:
return min(n%10,dmax(n//10))
def ddif(n):
return dmax(n)-dmin(n)
### e finalmente
def ddifbig(w,k):
if w==[]:
return []
elif ddif(w[0])>k:
return [w[0]]+ddifbig(w[1:],k)
else:
return ddifbig(w[1:],k)
Neste exercício não pode usar definições por compreensão nem métodos. As únicas construções sobre listas permitidas são: lista vazia ([]
), acesso aos elementos da lista por posição (lista[posição]
), seccionamento da lista (lista[posição:posição]
), comparação com a lista vazia (==[]
) ou comprimento da lista (len(lista)
), e concatenação (+
).
Dado um número natural n
, usamos ddif(n)
para denotar a diferença entre o maior e o menor dígito que ocorrem na representação decimal de n
. Por exemplo, ddif(1335)
é 4=5-1, enquanto ddif(80)
é 8=8-0. Obviamente, ddif(n)
é 0 precisamente quando todos os dígitos de n
são iguais.
Defina recursivamente em Python a função ddif
, bem como uma outra função maiorddif
que dada uma lista não-vazia w
de números naturais devolva o valor (ou um dos valores) em w
com maior diferença entre o maior e o menor dígito. Por exemplo, maiorddif([1335,919,80,312])
deverá devolver 919
ou 80
(pois ddif(919)
também é 8), já que ddif(1335)
é apenas 4, e ddif(312)
é apenas 2.
### como acima, e também
def maiorddif(w):
assert w!=[]
if len(w)==1:
return w[0]
elif ddif(w[0])<ddif(w[1]):
return maiorddif(w[1:])
else:
return maiorddif([w[0]]+w[2:])
Neste exercício não pode usar definições por compreensão nem métodos. As únicas construções sobre listas permitidas são: lista vazia ([]
), acesso aos elementos da lista por posição (lista[posição]
), seccionamento da lista (lista[posição:posição]
), comparação com a lista vazia (==[]
) ou comprimento da lista (len(lista)
), e concatenação (+
).
Dado um número natural n
, usamos ddif(n)
para denotar a diferença entre o maior e o menor dígito que ocorrem na representação decimal de n
. Por exemplo, ddif(1353)
é 4=5-1, enquanto ddif(90)
é 9=9-0. Obviamente, ddif(n)
é 0 precisamente quando todos os dígitos de n
são iguais.
Defina recursivamente em Python a função ddif
, bem como uma outra função ddifsmall
que dada uma lista w
de números naturais e um valor k
devolve a sublista contendo apenas os valores em w
cuja diferença entre o maior e o menor dígito seja menor do que k
. Por exemplo, ddifsmall([1353,254,90,575],4)
deverá ser [254,575]
pois ddif(254)
é apenas 3, e ddif(575)
é apenas 2.
### como acima, e também
def ddifsmall(w,k):
if w==[]:
return []
elif ddif(w[0])<k:
return [w[0]]+ddifsmall(w[1:],k)
else:
return ddifsmall(w[1:],k)
Neste exercício não pode usar definições por compreensão nem métodos. As únicas construções sobre listas permitidas são: lista vazia ([]
), acesso aos elementos da lista por posição (lista[posição]
), seccionamento da lista (lista[posição:posição]
), comparação com a lista vazia (==[]
) ou comprimento da lista (len(lista)
), e concatenação (+
).
Dado um número natural n
, usamos ddif(n)
para denotar a diferença entre o maior e o menor dígito que ocorrem na representação decimal de n
. Por exemplo, ddif(1323)
é 2=3-1, enquanto ddif(80)
é 8=8-0. Obviamente, ddif(n)
é 0 precisamente quando todos os dígitos de n
são iguais.
Defina recursivamente em Python a função ddif
, bem como uma outra função menorddif
que dada uma lista não-vazia w
de números naturais devolva o valor (ou um dos valores) em w
com menor diferença entre o maior e o menor dígito. Por exemplo, menorddif([1323,949,80,779])
deverá devolver 1323
ou 779
(pois ddif(779)
também é 2), já que ddif(80)
é 8, e ddif(949)
é 5.
### como acima, e também
def menorddif(w):
assert w!=[]
if len(w)==1:
return w[0]
elif ddif(w[0])>ddif(w[1]):
return menorddif(w[1:])
else:
return menorddif([w[0]]+w[2:])