Alguém deu à minha esposa um calendário decorativo composto por quatro cubos. Aqui está mostrando a data de hoje (a partir da publicação deste desafio) na frente:
Quando o vi pela primeira vez, olhei pelo ângulo errado (diretamente acima) e não consegui descobrir por que ele forneceu essa informação:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Seu trabalho é replicar meu erro para qualquer data em 2019.
Desafio
Escreva um programa ou função que tenha qualquer data a partir de 2019 e produza o que aparece na parte superior de todos os cubos quando essa data é exibida voltada para frente na frente do calendário.
Aqui estão todos os seis lados para todos os cubos. Para exibir um 6
você apenas vira de 9
cabeça para baixo. O 0
é verticalmente simétrico, então de 0
cabeça para baixo ainda 0
. Pode haver mais de uma resposta correta para algumas datas (por exemplo, qualquer 11 de cada mês terá mais de uma maneira de usar os cubos, e a 0
coisa) para que você possa produzir qualquer resposta correta.
Regras
- Falhas padrão proibidas.
- O formato de entrada / saída é flexível.
- A saída precisa estar em ordem por cubo, mas não dentro de um cubo. O pedido deve ser o cubo do mês primeiro, depois os dois cubos numéricos, seguidos pelo cubo do dia da semana. Mas quando um cubo tem dois elementos no topo, esses dois elementos podem estar em qualquer ordem.
- Você pode substituir
January
paraDecember
0-11 ou 1-12, se quiser. - Você pode substituir os dias da semana por 0-6 ou 1-7, se quiser, e pode começar a semana com um
Sunday
ou outroMonday
(mas não pode começar a semana em nenhum outro dia - esse é o PPGC, não de algum tipo da cidade louca.) - Este é o código-colf . O menor número de bytes para cada idioma vence.
- Explicações encorajadas.
Casos de teste
(Tue) 2019-01-29 [[ "July", "August" ], [3], [7], [ "Thursday", "Wednesday" ]]
[[ "August", "July" ], [3], [7], [ "Wednesday", "Thursday" ]]
etc. since the order within each cube doesn't matter.
(Thu) 2019-07-11 [[ "May", "June" ], [3], [8], [ "Saturday", "Friday" ]]
[[ "May", "June" ], [8], [3], [ "Saturday", "Friday" ]]
since the two 1 cubes could be either way.
(Sun) 2019-10-27 [[ "January", "February" ], [3], [6], [ "Friday", "Saturday" ]]
(Wed) 2019-05-01 [[ "March", "April" ], [8], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [6], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [9], [3], [ "Monday", "Tuesday" ]]
since the 0 cube could have either the 8 side or the 6 side facing up, and the 6 could also be considered a 9.
(Sat) 2019-08-24 [[ "February", "January" ], [8], [5], [ "Sunday" ]]
27
em2019-10-27
deve ir para36
, não32
.Respostas:
C (glibc) ,
327319286 bytes(Algumas quebras de linha foram adicionadas para maior clareza)
f
leva um mês (1 a 12) e um dia (1 a 31). Imprime em stdout. Experimente online!Casos de teste:
Ungolfed
Cubos de dígitos
Estas são as possibilidades para os dígitos:
O seguinte mapeamento parece ser a melhor opção para o golfe:
Cheats
strftime
deve ser chamado com astruct tm
como entrada. Em vez disso, declaroint S[9]
e usoS[4]
comotm_mon
eS[6]
comotm_wday
. Isso funciona se a biblioteca C usar a mesma lista de membros struct que o padrão ISO.s[99]
é usado para armazenar várias stringsstrftime
, mas torná-lo umaint
matriz economiza alguns bytes na indexação.fonte
JavaScript (ES6), 142 bytes
(year, month, day0, day1)
(month0, month1, day0, day1, weekDay0, weekDay1)
Experimente online!
fonte