+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Essayez-le en ligne!
⍳ 12 les entiers un à douze
⎕ ,¨ prendre une entrée numérique et ajouter à chacun des douze nombres
{… }¨ Sur chacune des paires, appliquez la fonction…
cal⍵ obtenir un calendrier pour cette année-mois
2 ↓ déposer deux lignes (légende et jours)
⍉ transposer (afin que nous puissions adresser des colonnes au lieu de lignes)
¯5 ↑ prendre les cinq derniers (deux chiffres pour chacun des vendredis et samedis plus un espace)
3 ↑ prendre les deux premiers (deux chiffres pour vendredi plus un espace)
⍉ transposer (donc on obtient l'ordre de lecture)
, effilochage
⍎ exécuter comme expression APL (donne la liste des dates du vendredi)
13 ∊ treize est-il membre de cette liste?
+/ additionner les 12 booléens
En utilisant l'algorithme de @ Wrzlprmft , nous pouvons le faire sans bibliothèques pour 53 octets:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1 soustraire zéro et un
400 100 4 ∘.| tableau des divisions restantes pour les deux années (dans l'ensemble) divisé par ces chiffres (vers le bas)
0 ≠.= "produit" intérieur avec 0, mais en utilisant ≠ et = au lieu de +. ×
⊢ , ajouter l'année de l'argument non modifié
2 3 ¯1 +.× produit intérieur avec ces chiffres
14 | reste de division divisé par quatorze
'21232211321211' ⌷⍨ indexer dans cette chaîne