O calendário Discordian é um calendário alternativo usado pelos Discordians.
- O ano discordante tem 5 temporadas, cada uma com 73 dias de duração: Caos, Discórdia, Confusão, Burocracia e Consequências.
- A semana discordante tem 5 dias: Sweetmorn, Boomtime, Pungenday, Prickle-Prickle e Setting Orange. Todo ano começa com Sweetmorn (e no Caos).
- Cada f ano ourth (que happe n s para alinhar com Greg o rian salto sim r s), um extra d é inserido entre ay caos 59 e 60 caos chamado dia de St Tib . Fica fora da semana discordiana, o que significa que o dia seguinte ao dia do St. Tib será Laranja, no dia anterior a Prickle-Prickle.
- Os calendários gregoriano e discordiano se alinham; ambos começam no mesmo dia, que é chamado 1º de janeiro no calendário gregoriano, e Caos 1 no calendário discordiano.
- O primeiro ano de Nossa Senhora da Discórdia (YOLD 1) foi 1166 aC no calendário gregoriano, o que significa que este ano (2017 AD) é YOLD 3183.
- O calendário discordiano também tem feriados, mas eles não são importantes para esse desafio e você não deve produzi-los ou qualquer coisa sobre eles.
Escreva um programa ou função que produza ou retorne a data de hoje (no momento da execução):
Today is Boomtime, the 16th day of Confusion in the YOLD 3183
O formato é "Today is $day_of_the_week, the $ordinal day of $season in the YOLD $year"
, onde $ day_of_the_week é o dia da semana em maiúsculas (título), $ ordinal é o dia da temporada como ordinal (1, 2, 3, 4, ...), $ season é a capitalização temporada (título) e $ ano é o ano.
Se seu programa ou função for executado no dia de São Tib, ele deve gerar ou retornar "Today is St. Tib's Day in the YOLD $year"
.
Regras:
- Aplicam-se brechas padrão.
- Se o seu idioma de escolha não tem como obter a data atual, também pode levar a data gregoriana atual em qualquer formato razoável como entrada.
- Este é o código-golfe , o código mais curto (por idioma) vence.
- O espaço em branco à direita é bom.
- Problemas de capitalização.
- As chamadas
ddate
de qualquer forma são proibidas - É garantido que seu programa funcione de 3067 a 3265 YOLD (1901 a 2099 dC), fora desse intervalo, ele pode fornecer valores incorretos
Veja também:
- Malaclypse o mais novo. "Principia Discordia, ou como encontrei a deusa e o que fiz com ela quando a encontrei" . p. 00034
- ddate (1)
- Postagem na caixa de areia para quem pode vê-la
Respostas:
Mathematica,
403401 bytesVersão para contar o número de bytes: (espaços removidos e novas linhas - infelizmente esta parte é bastante difícil)
Versão a ler:
A resposta pode ser testado com data arbitrária, substituindo
DateString@"ISOOrdinalDate"
porDateString[{year,month,day},"ISOOrdinalDate"]
parayear
,month
eday
substituído por números.fonte
Python 2, 423 bytes
Versão curta:
Forma mais longa e mais legível:
Atualização: corrigida com a ajuda dos ótimos @Neil e @EriktheOutgolfer. Mas a resposta de @ Jonathan é muito menor.
fonte
y%4<1
funcionaria, mas acho que não1-y%4
.e
variável?Python 2 , 346 bytes
Nota: Este é um golfe (e correção) da resposta de jammon - eu originalmente pensei em enviar um comentário, mas mudei bastante no final (além dos sufixos do dia foram corrigidos).
Experimente online! ou veja algumas datas de teste codificadas .
fonte
e%10*(e/9!=1)
funcione?11st
,12st
e13st
(quandoe/9
é 1 seria multiplicar por zero eomin
escolheria que zero)JavaScript (ES6),
387380 bytesToma um parâmetro de data opcional. Ungolfed:
fonte
C #, 392 bytes
Versão completa / formatada:
fonte
Pitão , 295 bytes
Nota: contém binário, pode não ser seguro copiar e colar a partir daqui. A cópia e colagem do TIO deve funcionar.
Experimente online!
Você pode testar datas arbitrárias substituindo
.d2
no início por uma tupla de três (ano, mês, dia) assim:(2020 2 29)
.Este foi um pouco chato, já que Pyth não tem como obter o "dia do ano", então eu mesmo tive que calcular.
fonte