(a) Defina recursivamente em Python uma função digocs
que dado um número natural n
e um dígito d
calcula o número de vezes que d
ocorre na representação decimal de n
. Por exemplo, digocs(1521,1)
deverá ser 2.
def digocs(n,d):
if n==d:
return 1
elif n<10:
return 0
elif n%10==d:
return 1+digocs(n//10,d)
else:
return digocs(n//10,d)
(b) Usando digocs
, defina recursivamente em Python uma função empates
que dada uma lista de naturais w
e dígitos d1
e d2
devolva o número de elementos de w
cuja representação decimal tenha igual número de ocorrências de d1
e de d2
. Por exemplo, empates([8,89,11,998],8,9)
deverá ser 2
(correspondendo aos elementos 89
e 11
).
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 (==[]
) e concatenação (+
).
def empates(w,d1,d2):
if w==[]:
return 0
elif digocs(w[0],d1)==digocs(w[0],d2):
return 1+empates(w[1:],d1,d2)
else:
return empates(w[1:],d1,d2)
(a) Defina recursivamente em Python uma função digsmaioreq
que dado um número natural n
e um dígito d
calcula o número de dígitos maiores ou iguais a d
que ocorrem na representação decimal de n
. Por exemplo, digsmaioreq(25315,3)
deverá ser 3.
def digsmaioreq(n,d):
if n<10 and n>=d:
return 1
elif n<10:
return 0
elif n%10>=d:
return 1+digsmaioreq(n//10,d)
else:
return digsmaioreq(n//10,d)
(b) Usando digsmaioreq
, defina recursivamente em Python uma função noves
que dada uma lista de naturais w
devolva a lista com os elementos de w
em cuja representação decimal ocorra o dígito 9
. Por exemplo, noves([1597,0,11,678,9])
deverá ser [1597,9]
.
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 (==[]
) e concatenação (+
).
def noves(w):
if w==[]:
return []
elif digsmaioreq(w[0],9)>0:
return [w[0]]+noves(w[1:])
else:
return noves(w[1:])
(a) Defina recursivamente em Python uma função digdifs
que dado um número natural n
e um dígito d
calcula o número de dígitos da representação decimal de n
que são diferentes de d
. Por exemplo, digdifs(125147,1)
deverá ser 4.
def digdifs(n,d):
if n==d:
return 0
elif n<10:
return 1
elif n%10==d:
return digdifs(n//10,d)
else:
return 1+digdifs(n//10,d)
(b) Usando digdifs
, defina recursivamente em Python uma função digunico
que dada uma lista de naturais w
e um dígito d
devolva a lista com os elementos de w
cuja representação decimal tem todos os dígitos iguais a d
. Por exemplo, digunico([8,809,191,5055,998,88],8)
deverá ser [8, 88]
.
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 (==[]
) e concatenação (+
).
def digunico(w,d):
if w==[]:
return []
elif digdifs(w[0],d)==0:
return [w[0]]+digunico(w[1:],d)
else:
return digunico(w[1:],d)
(a) Defina recursivamente em Python uma função digsmenoreq
que dado um número natural n
e um dígito d
calcula o número de dígitos menores ou iguais a d
que ocorrem na representação decimal de n
. Por exemplo, digsmenoreq(25313,3)
deverá ser 4.
def digsmenoreq(n,d):
if n<=d:
return 1
elif n<10:
return 0
elif n%10<=d:
return 1+digsmenoreq(n//10,d)
else:
return digsmenoreq(n//10,d)
(b) Usando digsmenoreq
, defina recursivamente em Python uma função semzeros
que dada uma lista de naturais w
devolva o número de elementos de w
em cuja representação decimal não ocorra o dígito 0
. Por exemplo, semzeros([111,7,0,20,102])
deverá ser 2
(correspondendo aos elementos 111
e 7
).
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 (==[]
) e concatenação (+
).
def semzeros(w):
if w==[]:
return 0
elif digsmenoreq(w[0],0)==0:
return 1+semzeros(w[1:])
else:
return semzeros(w[1:])