+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Experimente online!
⍳ 12 os inteiros de um a doze
⎕ ,¨ pegue a entrada numérica e preceda cada um dos doze números
{… }¨ Em cada um dos pares, aplique a função…
cal⍵ obter um calendário para esse ano-mês
2 ↓ soltar duas linhas (legenda e dias)
⍉ transpor (para que possamos endereçar colunas em vez de linhas)
¯5 ↑ pegue os cinco últimos (dois dígitos para cada sexta-feira e sábado, mais um espaço)
3 ↑ pegue os dois primeiros (dois dígitos para sexta-feira mais um espaço)
⍉ transpor (para obtermos a ordem de leitura)
, andar
⍎ executar como expressão APL (fornece uma lista das datas das sextas-feiras)
13 ∊ treze é um membro dessa lista?
+/ somar os 12 booleanos
Usando o algoritmo do @ Wrzlprmft , podemos fazê-lo sem bibliotecas de 53 bytes:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1 subtrair zero e um
400 100 4 ∘.| tabela restante de divisão para os dois anos (transversalmente) dividida por esses números (abaixo)
0 ≠.= "produto" interno com 0, mas usando ≠ e = em vez de +. ×
⊢ , preceder o ano do argumento não modificado
2 3 ¯1 +.× produto interno com esses números
14 | divisão restante quando dividido por catorze
'21232211321211' ⌷⍨ indexar nessa cadeia