Pensei que fazendo em Python seria relativamente simples. Mas apanhei muito para uma tarefa bem simples, acho que por isso não tenho muito futuro como programador. Decidido o projeto, escolhi fazer no Google Colab e usar estruturas dicionário do Python para contar as ocorrências. Ou seja decisões ruins sucessivas. Abandonei as estruturas dicionário pois o comportamento e funções para usá-las não foram bem assimiladas. Então optei por usar vetores bidimensionais. Uma dimensão guardaria o nome da face, e a outra acumularia as ocorrências.
Lembrando que são 2 cubos. O cubo 1 contém os números 0, 1, 2, 3, 4, 5 e o cubo 2 contém os números 0, 1, 2, 6 (que também ser para o dígito 9), 7 e 8. Então declarei dois vetores bidimensionais e 3 funções. Uma para contar os meses de 31 dias, uma para contar os meses de 30 dias e uma outra para contar o fevereiro. Essas três invocam uma função contadora que recebe um valor referente a cada dia específico e incrementa as faces com compõem o número. Os valores são acumulados e ao final tem o quantitativo.
Ideia pronto então ora de por a mão na massa, digitei o código e não consegui depurar adequadamente no Colab, precisava acompanhar os valores das variáveis para confirmar se estava fazendo certo e mesmo importando o pacote ipdb a experiência não foi boa. Abandonei então o Colab, baixei o VSCode e seus componentes e finalmente pude rodar e depurar o programa que entregou o resultado correto.
Com o resultado em mãos percebi que tinha deficiências para apresentar o resultado, a saída do print é bem simples, servindo mais para saber o resultado estava correto, daí comecei a pesquisa se havia uma forma mais elaborada de apresentar o resultado seja via uma imagem seja via integração HTML. Para esta última tem a opção do PyScript e/ou Flask, mas eu vou levar muito tempo para fazer isso.
Então para não ficar no básico, vamos apelar para boa e sólida matplotlib e fazer o gráfico das frequências de cada face. Só importar a biblioteca no VSCode, instalar e fazer as chamadas e voilà !
Mas eis a saída do print:
A face campeã é o "1" do cubo 1 e se o ano for bissexto há um empate entre o 1 e 2 do cubo 1.
Porém o resultado não é definitivo pois se pode forçar que uma determinada face seja mais utilizada nos dias em os dígitos 0, 1 e 2 são utilizados, pois ambos os cubos possuem esses dígitos. O código disponibilizado não contabiliza essa possibilidade.
O código está disponível no GitHub.
Nenhum comentário:
Postar um comentário