Skip to content

Commit 21c3865

Browse files
Add python solutions (#3)
* Add python solutions * Refactor logic for negative numbers
1 parent c7a7201 commit 21c3865

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

solutions/python/challenge_1.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# 1. Receber input do usuário
2+
# input é recebido como string
3+
num = input("input: ")
4+
5+
# 2. Verificar se o input é um número inteiro
6+
try:
7+
# Tentar converter o input para inteiro
8+
int(num)
9+
except ValueError:
10+
# Em caso de erro sair do programa
11+
print("Introduza um número inteiro")
12+
exit(0)
13+
14+
15+
#3. Obter o valor absoluto do número (em caso de negativos)
16+
num = str(abs(int(num)))
17+
18+
19+
# 4. Percorrer cada 'digito' do número e acumular a soma
20+
# dentro da var 'result'
21+
result = 0
22+
23+
for digit in num:
24+
# cada digito é primeiro convertido para int e
25+
#só depois é acrescentado à soma
26+
result += int(digit)
27+
28+
# 5. Mostrar resultado ao usuário
29+
print(f"output: {result}")

solutions/python/challenge_4.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Challenge #4 - Probabilidade
2+
#Constantes que representam as diferentes faces da moeda
3+
T = "T"
4+
H = "H"
5+
6+
# função para calcular todas permutações possíveis
7+
# Todas as permutações são postas num array
8+
#limit: é o número de lançamentos e limita o
9+
# tamanho da string. Ex: p/ limit = 2, as strings geradas são
10+
# HT,TT,TH,HH
11+
# perms: é o array que armazena as permutações
12+
# current: armazena o estado da string que formará a
13+
#próxima permutação. inicialmente é uma string vazia
14+
#depth: controla a profundidade da recursão
15+
def get_perms(limit,perms,current="",depth=0):
16+
# 1. Verificar se atingimos o caso base da recursão
17+
if depth == limit:
18+
#se sim, a string actual é uma permutação válida
19+
# e é adicionada ao array de permutações
20+
perms.append(current)
21+
return
22+
23+
# 2. Chamar de forma recursiva get_perms modificando
24+
# a string actual com as variações possíveis (T e H).
25+
get_perms(limit,perms,current+T,depth+1)
26+
get_perms(limit,perms,current+H,depth+1)
27+
28+
29+
# 1. receber o número de lançamentos do usuário
30+
flips = int(input("input: "))
31+
32+
33+
# 2. Gerar todas as permutações de 'H' e 'T' com base no número de
34+
# lançamentos. Ex: para flips = 3 teriamos: TTT, THT, TTH ...
35+
#o número total de resultados é sempre 2^flips
36+
results = []
37+
#a função get_perms gera os resultados e adiciona-os ao array
38+
get_perms(flips,results)
39+
40+
41+
# 3. Contar o número de resultados com dois 'H's
42+
#seguidos
43+
count = 0
44+
45+
for result in results:
46+
#verifica cada resultado
47+
# e procura pelo padrão 'HH' em qualquer
48+
# posição na string
49+
if "HH" in result:
50+
count +=1
51+
52+
# 4. Calcular e mostrar a probabilidade para o usuário
53+
# Lembrando que a probabilidade = x/y
54+
# onde x -> acontecimentos favoráveis (quantidade de resultados sem 'HH') = tamanho(resultados) - quantidade_de_res_com_HH
55+
# onde y -> todos acontecimentos possíveis (quantidade de resultados) = tamanho(resultados)
56+
print(f"ouput: {(len(results)-count)/len(results)}")

0 commit comments

Comments
 (0)