Hoje é o Dia da Pessoa Programadora. Por que? Por ser o ducentésimo quinquagésimo sexto (256º) dia do ano. E claro que o primeiro dia do ano é o dia 1!
Por que 256? 256 é 2 elevado à oitava potência. Computadores trabalham com números binários. Logo, faz sentido que o Dia da Pessoa Programadora seja o dia do ano em que temos a maior quantidade de zeros num número binário no formato 1 e vários zeros: 100000000. Para completar, em hexadecimal, 256 é 100.
Fiz um pequeno programa em Elixir para comemorar. Veja abaixo:
defmodule ProgrammersDay do
def show_message_if_today_is_programmers_day() do
show_message_if_today_is_programmers_day(is_it_today?())
end
defp show_message_if_today_is_programmers_day(true) do
IO.puts("Happy Programmers' Day!")
end
defp show_message_if_today_is_programmers_day(_) do
IO.puts("Today is not Programmers' Day!")
end
defp is_it_today?() do
Date.day_of_year(Date.utc_today()) == 256
end
end
ProgrammersDay.show_message_if_today_is_programmers_day()
Basta salvar o código acima num arquivo chamado programmersday.exs
e depois, no terminal, chamar.
> elixir programmersday.exs
Happy Programmers' Day!
Se o dia em que você estiver executando o código for o Dia da Pessoa Programadora, o programa irá escrever na tela, como acima Happy Programmers' Day!
, ou seja, Feliz Dia da Pessoa Programadora
. Se não for, o programa vai escrever que não é dia da pessoa programadora.
O que há de interessante no programa acima?
-
Date.utc_today/0
é uma função (daquelas que não é função matemática) e que retorna o dia de hoje. Exercício: executeDate.utc_today()
noiex
e poste nos comentários o que ela retorna. -
Date.day_of_year/1
retorna o índice (começando em 1 e indo no máximo até 366, em caso de último dia de ano bissexto) de uma data no seu ano. Por exemplo,Date.day_of_year/1
aplicado a~D[1050-03-12]
(que representa 12 de março do ano 1050 retorna que 12/03/1050 foi o 75º dia de 1050:
iex> Date.day_of_year(~D[1050-03-12])
71
Como ano passado foi ano bissexto, temos que:
iex> Date.day_of_year(~D[2020-12-31])
366
O restante não tem muita novidade, certo? Temos duas funções chamadas show_message_if_today_is_programmers_day
: show_message_if_today_is_programmers_day/0
e show_message_if_today_is_programmers_day/1
. A primeira é pública e a segunda é privada.
Você consegue escrever uma versão mais interessante deste programa? Ou uma versão diferente, usando processos? Poste nos comentários!
Top comments (1)
Adorei 😊