From 3b7e24d55c552120383632a005d349f5521bb71d Mon Sep 17 00:00:00 2001 From: Allber Fellype Soares Ferreira Date: Fri, 13 Dec 2024 23:20:56 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20Conclus=C3=A3o=20do=20Desafio=2012=20-?= =?UTF-8?q?=20@JamesStewart-314=20(#1164)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 <133912146+JamesStewart314@users.noreply.github.com> --- desafio-12/JamesStewart-314/python/.valid | 1 + desafio-12/JamesStewart-314/python/README.md | 53 +++++++++++++++++++ .../JamesStewart-314/python/solution.py | 20 +++++++ 3 files changed, 74 insertions(+) create mode 100644 desafio-12/JamesStewart-314/python/.valid create mode 100644 desafio-12/JamesStewart-314/python/README.md create mode 100644 desafio-12/JamesStewart-314/python/solution.py diff --git a/desafio-12/JamesStewart-314/python/.valid b/desafio-12/JamesStewart-314/python/.valid new file mode 100644 index 000000000..66da1cc23 --- /dev/null +++ b/desafio-12/JamesStewart-314/python/.valid @@ -0,0 +1 @@ +19be90074b12cd8b62d62e089af55d880 diff --git a/desafio-12/JamesStewart-314/python/README.md b/desafio-12/JamesStewart-314/python/README.md new file mode 100644 index 000000000..a437c03b2 --- /dev/null +++ b/desafio-12/JamesStewart-314/python/README.md @@ -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 + Python.org + 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 `; +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. diff --git a/desafio-12/JamesStewart-314/python/solution.py b/desafio-12/JamesStewart-314/python/solution.py new file mode 100644 index 000000000..e41d424e6 --- /dev/null +++ b/desafio-12/JamesStewart-314/python/solution.py @@ -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()