Skip to content

Commit

Permalink
feat: Conclusão do Desafio 12 - @JamesStewart-314 (#1164)
Browse files Browse the repository at this point in the history
* feat: Conclusão do Desafio 12 - @JamesStewart-314

* Correção das instruções presentes no README

* Adição de nova linha ao final do arquivo

---------

Co-authored-by: Allber Fellype <[email protected]>
  • Loading branch information
JamesStewart-314 and Allber Fellype authored Dec 14, 2024
1 parent 430e73b commit 3b7e24d
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
1 change: 1 addition & 0 deletions desafio-12/JamesStewart-314/python/.valid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
19be90074b12cd8b62d62e089af55d880
53 changes: 53 additions & 0 deletions desafio-12/JamesStewart-314/python/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Desafio 12 - Potências de 2
![Python](https://img.shields.io/badge/Python-512BD4?style=flat&logo=python&logoColor=yellow)
![VS Code](https://img.shields.io/badge/VScode-007ACC?style=flat&logo=visualstudiocode&logoColor=white)

## Descrição do Projeto:
O objetivo deste projeto consiste em ler números representados em base decimal presentes
no arquivo `d12.txt`, no qual está disponível para download no site [OsProgramadores](https://osprogramadores.com/), e exibir na saída, para cada número, o seu valor decimal,
`true` caso o número seja uma potência de $2$ ou `false` caso contrário e um terceiro valor que corresponde ao logarítmo na base $2$ do número avaliado se ele constituir uma potência de $2$.

## Exemplo do Conteúdo Lido do Arquivo:
```
1
140
128
137
65535
65536
17179869184
```

## Saídas Esperadas:
```
1 true 0
140 false
128 true 7
137 false
65535 false
65536 true 16
17179869184 true 34
```

## Requisitos para Execução
- Possuir um ambiente virtual Python instalado localmente em sua máquina com a
versão `3.10` ou superior.
Para baixar esta e outras versões, visite o site
<a target="_blank" href="https://www.python.org/downloads/" style="color: lightgreen">Python.org</a>
e siga os procedimentos de instalação para o
seu sistema operacional.
Após a instalação, abra o terminal de comando em sua máquina e digite o comando
`python --version`. O comando deverá informar a versão atual do interpretador de
Python caso o download tenha sido feito corretamente. Certifique-se de possuir uma
versão igual ou superior à `3.10`, caso contrário, o código não funcionará.
## Instruções para Executar o Código
- Certificando-se de ter instalado corretamente o `Python` em sua
máquina, execute os seguintes comandos:
1. Abra o terminal e navegue até a pasta em que deseja copiar este repositório com o
comando `cd <caminho_absoluto_do_diretótio>`;
2. Em seguida, copie e cole o seguinte código:
`git clone https://github.com/OsProgramadores/op-desafios.git`;
3. Navegue até a pasta contendo o arquivo `solution.py` na árvore do repositório - se
necessário, utilize o comando `cd ".\op-desafios\desafio-12\JamesStewart-314"`
4. Execute o script `"solution.py"` com o comando `python solution.py`
e os resultados deverão ser impressos de maneira formatada na CLI.
20 changes: 20 additions & 0 deletions desafio-12/JamesStewart-314/python/solution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import os
import math
from typing import TextIO

def is_power_of_two(x: int) -> bool:
return x > 0 and not x & (x - 1)

if __name__ == '__main__':
try:
numbers_file: TextIO = open(os.path.join(os.path.dirname(__file__), "d12.txt"), 'r')
except FileNotFoundError as error:
raise Exception(f"Error: Could open file \'{numbers_file}\'.") from error

for raw_number in numbers_file:
formatted_number: int = int(raw_number.rstrip())
is_valid_power: bool = is_power_of_two(formatted_number)
print(formatted_number, str(is_valid_power).lower(), end=' ')
if is_valid_power:
print(int(math.log2(formatted_number)), end='')
print()

0 comments on commit 3b7e24d

Please sign in to comment.