Ao receber mês e ano no formato AAAAMM, gere a saída do mês civil correspondente para esse ano.
Por exemplo, a entrada 201312
deve gerar a seguinte saída:
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
O único truque é que NÃO há funções nativas de geração de calendário ... então clones do Linux, nenhuma função "cal" ... Muahahahahah!
PS: O calendário deve começar com segunda-feira como o dia mais à esquerda, para garantir que a saída seja como a função "cal", mas não seja como "cal", que tem domingo como o dia mais à esquerda. ..
O menor tamanho de código vence.
Respostas:
Python 2.7 - 152
Infelizmente, falha em setembro de 1752 . Concedido, ele importa todas as funções do calendário, mas usa apenas 1, e isso apenas retorna o dia de início da semana e o número de dias.
Código relativamente padrão, mas este é o meu bit favorito:
Ela imprime a nova linha usando a multiplicação de cadeias, se o número do dia atual e do dia da semana inicial for domingo (por exemplo, 7), pois o booleano é convertido em um número inteiro.
Isso salva um personagem no mais intuitivo
x%7==0
, usando-ox%7<1
.Saída de teste:
fonte
52.times
fazendo? Não é multiplicação?n.times{...}
é idêntico a(0...n).each{...}
ou0.upto(n-1){...}
. A multiplicação seria52 * ...
Rubi,
170168 caracteresCorreção de bug: não era necessário que a biblioteca necessária (+16) usasse a data juliana módulo 7 em vez do dia da semana atual diretamente (-3)
usasse / 100 e% 100 para analisar a data em vez da regex (-13). Retirado da resposta de LegoStormtroopr.
removeu os parênteses ao redor do argumento
rjust
eDate.new
(-2)fonte
"#{l[i].to_s.rjust 2} #{?\n if i%7>5}"
com"%2s %s"%[l[i],i%7>5?$/:""]
.Mathematica 203
Teste
fonte
SmileBASIC, 204 bytes
Uau, esse detector do ano bissexto é MUITO longo ...
fonte
JavaScript (239)
Resultado:
fonte
PHP,
153147 bytesdemolir
fonte
C (gcc) , 242 bytes
Não é a solução mais elegante, eu suspeito.
Entrada na forma de um número inteiro com os quatro dígitos altos formando o ano e os dois dígitos baixos o mês.
Experimente online!
fonte
(13*m+4)/5+y%X*5/4-7*y/X/4
vez de1+(26*m-2)/10-2*y/X+5*(y%X)/4+y/X/4