-
Notifications
You must be signed in to change notification settings - Fork 1
/
gaveta_magica_multiplicador_moedas.py
88 lines (63 loc) · 2.38 KB
/
gaveta_magica_multiplicador_moedas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
"""
26/06/2023
Fonte: Desafio Técnico - Márcio Conrado
Enunciado: Gaveta Mágica
Considere que vocé tem uma gaveta magica em que vocé pode guardar moedas por um
tempo. Essa é uma gaveta muito segura, não se preocupe que você nao vai perder suas,
moedas!
Uma vez guardadas, as moedas se multiplicam. Ao retira-las, algumas somem. Após
observar por algum tempo você acredita ter descoberto como a magica funciona:
- Uma moeda sozinha que ficar um dia guardada na gaveta gera uma moeda
adicional no dia seguinte
- Para cada moeda retirada, uma outra deve sumir
Como vocé é um programador, quer oferecer um aplicativo que permite que qualquer
pessoa saiba quantas moedas terá ao fim de um período de uso da gaveta magica.
Crie uma função que recebe como entrada um vetor de moedas que sãoo inseridas e
removidas da gaveta, e devolve o valor final de moedas resultante no dia seguinte ao dia final indicado no vetor.
Exemplo de entrada [1, -1, 2, 0, 4]
[{1,(2)}, {-1 (1)(0)},{2},{(4),0(8),4, 12(24),]
CAIXA = [1,2,1,0,2,4,8,12,24]
Significado
- Dia 0: uma moeda guardada
- Dia 1: uma moeda retirada
- Dia 2: duas moedas guardadas
- Dia 3: nenhuma moeda guardada ou retirada
- Dia 4: quatro moedas guardadas
- Dia 5 = dia final.
Considere que o maximo de moedas é retirado no último dia.
Participantes:
- Márcio Conrado
- Luiz Carlos
- Gregorio
- Álisson
- Cássio
- David
"""
import pytest
def saldo_gaveta_magica(operacoes):
saldo = 0
resultado = [operacoes[0]]
for transacao in operacoes:
if transacao < 0:
saldo = transacao * 2 + saldo
else:
saldo += transacao
saldo = saldo * 2
resultado.append(saldo)
return resultado[-1]
def test_saldo_gaveta_magica():
assert saldo_gaveta_magica([1]) == 2
assert saldo_gaveta_magica([1, 1]) == 6
assert saldo_gaveta_magica([1, 1, 1]) == 14
assert saldo_gaveta_magica([1, 2]) == 8
assert saldo_gaveta_magica([1, 0]) == 4
assert saldo_gaveta_magica([0, 1]) == 2
assert saldo_gaveta_magica([1, 2, 3]) == 22
assert saldo_gaveta_magica([3, 2, 1]) == 34
assert saldo_gaveta_magica([1, -1]) == 0
assert saldo_gaveta_magica([3,-1]) == 4
assert saldo_gaveta_magica([1, -1, 2, 0, 4]) == 24
assert saldo_gaveta_magica([-1,0]) == -4
assert saldo_gaveta_magica([-1,0,4]) == 0
if __name__ == "__main__":
pytest.main(['-svv', __file__])