+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Pruébalo en línea!
⍳ 12 los enteros del uno al doce
⎕ ,¨ tomar entrada numérica y anteponer a cada uno de los doce números
{... }¨ en cada uno de los pares, aplique la función ...
cal⍵ obtener un calendario para ese año-mes
2 ↓ soltar dos filas (título y días)
⍉ transposición (para que podamos direccionar columnas en lugar de filas)
¯5 ↑ tome los últimos cinco (dos dígitos para cada viernes y sábado más un espacio)
3 ↑ tome los dos primeros (dos dígitos para el viernes más un espacio)
⍉ transponer (para que podamos leer el orden)
, enmarañar
⍎ ejecutar como expresión APL (da una lista de las fechas de los viernes)
13 ∊ ¿Trece es miembro de esa lista?
+/ suma los 12 booleanos
Usando el algoritmo de @ Wrzlprmft , podemos hacerlo sin bibliotecas para 53 bytes:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1 restar cero y uno
400 100 4 ∘.| tabla de resto de división para los dos años (a través) dividida por estos números (abajo)
0 ≠.= "producto" interno con 0, pero usando ≠ y = en lugar de +. ×
⊢ , anteponer el año del argumento no modificado
2 3 ¯1 +.× producto interno con estos números
14 | resto de división cuando se divide por catorce
'21232211321211' ⌷⍨ indexar en esta cadena