+/{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