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