Escreva uma função ou programa que aceite uma data (como uma string no YYYY-MM-DD
formato) como entrada e retorne um valor verdadeiro se essa data for "alfabética" e um valor falsey se não for.
Uma data alfabética é uma data cujo mês, dia e ano estão em ordem alfabética quando expressos como uma sequência de caracteres (e quando considerados especificamente na ordem M - D - Y). Por exemplo, 26 de setembro de 2018 é uma data alfabética:
September 26th 2018 -> September twenty-sixth two thousand eighteen
September
Twenty-sixth
Two thousand eighteen
Outra maneira de pensar nesse desafio: "os elementos de uma determinada data são lexicamente classificados?"
Notas:
- 2018 é representado como "dois mil e dezoito", não "vinte e dezoito" ou "dois zero um oito". Por outro exemplo, o ano de 1456 seria representado como "mil quatrocentos e cinquenta e seis", não "catorze e cinquenta e seis".
- 26 é representado como "vigésimo sexto", não "vinte e seis".
- Cada elemento da data é considerado como um todo. É por isso que 2018 não falha automaticamente, embora o "e" nos dezoito venha antes do "t" em dois.
As seguintes datas não são alfabéticas:
- 2 de setembro de 2018 (o "segundo" deve estar à frente de "setembro")
- 30 de abril de 4000 ("quatro mil" deve estar à frente de "trigésimo")
Regras adicionais:
- Você receberá a data como uma string, formatada como
YYYY-MM-DD
. O ano sempre terá quatro dígitos e o mês e o dia sempre terão dois dígitos cada. O preenchimento zero não é representado na conversão de cadeia (por exemplo, '2000-01-01' é 'primeiro de janeiro de dois mil' como seria de esperar). - Você pode presumir que as datas sempre serão válidas (no dia 30 de fevereiro, no dia 1 de Smarch) e que o valor do ano será positivo (sem datas BC), mas a data poderá estar distante no futuro ("nos
doisanos nove mil..."). - Você deve retornar um valor verdadeiro ou falso, não necessariamente um booleano
True
ouFalse
. Se você fizer isso em JavaScript e querem voltar'0'
e0
isso é bom. Claro, se você quiser retornar um booleano, sinta-se à vontade. - As brechas padrão são proibidas.
- Isto é
code-golf
Mais exemplos de datas alfabéticas
- 2066-01-02 (segundo de janeiro de dois mil e sessenta e seis)
- 1000-04-08 (oitavo de abril, mil)
- 6000-08-01 (primeiro de agosto, seis mil)
Mais exemplos de datas não alfabéticas
- 1066-01-02 (segundo de janeiro, mil e sessenta e seis)
- 1000-04-07 (sétimo de abril, mil)
- 8000-08-01 (oito de agosto, oito mil)