+/{13∊⍎,⍉3↑¯5↑⍉2↓cal⍵}¨⎕,¨⍳12
Provalo online!
⍳ 12
gli interi da uno a dodici
⎕ ,¨
accetta input numerici e antepone a ciascuno dei dodici numeri
{
... }¨
su ciascuna delle coppie, applica la funzione ...
cal⍵
ottenere un calendario per quell'anno-mese
2 ↓
rilasciare due righe (didascalia e giorni)
⍉
trasporre (in modo che possiamo indirizzare le colonne anziché le righe)
¯5 ↑
prendi le ultime cinque (due cifre per ciascuno di venerdì e sabato più uno spazio)
3 ↑
prendi le prime due (due cifre per venerdì più uno spazio)
⍉
trasporre (quindi otteniamo l'ordine di lettura)
,
sfilacciarsi
⍎
eseguire come espressione APL (fornisce un elenco delle date del venerdì)
13 ∊
tredici è un membro di quella lista?
+/
sommare i 12 booleani
Usando l'algoritmo di @ Wrzlprmft , possiamo farlo senza librerie per 53 byte:
'21232211321211'⊃⍨14|2 3 ¯1+.×⊢,0≠.=400 100 4∘.|-∘0 1
-∘0 1
sottrarre zero e uno
400 100 4 ∘.|
tabella restante divisione per i due anni (attraverso) divisa per questi numeri (giù)
0 ≠.=
"prodotto" interno con 0, ma usando ≠ e = invece di +. ×
⊢ ,
anteponi l'anno dell'argomento non modificato
2 3 ¯1 +.×
prodotto interno con questi numeri
14 |
resto della divisione quando diviso per quattordici
'21232211321211' ⌷⍨
indice in questa stringa